OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 277|回复: 2

关于串口校验位与数据位

[复制链接]

18

主题

120

帖子

0

精华

高级会员

Rank: 4

积分
684
金钱
684
注册时间
2014-8-14
在线时间
214 小时
发表于 2025-8-22 10:01:57 | 显示全部楼层 |阅读模式
大多数时候使用串口,都是配置为波特率+8N1,想起之前在使用正泰电表的时候,规定总线是偶校验,还是波特率+8E1,此时配置串口初始化部分校验方式为USART_Parity_Even,然后死活不能通信,后来问了下AI,需要吧数据位设置为USART_WordLength_9b,也就是波特率+9E1才行,尝试之后发现,通信确实正常了。
-----------------------------------------------------------------------
那么按照我自己的逻辑来说,校验位不应该和数据位混在一起,我的数据还是8bit的,为什么要设置为9bit呢,然后我在上位机上测试调试串口,发现MCU侧是115200+9E1,上位机设置为115200+8E1,才能正常通信,为什么双方数据位不一样,但可以正常通信,到底谁是正确的。
-----------------------------------------------------------------------
然后我查阅了STM32F1中文手册,以及问了AI,AI给出结果大概意思是,MCU的数据位代表的是用户数据位+可能的校验位,以下是DS的回答
2.jpg
-----------------------------------------------------------------------
然后我在中文手册中找到这张表,从USART帧来看,的确验证了AI说的用户数据位+可能的校验位来组成串口的数据位
1.jpg
-----------------------------------------------------------------------
于是我将串口配置为115200+8E1,上位机配置为115200+7E1,发送ASCII可显示字符,上位机是可以正常显示的,验证猜想:MCU侧其实是7位数据(ASCII可显示字符只需要7位就行)+1位校验,上位机其实没错,只是通过一种合乎逻辑的方式显示给人看,的确是7位数据,校验位是单独的
-----------------------------------------------------------------------
总结来看,MCU侧串口配置的数据位是用户数据位+可能的校验位,而上位机才是合乎人正常逻辑的配置方式。
最后,看到此贴的朋友,是否有更好的见解
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

29

主题

138

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1318
金钱
1318
注册时间
2013-1-11
在线时间
455 小时
发表于 2025-8-25 18:40:03 | 显示全部楼层
STM32 如果有校验位,数据位就是9位。瑞萨的单片机好像校验位不算到数据位里。所以不同品牌的不一样,还是要看手册。
回复 支持 反对

使用道具 举报

18

主题

120

帖子

0

精华

高级会员

Rank: 4

积分
684
金钱
684
注册时间
2014-8-14
在线时间
214 小时
 楼主| 发表于 7 天前 | 显示全部楼层
aozhouduwang 发表于 2025-8-25 18:40
STM32 如果有校验位,数据位就是9位。瑞萨的单片机好像校验位不算到数据位里。所以不同品牌的不一样,还是 ...

好的,谢谢提醒
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-9-2 22:03

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表