2015-08-06 5 views
0

У меня есть вычисляющий полином CRC для CAN 2.0B, но у меня нет примеров, чтобы убедиться, что я понял, как его вычислить.Пример расчета CRC вручную для CAN 2.0 B

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

Я бы очень хотел видеть шаг за шагом расчет для такого CRC.

ответ

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, 10, 8, 7, 4, 3 и 0 установлены , (Позиция 15 бит - это то, что снято после смены.)

Вы можете найти пример here, чтобы убедиться, что вы делаете это правильно. Этот CRC применяется к строке ASCII цифр (девять байтов) 123456789: 0x059e.

+0

Не могли бы вы показать мне практический пример, чтобы я мог его вычислить вручную? –