一、奇偶校验概念
奇偶校验(Parity Check)是一种根据被传输的一组二进制数中"1"的个数是奇数还是偶数来校验数据传输正确性的方法。采用何种校验是事先规定好的。通常专门设置一个奇偶校验位,用它使这组数据和奇偶校验位中"1"的个数为奇数或偶数。
奇校验:让传输数据(包含校验位)中1的个数为奇数。即:如果传输字节中1的个数是偶数,则校验位为“1”,奇数相反。数据和校验位发送给接受方后,接收方再次对数据中1的个数进行计算,如果为奇数则校验通过,表示此次传输过程未发生错误。如果不是奇数,则表示有错误发生,此时接收方可以向发送方发送请求,要求重新发送一遍数据。
偶校验:让传输数据(包含校验位)中1的个数为偶数。即:如果传输字节中1的个数是偶数,则校验位为“0”,奇数相反。数据和校验位发送给接受方后,接收方再次对数据中1的个数进行计算,如果为偶数则校验通过,表示此次传输过程未发生错误。如果不是偶数,则表示有错误发生,此时接收方可以向发送方发送请求,要求重新发送一遍数据。
优缺点:
奇偶校验的检错率只有50%,因为只有奇数个数据位发生变化能检测到,如果偶数个数据位发生变化则难以发现;
奇偶校验每传输一个字节都需要加一位校验位,对传输效率影响很大。
奇偶校验只能发现错误,但不能纠正错误。
二、UART时序图
举例子画时序图阐述UART数据传输的协议(流程)
a)案例:处理器通过UART给BT发送数据0x95(10010101),并且UART工作参数:
115200(波特率),8(数据的位数)e(偶校验)1(停止位位数),简写:115200 8e1
对应的数据线的时序图如下:
总结:UART数据传输的协议流程:
空闲位->起始位->数据位->(校验位)->停止位->空闲位