USART串口奇偶校验通讯不上
软件中配置为8-N-1,8-N-2通讯格式,可成功通讯,但选择为8-E-1,8-O-1都通讯不了,仿真看USART1-CR1的PCE和PS位都能对上,这是哪里的问题?或者说配置PCE位需要注意什么?选择奇偶校验需要用9的数据位切记切记 mylovemcu 发表于 2019-11-14 08:13
选择奇偶校验需要用9的数据位切记切记
你的意思是USART需要配置为9位数据位,奇偶校验位;如果不需要奇偶校验位,则改为8位数据位,这样理解对吗? scfor123456 发表于 2019-11-14 09:01
你的意思是USART需要配置为9位数据位,奇偶校验位;如果不需要奇偶校验位,则改为8位数据位,这样理解对 ...
是的 当奇偶校验通信时,下面寄存器要设置成9 位数据长度,寄存器M值为1.因为通信的时候会发送8 bit data+1 bit 奇偶校验位,所以是9位长度。 首先,设置接收、发送的方式都相同,如TX,8-E-1,RX 也要 8-E-1
其次,检查是否 线过长【搞短线试下】,或有干扰源【加屏蔽】,以致奇偶校验不行。 改了数据位9位,不行。CR1的设置也是对的,M0=1,M1=0,PCE=1。我上位机用的串口调试助手,在其他机器上奇偶校验是可以用的。 用示波器看一下波形吧。
看看你板子发送时的波形,与标准串口发送的波形,在发送相同数据的时候有什么不一样。 问题找到了,数据改为9位后,RDR寄存器的数据只能读取低8位,第9位是校验位。ST的USART设计真奇怪,谁关心RDR的校验位是什么,完全可以放到其他地方不要占用接收数据寄存器位。 scfor123456 发表于 2019-11-14 14:28
问题找到了,数据改为9位后,RDR寄存器的数据只能读取低8位,第9位是校验位。ST的USART设计真奇怪,谁关心R ...
改成9位以后,读数据还是正常读就可以了,这块感觉设计的确实不好,我第一次碰上也是折腾了好久
你是用的寄存器???没有用库函数读吗???
页:
[1]
2