数据校验是为保证数据的完整性进行的一种验证操作。通常用一种指定的算法对原始数据计算出的一个校验值,接收方用同样的算法计算一次校验值,如果两次计算得到的检验值相同,则说明数据是完整的。
校验方法:
1.奇偶检验:根据传输的二进制数据和奇偶校验位中“1”的个数进行校验。如果连同校验位中“1”的个数是奇数,就是奇校验;反之,就是偶校验。
例:
假设要发送的全部二进制信息就只包含7个“1”
则如果是奇校验,那么连同校验位,所有“1”的数量必须是奇数,所以最后校验位是0
则如果是偶校验,那么连同校验位,所有“1”的数量必须是偶数,所以最后校验位是1
2.CRC循环冗余校验:利用除法及余数的原理来作错误侦测(Error Detecting)的。实际应用时,发送装置计算出CRC值并随数据一同发送给接收装置,接收装置对收到的数据重新计算CRC并与收到的CRC相比较,若两个CRC值不同,则说明数据通讯出现错误。
CRC的计算过程如下:
(1)设置CRC寄存器,并将其赋值位FFFF(HEX码)
(2)将数据的第一个8-bit字符与16位CRC寄存器的低8位进行异或,并将结果保存到CRC寄存器中。
(3)将CRC寄存器向右移1位,MSB(Most Significant Bit,最高有效位)补0,移出并检查LSB(Lease Significant Bit,最低有效位)。
(4)如果LSB为0,重复 “第3步”。若LSB为1,CRC寄存器与多项式码相抑或,
(5)重复 “第3步” 到 “第4步” 直到8次移位全部完成。此时一个9-bit数据处理完毕。
(6)重复 “第2步” 到 “第5步” 直到所有数据全部处理完毕。
(7)最终CRC寄存器的值就是CRC的值。
3.bcc异或校验法:将所有数据都和一个指定的初始值(通常是0)异或一次,所得结果为校验值。接收方收到数据后自己也计算一次异或和校验值,如果和收到的校验值一致就说明收到的数据是完整的。