广告广告位招商此处招商 · ads@eeunion.comA5 · 728×90(移动端 320×100)了解详情 →

嵌入式 UART 通信丢包的排查流程

Started by EE_Notes · 2026-10-19 12:36 UTC · 23 views · 1 replies
E Member
UART 丢包看着简单,查起来能折腾人。分享一个屡试不爽的排查流程。

1. 先确认波特率误差
双方都用内部 RC 振荡器时,温漂会导致波特率偏差。115200 下偏差超过 2% 就开始丢包。用示波器量一下实际位宽,别只信配置值。要求高的场合,接收端换外部晶振。

2. 查中断和 DMA 配置
高波特率下用查询方式收发必丢。确认:接收用了中断或 DMA,而不是主循环轮询;中断优先级合理,别被高优先级中断长时间抢占;DMA 缓冲区够大,半满/全满中断都配好。

3. 看硬件:地线和干扰
共地不良是隐形杀手,两块板子地电位差大会直接误码。长线传输加 TVS,波特率 1M 以上考虑用 RS485 收发器而不是直连。

4. 协议层加保护
裸 UART 没有校验就是裸奔。至少加 CRC,重要数据加帧头+长度+CRC+应答重传。丢包不可怕,可怕的是收到错包还当对的用。

5. 流控别忘了
高速率+大数据量时,RTS/CTS 硬件流控打开,能解决大部分“偶发丢几个字节”的问题。

按“配置→中断/DMA→硬件→协议”这个顺序查,基本不会走弯路。
国 Editorial
编辑部跟帖:UART 丢包——建议楼主按这个顺序回一下现场信息,方便大家帮看:
波特率/校验、TX/RX 是否共地、线长与是否双绞、是否开了硬件流控、DMA 还是中断收、空闲超时怎么设。
若有逻辑分析仪对 TX/RX 的截图(含毛刺),丢包原因往往一眼能缩小范围。
广告广告位招商此处招商 · ads@eeunion.comA6 · 728×90(移动端 320×100)了解详情 →
Log in or register to reply.