stm32f407 串口6波特率为1200时,波形完全不对

2019-03-23 17:30发布

哥们用的是 stm32f407ZGT6.

就是发现串口6(以串口1开始算,就是 uart5)有点问题。

前期一直用2400的波特率好好的。



后来一个地方要用1200了,发现死活通信不上,查了一回发现乖乖,这个口子发的都是乱码。

各种怀疑电路出问题,换电阻啥的,都不行。



最后直接上示波器,发现问题了。

2400的波特率的时候,虽然波形不是太漂亮,但基本正确,就是0.5ms一位的样子。

一旦到了1200,呵呵,那波形我都不认识。



问题是,同样是这个板子,串口5 1200和 2400的波形却很正常,当然通信也很正常。



曾经也怀疑过是不是因为它们的时钟源不一致,导致波特率的误差有点不对劲,才出现问题?

于是看了一下手册,但发现手册上的看不太懂。



因为我们是 外部8M晶振,内部PLL倍频成 192M。



我看了一下,uart5挂在84M上,uart4挂在42M上,如果这样看,看表格——其实所有表格,但凡有1200bps的,都表示 波特率误差几乎为0.



所以我也不清楚,为啥这个地方一旦用了这个串口,在1200时,波形就这么诡异。



有经验的哥们都来说说~
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
14条回答
zqjqq88
1楼-- · 2019-03-24 19:22
辛昕 发表于 2015-5-6 15:43
没看到底层,表示不清楚;

好歹看看时钟从哪来的吧~
lyzhangxiang
2楼-- · 2019-03-24 23:00
 精彩回答 2  元偷偷看……
辛昕
3楼-- · 2019-03-24 23:19
额,楼上的各位亲,感谢关注。
这事情,我觉得就是 lcotfj说的那样。
顺带上个图,有图有真相。

我觉得唯一的办法是把那个串口的时钟分频,否则别无他法。
不过已经封库了,他们爱改不改,我不管~~

QQ图片20150507094410.png
辛昕
4楼-- · 2019-03-25 05:14
zqjqq88 发表于 2015-5-6 15:36
这个和主频木关系吧,串口的时钟源用的难道是系统的而不是8M的?

stm32的时钟系统非常强大也非常复杂。

这就是它最屌的地方。


辛昕
5楼-- · 2019-03-25 09:05
 精彩回答 2  元偷偷看……
那颗星星
6楼-- · 2019-03-25 10:57
本人表示,如果使用外部晶振,来解决传输问题,把外部晶振抬高,到24MHz,将倍频降低,因为温度会导致倍频电路频率出现柔化,到了该下降的脉冲,降不下来,最主要的是,单片机集成度是个麻烦,把频率调谐电路设计进去是最大的误区!当芯片发热,频率监视电路变性,产生很小的误差,这个误差却酿成错误;举个例子,有人牛逼哄哄的相信STC单片机的内置起振电路完全可以胜任我们的设计需要,然后出了一堆的问题开始骂STC,STC在10度的时候,跟在25度的时候,内置起振电路频率差了一倍,为什么有人这么热衷于集成?楼主的核心如果开到10MB假设能开到,我估计当场崩溃了...内置调谐电路是不精确的,因为温度变化导致了这一问题!尽量少依赖内部震动!

一周热门 更多>