最近在调试Linux环境下串口接收代码时发现了一个现象:子串口模块发送的数据0x0D,在ARM板上接收并打印出来时变成了0x0A。
其实这个问题在很久以前就遇到过,一时想不起来了,现在记录如下:
在配置串口时,添加上以下语句:
Newtio.c_iflag &= ~ICRNL;
理论依据是:
ICRNL 将输入的回车转化成换行(如果IGNCR未设置的情况下)
0x0D 回车符CR
0x11 ^Q VSTART字符
0x13 ^S VSTOP字符
所以在传输0x0D 0x11 0x13等特殊字符的时候都会出现接收异常的情况。
本文探讨了在Linux环境下,ARM板串口接收时特殊字符0x0D被转换为0x0A的问题。通过调整串口配置,禁用ICRNL标志,解决了0x0D(回车符)在传输过程中变为0x0A(换行符)的现象。
4058

被折叠的 条评论
为什么被折叠?



