ZHCSRX7 june 2023 BQ79616
PRODUCTION DATA
发送器在整个传输帧(CRC 除外)中按位流顺序进行 CRC 计算。确定执行 CRC 算法的位流顺序时务必注意:协议字节连续发送,并且首先发送最低有效位。图 8-27 说明了位流顺序概念。
CRC (0x0000) 附加在位流的末尾。然后通过与 0xFFFF 进行异或运算来初始化该位流,以捕获任何前导 0 错误。然后将该新位流除以多项式 (0xC002),直到只剩下 2 字节 CRC。在此过程中,位流的最高有效 17 位与多项式进行异或运算。结果的前导零被删除,并且该结果再次与多项式进行异或运算。该过程会重复,直到仅剩下 2 字节 CRC。例如:
示例 1:使用多项式除法进行 CRC 计算
Command Frame = 0x80 00 02 0F 0B (0b1000 0000 0000 0000 0000 0010 0000 1111 0000 1011)
Command Frame in bit stream order = 0x01 00 40 F0 D0 (0b0000 0001 0000 0000 0100 0000 1111 0000 1101 0000)
After Initialization (XOR with 0xFFFF) = 0b1111 1110 1111 1111 0100 0000 1111 0000 1101 0000
1111 1110 1111 1111 0100 0000 1111 0000 1101 0000 0000 0000 0000 0000 #append 0x0000 for CRC
1100 0000 0000 0010 1 #XOR with polynomial
0011 1110 1111 1101 1100 0000 1111 0000 1101 0000 0000 0000 0000 0000
11 1110 1111 1101 1100 0000 1111 0000 1101 0000 0000 0000 0000 0000 #delete leading zeros from previous result
11 0000 0000 0000 101 #XOR with polynomial
00 1110 1111 1101 0110 0000 1111 0000 1101 0000
……
……
……
1100 0110 0000 0001 0000 0000
1100 0000 0000 0010 1 #XOR with polynomial
0000 0110 0000 0011 1000 0000
110 0000 0011 1000 0000
110 0000 0000 0001 01 #XOR with polynomial
000 0000 0011 1001 0100
0000 0011 1001 0100 #CRC result in bit stream order
1100 0000 0010 1001 #final CRC result in normal order
CRC final 0xC029