串口通信实战排错:乱码、收不到数据、波特率对不上怎么办

JUMU实名认证 发表于 2026-08-28 20:08 | 显示全部楼层 | 复制链接分享      上一主题  翻页  下一主题
串口是单片机开发中使用频率最高的通信方式,也是问题最容易出在“看起来都对了却就是不通”的地方。本文把串口调试中最常见的几类故障整理出来,逐一给出判断方法和解决办法。

乱码是最经典的串口问题。出现乱码时先不要怀疑代码,优先检查三件事:第一是波特率是否一致,单片机端和电脑串口助手的波特率必须严格相同;第二是晶振频率,很多51单片机的延时和波特率计算依赖晶振频率,12MHz和11.0592MHz产生的误差完全不同;第三是接线是否接反,TX要接RX,RX要接TX,共地也必不可少。

收不到任何数据时,先做“自发自收”测试:把单片机串口的TX和RX短接,用串口助手发送数据,如果能收到自己发的数据说明串口收发通路正常,问题出在外围;如果连自发自收都不通,重点检查串口初始化代码、IO复用配置和硬件连接。STM32使用USART时还要确认时钟使能和GPIO复用模式配置是否正确。

数据收到一半或丢字节,通常是缓冲溢出或处理不及时。中断接收时务必将接收到的数据尽快移出缓冲区,不要在中断里做耗时操作。如果数据量大,可以采用环形缓冲区加主循环轮询处理的模式,这也是工程上最稳妥的串口数据接收方案。

数据格式错误则要检查数据位、停止位和校验位配置。两端这些参数必须完全一致,一位之差都可能造成整帧数据解析失败。涉及中文或二进制数据时,还要注意串口助手的字符编码设置,ASCII与HEX显示模式不同,容易产生误判。

另外提醒一个新手常忽略的点:USB转串口模块的驱动是否安装正确。很多“串口打不开”的故障其实是驱动问题,设备管理器里能看到正确的COM口编号才能继续往下排查。用万用表量一下TXD和RXD引脚电平,也能快速判断单片机是否真的在输出数据。

总结一下:串口调试遵循“先硬件后软件、先简单后复杂”的原则,从自发自收、波特率、接线、共地这些最基础项查起,再用示波器或逻辑分析仪观察波形。把这套排查顺序记牢,串口问题基本都能在半小时内定位。

  距米网  

找到您想要的设计

工程师、学生在线交流学习平台
关注我们

手机版- JMCAD苏ICP备18040927号-1

©2017-2026 常州居居米智能技术有限公司 苏公网安备32041102000587号