通过串口连接的外设,有时会遇到通信不上的情况,这时怎么调试呢。
首先根据平台文档,正确配置串口,然后测试串口的收发。
可以在测试点焊接杜邦线,然后接将杜邦线接到串口线上,这时电脑可以直接显示cpu串口发出的数据。cpu设置读数据,然后电脑来发数据,如果读出来的数据也正常,那串口的配置是对的。
对此串口的接收要注意加入参数options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);,假设读10个字节,如果只发9个字节过来,软件上是无法读到数据的,数据在缓存区了,没给到上层。
命令行测试串口
以9600的波特率打开串口/dev/ttyS0
busybox stty -F /dev/ttyS0 speed 9600 cs8 -parenb -cstopb -echo -echoe -isig
发送0x1f 0x0f 0x0x 0x03 0x06 0x0 0xbe 0x89
echo -e -n "\x1f\x0f\x0\x3\x6\x0\xbe\x89" > /dev/ttyS0
读取数据(乱码,无法看到实际数据)
cat /dev/ttyS0