打印
[STM32F0]

怀疑STM32F030串口自动波特率功能有硬件BUG。

[复制链接]
3931|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
最近接触F030芯片,用了一个F4P6,算是最便宜的了,而且功能也不差,真是物美价廉,量也很足。
而且刚发现,这个芯片的USART不但支持485自动方向控制,还支持自动波特率识别,真是赚大了。
芯片最高支持48MHz时钟,串口如果使用16倍超采样,最高波特率是3Mbps,如果使用8位超采样,最高波特率达到6Mbps,还是很不错的嘛,就喜欢这种超高波特率。
波特率自动识别原理也很简单,就是在接收到第一个字节的时候,测量1位或者2位数据的时长,然后再计算出波特率,当然,对第一个字节有一些要求,一般我们做串口通讯,加包格式,如果有前导起始字符,比如0x55,或者'%',都是符合这个格式的。
更可贵的是,这个第一个不知道波特率的字节,并不会丢失,而是会正确得接收,加10分。
但是真正测试这个自动波特率的时候,发现了问题了。
如果设置16倍超采样,自动计算出的波特率是正确的,虽然略有误差,但是能够满足通讯的要求。
如果设置8倍超采样,问题就来了,自动波特率算出的BRR结果还是按照16倍超采样算出来的,结果波特率完全就不对了,基本上变成原来的2倍。
虽然可以使用一些奇技淫巧,在8倍超采样的时候,自动波特率识**的波特率数值自动改成正确的,但是应该正确接收的第一个字节已经丢失了,造成无法挽回的遗憾。
另外,如果波特率超过16位超采样支持的最高波特率,那么自动波特率识别又识别不到。
这样就造成那个8位超采样和自动波特率识别没法匹配,芯片支持的超高波特率功能也就成了**肋了。

估计这个问题,应该是硬件设计时候的BUG吧。

沙发
wahahaheihei| | 2018-7-1 22:21 | 只看该作者
这个还没用过,都是指定波特率

使用特权

评论回复
板凳
734774645| | 2018-7-2 16:11 | 只看该作者
为何要用这个自动波特率啊。一般用个默认的就行了。

使用特权

评论回复
地板
aizaixiyuanqian| | 2018-7-2 21:52 | 只看该作者
确定真的,可以发邮箱给ST了,能给点辛苦费

使用特权

评论回复
5
风云ljh| | 2018-7-7 21:32 | 只看该作者
我目前用的还可以,没有发现什么问题

使用特权

评论回复
6
xinhuam| | 2018-7-8 18:32 | 只看该作者
标题好吓人

使用特权

评论回复
7
liu1028tao| | 2018-8-2 12:13 | 只看该作者
库的原因更多 F030的 ADC多通道采集了解下

使用特权

评论回复
8
QuakeGod|  楼主 | 2018-8-4 17:02 | 只看该作者
liu1028tao 发表于 2018-8-2 12:13
库的原因更多 F030的 ADC多通道采集了解下

这个自动波特率的功能是硬件实现的,不是库实现的。

使用特权

评论回复
9
dzy1996t| | 2019-11-1 09:59 | 只看该作者
看看手册

SharedScreenshot.jpg (417.01 KB )

SharedScreenshot.jpg

使用特权

评论回复
10
xiaofei558008| | 2020-3-16 15:08 | 只看该作者



把 over run disable 后看看



使用特权

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

本版积分规则

个人签名:QQ:12902840 QQ群,8875908

27

主题

1881

帖子

18

粉丝