我似乎是CAN 2.0B的CRC计算多项式,但我没有实例确保我理解如何计算它。
X15 + X14 + X10 + X8 + X7 + X4 + X3 + 1
我非常感谢能够逐步计算出这样的CRC。
答案 0 :(得分:0)
CAN 2.0文档确切地说明了如何做到这一点:
CRC_RG = 0 //initialize shift register
REPEAT
CRCNXT = NXTBIT EXOR CRC_RG(14)
CRC_RG(14:1) = CRC_RG(13:0) //shift left by...
CRC_RG(0) = 0 //...one position
IF CRCNXT THEN
CRC_RG(14:0) = CRC_RG(14:0) EXOR (4599 hex)
ENDIF
UNTIL (CRC SEQUENCE starts or there is an ERROR condition)
注意,十六进制中的4599是多项式,即设置了位14,18,8,7,4,3和0。 (15位的位置是换班后拉出的位置。)
您可以找到示例here来验证您是否正确行事。应用于ASCII数字字符串(九个字节)123456789
的CRC是0x059e
。