使用mark/space parity和parity none之间有什么区别?

n0n*_*tan 6 serial-port bit parity

创建三种类型的奇偶校验位的目的是什么,所有奇偶校验位都定义了奇偶校验位未被精确使用的状态?

"如果存在奇偶校验位但未使用,则可将其称为标记奇偶校验(当奇偶校验位始终为1时)或空间奇偶校验(该位始终为0)" - 维基百科

dar*_*ron 15

有一个非常简单和非常有用的理由让标记或空格奇偶校验似乎在这里省略:节点地址标记.

极低功耗和/或小型嵌入式系统有时使用RS485或RS422等工业串行总线.也许许多非常小的处理器可能连接到同一总线.

这些微型设备不希望浪费电力或处理时间来查看通过串行端口进入的每个字符.大多数时候,这不是他们感兴趣的东西.

因此,您设计了一个总线协议,该协议使用例如9位... 8个数据位和一个标记/空间奇偶校验位.每个数据包只包含一个字节或字(节点地址),并设置标记奇偶校验位.其他一切都是太空平价.然后,这些微小的设备可以简单地等待奇偶校验错误中断.一旦得到中断,它就会检查该字节.那是我的地址吗?不,回去睡觉吧.

它是一个非常节能的系统......只有10%的带宽浪费.在许多环境中,这是一个非常好的权衡.

所以...如果你有一个PC级系统尝试与这些小型设备进行对话,你需要能够设置/清除该奇偶校验位.因此,在传输节点地址时设置MARK奇偶校验,在其他地方设置SPACE奇偶校验.


Han*_*ant 6

所以有五种可能性,而不是三种:没有奇偶校验,标记,空间,奇数和偶数.在没有奇偶校验的情况下,额外的位在帧中被省略,通常在协议已经检查具有校验和或CRC的错误时被选择,或者数据损坏被认为不可能或不重要.

没有人选择标记或空间,这只是浪费带宽.Modulo有些奇怪的标准,比如9位数据协议,硬件供应商喜欢强迫你购买他们的硬件,因为你没有真正重新编程UART而没有编写驱动程序.