发表于:2003-06-29 18:26:00
5楼
6. 检查时, 就依使用的是 even or odd parity check, 来计算 data & parity bit 之中的 1 的总数, 看看是否相同于我们要的偶数个 或是 奇数个.
例: even parity check
dataA 0101 0010 1 ==> 有偶数个 1, OK
dataB 0011 1100 0 ==> 有偶数个 1, OK
若通信受干扰, 各有一个 bit 有错误时...
dataA 0100 0010 1 ==> 有奇数个 1, 错误, 我们要求有偶数个才行
dataB 0011 1100 1 ==> 有奇数个 1, 错误, 我们要求有偶数个 1 才行
若通信受干扰, 各有 2 bits 有错误时...
dataA 0100 0000 1 ==> 有偶数个 1, 无法查出错误
dataB 0010 1000 0 ==> 有偶数个 1, 无法查出错误
7. parity check 发现错误时, uart 会要求对方重新发送吗? I donot know!
又因 parity check 只能用于 1 bit 以下的错误检查, 所以其实用途不大, 甚至少用 (所以我们常用 8N1, 8 data bits, No parity check, 1 stop bit). 也因此会有 checksum, CRC16, CRC32 ... 等的检查方法出现.