有时串口读取给出转换值[垃圾值]

时间:2016-06-14 10:28:01

标签: linux serial-port tty termios

配置串口如下所示

14-Jun-16 15:41:32.300 [RX] - :010400000036C5<CR><LF>
14-Jun-16 15:41:32.316 [TX] - :01046C00009FDA740049FF000085066AEB1E0F00003AFE00007B1F00040000000B000400000000000000003F8000002B4DDEB375E0EEA0000000044E1DD31400001F1E4D42312E302E300022D0837A33303030525300C6BB4187C05445542F414900AF6EFDFBFF937EA47A5F3D65BFA5<CR><LF>
14-Jun-16 15:41:32.341 [RX] - :01046C00009FDA740049FF000085066AEB1E0F00003AFE00007B1F00040000000B000400000000000000003F8000002B4DDEB375E0EEA0000000044E1DD31400001F1E4D42312E302E300022D0837A33303030525300C6BB4187C05445542F414900AF6EFDFBFF937EA47A5F3D65BFA5<CR><LF>

下面给出了预期的输出,即3-4次中的5次

14-Jun-16 15:41:32.596 [RX] - :010400000036C5<CR><LF>
14-Jun-16 15:41:32.602 [TX] - :01046C00009FDA740049FF000085066AEB1E0F00003AFE00007B1F00040000000B000400000000000000003F8000002B4DDEB375E0EEA0000000044E1DD31400001F1E4D42312E302E300022D0837A33303030525300C6BB4187C05445542F414900AF6EFDFBFF937EA47A5F3D65BFA5<CR><LF>
14-Jun-16 15:41:32.608 [RX] - 2E<NAK>ꢂ‚¢Ê2e<ENQ>‚‚‚ª‚²²<LF>
U%**<ENQ>2<ENQ>‚‚‚š<LF>
eU<LF>
‚‚‚º<DC2><NAK>2<ENQ>‚‚¢‚‚‚‚‚‚‚<DC2><ENQ>‚‚¢‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚š2…‚‚‚‚‚'<DC2>E"EUJjÓSS<DC4>¦TT(&LL˜˜00044E1DD31400001F1E4D42312E302E300022D0837A33303030525300C6BB4187C05445542F414900AF6EFDFBFF937EA47A5F3D65BFA5<CR><LF>

下面是我每5次获得1次的输出

ScrollContainer

任何人都可以帮助我,我很困惑。我错过了任何配置设置还是?

1 个答案:

答案 0 :(得分:1)

看起来它可能是以下任何一个问题:

串行缺相

驱动程序(或HW收发器)误解了串行传输的起始位,因此错误解释了数据。

框架错误

驱动程序(或HW收发器)误解了传输的一个位。这可能导致串行相位丢失。 使用示波器测量上升时间和信号衰减,以了解这是否是您的问题。

杂散噪声

传输线上有短暂的噪音。此噪声可能仅在损坏的串行数据之前或期间稍微发生。如果您有记录示波器,则可以记录更长的波形并分析更长的传输。如果你没有日志示波器,调试这个的一个hacky方法是修改用户空间或驱动程序代码,一旦看到错误数据就将gpio设置为高,然后你可以将这个gpio连接到示波器触发器发生错误时冻结帧。然后,您可以使用手动解码技术来了解示波器上可见的波形是否正确构图。

驱动程序错误

有许多软件问题可能导致驱动程序踩到自身并破坏数据。

布线问题

你没有写出这是什么类型的串行传输,但接地连接非常重要,你必须注意避免接地回路。

祝你好运!