数采物联无线传感器数据采集终端循环冗余校验CRC区为2字节,含一个16位二进制数据。由发送设备计算CRC值,并把计算值附在信息中,
接收设备在接收信息时,重新计算CRC值,并把计算值与接收的在CRC区中实际值进行比较,若两者不相同,
则产生一个错误。
CRC开始时先把寄存器的16位全部置成“1”,然后把相邻2个8位字节的数据放入当前寄存器中,只有每个
字符的8位数据用作产生CRC,起始位,停止位和奇偶校验位不加到CRC中。
产生CRC期间,每8位数据与寄存器中值进行异或运算,其结果向右移一位(向LSB方向),并用“0”填入
MSB,检测LSB,若LSB为“1”则与预置的固定值异或,若LSB为“0”则不作异或运算。
重复上述处过程,直至移位8次,完成第8次移位后,下一个8位数据,与该寄存器的当前值异或,在所有
信息处理完后,寄存器中的最终值为CRC值。
产生CRC的过程:
- 把16位CRC寄存器置成FFFFH.
- 第一个8位数据与CRC寄存器低8位进行异或运算,把结果放入CRC寄存器。
- CRC寄存器向右移一位,MSB填零,检查LSB.
- (若LSB为0):重复3,再右移一位。
(若LSB为1):CRC寄存器与A001 H 进行异或运算 - 重复3和4直至完成8次移位,完成8位字节的处理。
- 重复2至5步,处理下一个8位数据,直至全部字节处理完毕。
- CRC寄存器的最终值为CRC值。
- 把CRC值放入信息时,高8位和低8位应分开放置。