ZHCSRX7 june 2023 BQ79616
PRODUCTION DATA
發(fā)送器在整個傳輸幀(CRC 除外)中按位流順序進行 CRC 計算。確定執(zhí)行 CRC 算法的位流順序時務必注意:協(xié)議字節(jié)連續(xù)發(fā)送,并且首先發(fā)送最低有效位。圖 8-27 說明了位流順序概念。
圖 8-27 位流順序說明CRC (0x0000) 附加在位流的末尾。然后通過與 0xFFFF 進行異或運算來初始化該位流,以捕獲任何前導 0 錯誤。然后將該新位流除以多項式 (0xC002),直到只剩下 2 字節(jié) CRC。在此過程中,位流的最高有效 17 位與多項式進行異或運算。結果的前導零被刪除,并且該結果再次與多項式進行異或運算。該過程會重復,直到僅剩下 2 字節(jié) 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