凡亿教育-小至
凡事用心,一起进步
打开APP
公司名片
凡亿专栏 | 串口通信时灵时不灵,波特率调低了也一样?
串口通信时灵时不灵,波特率调低了也一样?

波特率从115200降到9600,乱码依旧,丢包照旧。别再调波特率了,病根在别处。

2.png

1、真正的元凶:时钟在漂移

MCU用内部RC振荡器时,温度一变、电压一抖,频率就跟着飘。

波特率由时钟分频而来,时钟不稳,波特率就不准。降波特率只是降低了数据量,并没有消除误差。

实测数据:STM32内部RC时钟的波特率误差可超过3%,而超过3%基本不可用。

解决办法:换外部高精度晶振,把误差压到1%以内。

2、第二杀手:共地没接好

很多人接线只接了TX、RX,忘了GND。

没有共地,双方的"0电平"基准不一致,信号叠加共模噪声,接收端直接误判。

表现很典型:接线时好时坏,换根线就正常,晃动线缆就断连。

一根地线,成本几分钱,效果立竿见影。

3、隐形杀手:中断被抢占

波特率低了,数据量小了,但中断处理不过来,照样丢包。

RXNE中断里做了太多事,或者被高优先级中断抢占,数据来了没人收,溢出丢弃。

解法:中断里只存数据,处理逻辑放主循环;或直接上DMA,让硬件接管。


本文凡亿教育原创文章,转载请注明来源!

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表凡亿课堂立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。
相关阅读
进入分区查看更多精彩内容>
精彩评论

暂无评论