[STM32] 串口通信失败的故障诊断方法与解决方案

[复制链接]
2804|1
wziyi 发表于 2025-9-3 19:20 | 显示全部楼层 |阅读模式
, , , ,
本帖最后由 wziyi 于 2025-9-6 13:27 编辑

@21小跑堂 单片机串口通信失败是每个嵌入式开发人员都经历过的问题,遇到这种情况该如何下手呢,常规套路都试了还没搞出来咋办。。。。。。结合本人多年一线工作经验来总结一下,不足之处欢迎评论区留言。
1,电脑硬件
有些笔记本电脑的主板设计比较特殊,某个USB接口会存在供电不足的情况,当你的电路板依靠USB-TTL串口供电时就会出现电压偏低的现象。此时单片机无法正常运行自然没有串口连接了。还有些廉价的USB拓展坞也会存在兼容性问题,USB- TTL插上以后可以被识别,工作指示灯也正常,就是不能通信。排除方案就是换台电脑试一试。
2,电脑软件
串口小工具网上一搜一堆,这些大多数是windows xp 时代由网友开发的,早已不更新。它们运行在如今的新电脑上很容易出现兼容性问题,可能软件窗口控件一切看起来都正常的,结果接受不了数据或者出现乱码,丢数据现象。排除方案使用sscom小工具,兼容性强且稳定可靠。
3,串口助手
网购的串口助手大多基于cp2102和ch340两种方案,价格便宜也容易出问题。有时候直接把电脑干蓝屏。串口助手在频繁的接触和断开连接线时会卡死或者烧了,电脑上sscom可能会卡死也可能不报任何错误,结果也是数据收发不过来。还有一种是用编程器自带的串口,它是USB模拟的,可靠性差。也会有类似情况。排除方案是换个串口助手。本人是自己购买ch343芯片,自制串口助手。超级稳定可靠,秒杀淘宝货。一套设备用了五年还毫发无伤。
4,连接线
一种是线头上镀锡,镀锡表面氧化后导致接触不良。还有一种是剥线皮时没到位,线头表面残留有超薄的绝缘材料导致接触不良。这两条属于少见但让你抓脑袋的问题原因。
5,单片机硬件
先查查板子的供电情况。再看看晶振波形是不是正常的。有一种诡异故障是晶振有输出但占空比异常,单片机在此种情况下表现千奇百怪的。再用万用表量uart 引脚对地电阻和二极管特性大概0.5到0.6v左右,排除引脚损坏和焊接不可靠的因素。某型国产单片机IP核设计不合理,在连续发送大量数据时会随机或者规律插入间隔位。涉及到敏感问题了不好多言。排除方案是让单片机点亮一个LED作为工作指示灯,假如LED正常亮灭,证明单片机没问题。
6,单片机软件
检查一下时钟外设,波特率,校验位等配置参数。stm32有小数波特率发生器加上hal库简化了uart参数的计算与配置所以时钟出问题概率小。容易翻车的地方在中断和接收发送寄存器上。在21年左右我发现stm32g0存在一个诡异问题,keil ac6 编译器优化等级开到最大,hal库的软件浮点bug会引发串口收发异常。后面芯片国产化就没咋用stm32了,不知道问题是否解决。排除方案直接烧一个官方demo程序,假如串口正常收发,就是软件问题。好好对比与官方程序的异同。
7,pcb layout
仔细检查pcb走线和布局是否存在短路,断路,滤波电路等元件布局合理性等问题。有次新人画的板子串口通信时总会莫名其妙的导致电路故障甚至复位。我也检查pcb时发现有段地线走的又细又长,当串口接收到指令启动某个功耗很大的电路组件时,此时pcb走线的的电阻变得不可忽略,大电流会导致gnd电位被抬高,引发电路故障。pcb也是门博大精深的吃工作经验的学问。不过串口通信速率低,一般不用担心这方面问题。
8,工艺与辅料
有些电路板上喜欢涂抹三防漆或者胶水。它们在一些特殊环境下会改变电路板上元器件的电气性质。会引起诸如晶振起振异常等现象。情况复杂往往需要一事一议。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
yangjiaxu 发表于 2025-9-28 10:18 | 显示全部楼层
串口通信失败你先看硬件连接,如果硬件连接没问题就看电平部分,如果都没问题再看软件
您需要登录后才可以回帖 登录 | 注册

本版积分规则

28

主题

425

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部