打印

103的串口初始化不能有校验位和停止位吗

[复制链接]
2955|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
bigfacecat|  楼主 | 2010-9-10 09:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
103默认串口设置是1个停止位,无校验,8数据位
我改成2个停止位,或者奇校验/偶校验,PC也按照这个参数设置,但是PC死活收到的不是正确数据

比如103发0x31,PC收到的是0x91
沙发
IJK| | 2010-9-10 09:49 | 只看该作者
STM32F103当然支持校验位,也支持2个停止位。但是印象里它不支持2个停止位、同时奇校验/偶校验;设置2个停止位时,不支持校验;印象里这种做法跟PC是一致的。

使用特权

评论回复
板凳
bigfacecat|  楼主 | 2010-9-10 10:11 | 只看该作者
我设置了1个停止位,EVEN校验,103发送“12345”,PC收到“\xb1\xd9\x26\x5b\fe”

这个你们可以试下
可能是103芯片的bug

使用特权

评论回复
地板
香水城| | 2010-9-10 10:19 | 只看该作者
我设置了1个停止位,EVEN校验,103发送“12345”,PC收到“\xb1\xd9\x26\x5b\fe”

这个你们可以试下
可能是103芯片的bug
bigfacecat 发表于 2010-9-10 10:11


楼主是否认为没有人试过,这样的Bug居然让你碰上了。你能贴出示波器的波形证明这是一个Bug吗?

使用特权

评论回复
5
bigfacecat|  楼主 | 2010-9-10 13:57 | 只看该作者
示波器看了是没有校验位的

而且原因我也找到了,是对103串口理解上的问题
103串口设置为8bit宽度的时候,如果此时设置校验位,实际上是7bit数据位+1bit校验位的格式,也就是说103的数据位宽度的含义是数据位+校验位的数据宽度,如果没有设置校验位,那么实际的数据位就是8

所以我把PC的串口数据位设置为7,结果就正确了。

使用特权

评论回复
6
香水城| | 2010-9-11 11:38 | 只看该作者
如果PC端要求8个数据位+一个奇偶检验位,在STM32端要设置为9位数据位再使能奇偶检验。

配置STM32的数据位,需要算上奇偶检验位。

使用特权

评论回复
7
yhnu1214| | 2014-7-8 15:40 | 只看该作者
香水城 发表于 2010-9-11 11:38
如果PC端要求8个数据位+一个奇偶检验位,在STM32端要设置为9位数据位再使能奇偶检验。

配置STM32的数据位 ...

香主真给力,我也遇到这个问题了,按照你的回答,解决了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

46

帖子

0

粉丝