ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
28 ноября
687643
avc-el (18.07.2016 23:29 - 23:51, просмотров: 12505) MBedder
CRC-Checksumme SAE J1850 mercedes CAN bus, салонный кан передаются данные , в некоторых (критичных) id в конце контролька crc-8 SAE J1850 c которой все предельно ясно , вот пример:
40 C2 8F A0 AA 00 97 CF ; 
40 C0 8F A0 AA 00 A7 09 ; 
40 C0 8F A0 AA 00 B7 C4 ; 
40 C0 8F A0 AA 00 C7 9D ; 
40 C0 8F A0 AA 00 D7 50 ; 
40 C0 8F A0 AA 00 E7 1A ; 
40 C0 8F A0 AA 00 F7 D7 ; 
40 C0 8F A0 AA 00 07 A8 ; 
40 C0 8F 58 55 00 17 39 ; 
40 C0 8F 58 55 00 27 73 ; 
40 C0 8F 58 55 00 37 BE ; 
40 C0 8F 58 55 00 47 E7 ; 
40 C0 8F 58 55 00 57 2A ; 
40 C0 8F 58 55 00 67 60 ; 
40 C0 8F 58 55 00 77 AD ; 
40 C0 8F 58 55 00 87 D2 ; 
40 C0 8F 58 55 00 97 1F ; 
40 C0 8F 58 55 00 A7 55 ; 
40 C0 8F 58 55 00 B7 98 ; 
40 C0 8F 58 55 00 C7 C1 ; 
40 C0 8F 58 55 00 D7 0C ; 
считал вот так: ---------------------------------------------------------- ;************************************************* ******************* ;---------------------------------------------------------- CalcCrcSaeJ1850: PUSH.D W0 PUSH.D W2 ;---------------------------- PUSH DCOUNT PUSH DOSTARTH PUSH DOSTARTL PUSH DOENDH PUSH DOENDL ;---------------------------- CLR.B CrcSaeJ1850 MOV CrcSaeJ1850Ptr, W1 MOV #0x06, W3 ;---------------------------- DO W3, CalcCrcSaeJ1850End MOV.B [W1++], W0 ;---------------------------- XOR.B CrcSaeJ1850 MOV #0x3B, W0; C4^FF=3B ;------------------ BTSC.B CrcSaeJ1850, #0 XOR.B #0x1D, W0; poly<, c=0 BTSC.B CrcSaeJ1850, #1 XOR.B #0x3A, W0; poly<, c=0 BTSC.B CrcSaeJ1850, #2 XOR.B #0x74, W0; poly<, c=0 BTSC.B CrcSaeJ1850, #3 XOR.B #0xE8, W0; poly<, c=1,^poly BTSC.B CrcSaeJ1850, #4 XOR.B #0xCD, W0; poly<, c=1,^poly BTSC.B CrcSaeJ1850, #5 XOR.B #0x87, W0; poly<, c=1,^poly BTSC.B CrcSaeJ1850, #6 XOR.B #0x13, W0; poly<, c=0 BTSC.B CrcSaeJ1850, #7 XOR.B #0x26, W0; poly<, c=0 ;------------------ MOV.B WREG, CrcSaeJ1850 ;------------------ CalcCrcSaeJ1850End: NOP ;---------------------------- POP DOENDL POP DOENDH POP DOSTARTL POP DOSTARTH POP DCOUNT ;---------------------------- POP.D W2 POP.D W0 RETURN ;---------------------------------------------------------- ;************************************************* ******************* ;---------------------------------------------------------- после 2014 года с выходом новых моделей, обновили всю архитектуру обмена данными, с этим проблем нет (есть заводская база данных) если контролька была раньше в 8м байте, то теперь перенесли и запихали ее в 1й байт, ну это тоже как бы хрен с ним. в базе контрольку они обзывают: CRC-Checksumme der Signal Group gemäß SAE J1850 считаем с2го-8й, кладем в первый и все сходится с родными пакетами. но в некоторых id , в базе контрольку обзывают еще с каким-то Signal Group ID : CRC-Checksumme der Signal Group gemäß SAE J1850 {Signal Group ID 2Bh} пример:
07 09 40 0C 06 00 00 00 ; 
BD 0A 40 0C 06 00 00 00 ; 
20 0B 40 0C 06 00 00 00 ; 
D4 0C 40 0C 06 00 00 00 ; 
49 0D 40 0C 06 00 00 00 ; 
F3 0E 40 0C 06 00 00 00 ; 
6E 0F 40 0C 06 00 00 00 ; 
06 00 40 0C 06 00 00 00 ; 
9B 01 40 0C 06 00 00 00 ; 
21 02 40 0C 06 00 00 00 ; 
BC 03 40 0C 06 00 00 00 ; 
48 04 40 0C 06 00 00 00 ; 
D5 05 40 0C 06 00 00 00 ; 
6F 06 40 0C 06 00 00 00 ; 
F2 07 40 0C 06 00 00 00 ; 
9A 08 40 0C 06 00 00 00 ; 
07 09 40 0C 06 00 00 00 ;
и естественно в этих пакетах контролька не совпадает с расчетной по sae1850 crc-8 , приведенной выше. пока только ясно что при вычислении контрольки еще учавствует Signal Group ID 2Bh, уже подставлял (наращивал) эти 2b и в начало и в конец пакета, и ксорил, ..... в самых разных вариантах, пока мысли кончились........ жду помощи от клуба.