【发布时间】:2017-11-22 17:15:16
【问题描述】:
我对 UART 编程还很陌生,并试图理解奇偶校验位的概念,这对我来说仍然不完全清楚。
据我所知:
假设我有 8 位要从 UART 设备 A 传输到 UART 设备 B。每次我想向 deviceB 发送一个字节时,都会发送一个起始位,然后是 8 位,然后是奇偶校验位,然后是停止位。好的,这很清楚。现在,当 deviceA 设置为使用奇校验时,如果字节中 1 的数量为奇数,则奇偶校验位设置为 0。如果 deviceA 设置为偶校验,则相反。好的,我也明白了。
现在,当设备 B 接收到帧时,它会检查发送的字节,奇偶校验位是否与字节中的数字 1 一致,如果不是则存在奇偶校验错误。但是这个设备B,也有奇偶校验模式。
所以我的问题是:
是否应该将 deviceA 和 deviceB 设置为相同的奇偶校验模式(偶数或奇数)以使此控件按预期工作还是我错了?
感谢您为澄清这一点提供的任何帮助。
【问题讨论】:
-
是的,它们都需要使用相同的奇偶校验。奇偶校验模式不是通过串口传输的东西。
-
不,你是对的....但是这句话应该是DeviceA和deviceB必须设置为相同的奇偶校验模式...顺便说一句,怎么可能不同?...
-
发送器和接收器的波特率和字格式必须相同。
-
我投票结束这个问题,因为这是一个硬件问题,而不是软件问题。
-
@ThingyWotsit:如果 UART 支持 9 位模式或仅使用 7 个数据位并且它支持 8 位模式(曾经很常见),则可以手动生成奇偶校验位。很多 UART 都支持两者。