你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

USART串口奇偶校验通讯不上

[复制链接]
scfor123456 提问时间:2019-11-13 19:33 /
软件中配置为8-N-1,8-N-2通讯格式,可成功通讯,但选择为8-E-1,8-O-1都通讯不了,仿真看USART1-CR1的PCE和PS位都能对上,这是哪里的问题?或者说配置PCE位需要注意什么?
收藏 评论12 发布时间:2019-11-13 19:33

举报

12个回答
mylovemcu 回答时间:2019-11-14 08:13:43
选择奇偶校验需要用9的数据位  切记切记

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

scfor123456 回答时间:2019-11-14 09:01:12
mylovemcu 发表于 2019-11-14 08:13
选择奇偶校验需要用9的数据位  切记切记

你的意思是USART需要配置为9位数据位,奇偶校验位;如果不需要奇偶校验位,则改为8位数据位,这样理解对吗?
mylovemcu 回答时间:2019-11-14 09:07:23
scfor123456 发表于 2019-11-14 09:01
你的意思是USART需要配置为9位数据位,奇偶校验位;如果不需要奇偶校验位,则改为8位数据位,这样理解对 ...

是的
sky_han 回答时间:2019-11-14 09:07:36
当奇偶校验通信时,下面寄存器要设置成9 位数据长度,寄存器M值为1.因为通信的时候会发送8 bit data+1 bit 奇偶校验位,所以是9位长度。

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

慎微 回答时间:2019-11-14 09:13:02
首先,设置接收、发送的方式都相同,如TX,8-E-1,RX 也要 8-E-1
其次,检查是否 线过长【搞短线试下】,或有干扰源【加屏蔽】,以致奇偶校验不行。
scfor123456 回答时间:2019-11-14 11:49:54
改了数据位9位,不行。CR1的设置也是对的,M0=1,M1=0,PCE=1。我上位机用的串口调试助手,在其他机器上奇偶校验是可以用的。
七哥 回答时间:2019-11-14 13:05:06
用示波器看一下波形吧。
看看你板子发送时的波形,与标准串口发送的波形,在发送相同数据的时候有什么不一样。
scfor123456 回答时间:2019-11-14 14:28:21
问题找到了,数据改为9位后,RDR寄存器的数据只能读取低8位,第9位是校验位。ST的USART设计真奇怪,谁关心RDR的校验位是什么,完全可以放到其他地方不要占用接收数据寄存器位。
mylovemcu 回答时间:2019-11-14 15:13:12
scfor123456 发表于 2019-11-14 14:28
问题找到了,数据改为9位后,RDR寄存器的数据只能读取低8位,第9位是校验位。ST的USART设计真奇怪,谁关心R ...

改成9位以后,读数据还是正常读就可以了,这块感觉设计的确实不好,我第一次碰上也是折腾了好久

你是用的寄存器???没有用库函数读吗???
scfor123456 回答时间:2019-11-14 16:56:36
mylovemcu 发表于 2019-11-14 15:13
改成9位以后,读数据还是正常读就可以了,这块感觉设计的确实不好,我第一次碰上也是折腾了好久

你是用的 ...

我全部是自己写的函数,RDR在有校验的时候,数据在低8位,我是按16位读的,所以出现错误,按8位读就是正确的数据。
蓝夜 回答时间:2019-11-15 08:58:22
scfor123456 发表于 2019-11-14 14:28
问题找到了,数据改为9位后,RDR寄存器的数据只能读取低8位,第9位是校验位。ST的USART设计真奇怪,谁关心R ...

你的意思是 校验位还占用一个数据位?不应该这样啊,一般说的几位数据就是说的有效数据 不包括校验位
scfor123456 回答时间:2019-11-15 09:20:31
疾风 发表于 2019-11-15 08:58
你的意思是 校验位还占用一个数据位?不应该这样啊,一般说的几位数据就是说的有效数据 不包括校验位 ...

是的,资料上也是这么写的。
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版