自动检测工作设备的UART波特率

问题描述:

我有一个通过UART不断发送数据的设备。自动检测工作设备的UART波特率

我正尝试在基于Windows的PC上使用终端应用程序读取它。问题是我不知道设备在哪个波特率发送数据。 我在较高波特率下获得的数据没有任何意义,所以我已将其缩小至小于或等于600的终端上可用的标准波特率。

是否有任何软件检测波特率或使用任何微控制器的方法?

+1

使用任何微控制器可能不是。如果引脚被gpio共享,您可以轮询/中断状态更改和测量,最小的测量应该给您波特率。或者,您可以扫描频率,如果遇到碰撞,它可能仍然是错误的,可能是2倍,3倍,4倍等太慢。可能难以实现,只需调整波特率即可正确排列,还需要有一个数据模式(帧格式等),以便在帧错误消失时查找。 –

+0

如果您正在讨论特定的程序/设备,只需将它放在示波器上,或者使用您的微控制器使用GPIO和定时器测量脉冲,然后从那里算出波特。 –

+0

您不仅可能有波特率不匹配,而且数据位数,奇偶校验位或停止位也不匹配。 –

不,不是,如果你想快速完成。做这类任务的十年时间里,示波器甚至是廉价的基于USB的逻辑分析仪都是您最佳的解决方案。这还不是一个软件问题,这是一个信号检测问题。您应该可以在几分钟内使用合适的仪器清除此问题。

我假设你只做这个练习,因为传输部分是你无法找到数据表的一部分。如果你手头有数据表,那么可以清除这个数据表,或者至少建议你应该尝试的可能的波特率。

我试了Realterm软件,发现数据是以300波特率,无奇偶校验,8个数据位和1或2个停止位来进行的。对于其余选项,我在软件中出现了成帧错误和中断情况。谢谢大家...