[求助] 9位串行通信Linux如何接收数据

别叫你哥许鲜森   2022-3-28 20:11 楼主

Crotex A8 内核linux4.1.18

使用RS232串行通信,单片机发送9位数据位,最高位1表示地址,最高位0表示数据

A8核心板接收数据,当前只能接收正确接收到最高位为0表示数据的字节,最高位为1表示地址的字节接收结果为00

问:如何能正确接收到单片机发送过来的数据

 

回复评论 (7)

建议读Datasheet,先弄懂RS232的协议,再根据协议设计需要的时序即可

点赞  2022-3-28 22:34

这个标准的双工通讯协议,按协议写程序就好了啊。

点赞  2022-3-29 10:57
引用: angel_CN 发表于 2022-3-28 22:34 建议读Datasheet,先弄懂RS232的协议,再根据协议设计需要的时序即可

您好,有阅读Datasheet文档,没有找到对应的解决方案

点赞  2022-3-29 18:02
引用: Verifone 发表于 2022-3-29 10:57 这个标准的双工通讯协议,按协议写程序就好了啊。

您好,我们A8核心板接收数据需要对最高位(即校验位)进行判断,最高位D8为1时D0-D7表示地址;最高位D8=0时,D0-D7表示数据;我现在接收单片机发送数据时,D8=1的字节会报校验错误

点赞  2022-3-29 18:11

楼主所及已经是协议的范畴,需要软件判断,232本身无所谓什么高位是啥,来啥接啥,如何解析是另外一回事。楼主遇到的问题,显然是软件解析编程有问题所致。

上传了一些书籍资料,也许有你想要的:https://download.eeworld.com.cn/user/chunyang
点赞  2022-3-30 15:55
引用: chunyang 发表于 2022-3-30 15:55 楼主所及已经是协议的范畴,需要软件判断,232本身无所谓什么高位是啥,来啥接啥,如何解析是另外一回事。 ...

谢谢您的回复,现在就是软件方面的问题,硬件是通的

现在就是我串口参数c_cflag奇偶校验设为最高位为0的校验,然后想要在接收最高位为1的字节时,忽略校验错误PE,将RHR寄存器内容读取出来

点赞  2022-4-1 15:44
引用: 别叫你哥许鲜森 发表于 2022-4-1 15:44 谢谢您的回复,现在就是软件方面的问题,硬件是通的 现在就是我串口参数c_cflag奇偶校验设为最高位为0 ...

那你只能用软件实现虚拟串口,硬件串口有模式之分,9位奇偶校验模式不能忽略校验错误。而你这样编制协议也很不规范,应该用命令字节解析功能,用位来表达,严重缺乏通讯可靠性。

上传了一些书籍资料,也许有你想要的:https://download.eeworld.com.cn/user/chunyang
点赞  2022-4-1 20:47
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复