probedog 发表于 2025-6-13 19:00

PIC32MM - UART时钟抖动?

设备:PIC32MM0256GPM028MPLAB v6.20包PIC32MM-GPM-0XX_DFP(1.3.50)ICD 4 (2018年9月23日)编译工具链XC32 (v4.45)
我正在以32 MHz的SYSCLK运行UART2,稍微超频了一些,正在读取DMX数据包(250,000波特率)。初始化如下。我遇到的问题是,当我收到超过495字节或更多的0x00数据时,大部分情况下工作正常。时钟抖动似乎是最可能的问题来源,但我没有解决方案。UART的错误似乎更多是TX而不是RX,我有一个解决TX问题的方案,但我无法解决RX上的丢包问题。如果所有槽位都有数据,即使是0x01的数据,我从不会错过一个字节,但全是0x00的完整数据包确实是个问题。
理想情况下,我会相信两个停止位来告诉我发送了多少字节,但当我知道我缺少字节时,我不能这样做。

热爱浪漫 发表于 2025-9-27 16:03

PIC32MM 的 UART 时钟抖动,可检查时钟源:优先用专用 PLL 输出,避免分频链过长。配置 UART 时启用硬件流控,降低波特率误差(建议≤2%)。PCB 布线远离开关电源,用地线隔离时钟线。软件端加接收超时重同步,或用奇偶校验容错,减少抖动导致的数据错误。
页: [1]
查看完整版本: PIC32MM - UART时钟抖动?