Hallo bin gerade an einem SENT Bus Decoder. Die Fast Channel Nachricht kann ich mittels CRC 4 des SENT Frame dekodieren. Wenn ich nun 18 Nachrichten einer Slow Channel Nachricht dekodiere scheint diese auch zu stimmen. Ich finde aber nichts wie man die 6 Bit CRC der Slow Message berechnet. Hat da jemand eine Tipp für mich. Die ersten 6 Bit der zwei Datenströme sind 111111b beim B3 und im B2 Strom eine CRC von 13d Dann folgen: Bit2 Datenstrom ist 110000000000b Bit3 Datenstrom ist 001100000000b Ist dekodiert eine Message ID von 0x06 und einem Datenwert von 0x03. Das stimmt mit dem Datenblatt bzw. SAE J2716 überein. Nur weiß ich nicht wie ich auf die CRC von 13d komme. Vielen Dank
Hier... https://github.com/hoonjet/CheckSumForSENTprotocol ... hat jemand die 4- und die 6-Bit CRC als Matlab-Code abgelegt. Vielleicht kannst du das portieren? mfg mf
Hab ihn mal mit einer Trial geöffnet. Hilft aber nicht wirklich. Sagt nämlich wenig aus darüber welche Daten in die Funktion gehen. Es gibt da eine Masterarbeit die kurz erwähnt, dass die Daten "in einer bestimmten Reihenfolge" in die CRC Funktion reinfließen müssen. Hätte das mal nachgebaut mit dem Polynom von der Matlab Funktion funktioniert aber nicht. Und die Masterarbeit beschreibt die CRC nicht weiter im Detail. (Seite 28) https://diglib.tugraz.at/download.php?id=5b6d299123406&location=browse
Der Vollständigkeit Halber:
1 | static const unsigned char crc6_table[] = { |
2 | 0, 25, 50, 43, 61, 36, 15, 22, 35, 58, 17, 8, 30, 7, 44, 53, |
3 | 31, 6, 45, 52, 34, 59, 16, 9, 60, 37, 14, 23, 1, 24, 51, 42, |
4 | 62, 39, 12, 21, 3, 26, 49, 40, 29, 4, 47, 54, 32, 57, 18, 11, |
5 | 33, 56, 19, 10, 28, 5, 46, 55, 2, 27, 48, 41, 63, 38, 13, 20 |
6 | };
|
7 | |
8 | static unsigned char SYS_sent_calculateCRC6(unsigned char *data) { |
9 | unsigned char checkSum6 = 21; // initialize checksum |
10 | |
11 | for(int i=0; i<4; i++){ |
12 | checkSum6 = data[i] ^ crc6_table[checkSum6]; |
13 | }
|
14 | checkSum6 = 0 ^ crc6_table[checkSum6]; |
15 | |
16 | return checkSum6; |
17 | }
|
Der Pointer data muss dabei auf die 4 aufbereiteten Bytes zeigen so wie sie in der Masterarbeit beschrieben sind.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.