CAN 2.0 B的CRC手动计算示例

时间:2015-08-06 20:17:07

标签: crc can-bus

我似乎是CAN 2.0B的CRC计算多项式,但我没有实例确保我理解如何计算它。

X15 + X14 + X10 + X8 + X7 + X4 + X3 + 1

我非常感谢能够逐步计算出这样的CRC。

1 个答案:

答案 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