Hallo zusammen, nachdem ich mich seit 2 Tagen mit dem Prüfsummenverfahren beschäftige und einfach auf keinen grünen Zweig komme, habe ich ein gewisses Frustrationslevel erreicht und benötige eure Hilfe. Mein konkretes Problem ist, dass ich von meinem Mikrocontroller mit einem Sensor-IC kommuniziere. Dies geschieht über 3-wire SPI, wobei der µC als Master fungiert. Dieser sendet ein Commando-Word und empfängt vom IC ein Data- und Safety-Word (MSB immer zuerst). Im Safety-Word enthalten ist ein CRC-Byte, welches nach CRC8 J1850 spezifiziert ist. Ich habe eine aufgezeichnete Datenübertragung als Bild angehangen. Ich schaffe es einfach nicht, die Prüfsumme (in dem Beispiel die 1C(hex) ganz am Ende der Übertragung) in Zusammenhang mit den vorherigen Daten zu bringen. Der Hersteller gibt im Datenblatt folgendes zur CRC an: • This CRC is according to the J1850 Bus Specification. • Every new transfer restarts the CRC generation. • Every Byte of a transfer will be taken into account to generate the CRC (also the sent command(s)). • Generator polynomial: X8+X4+X3+X2+1, but for the CRC generation the fast-CRC generation circuit is used • The remainder of the fast CRC circuit is initial set to "11111111" • The remainder is inverted before transmission. Auf http://www.zorc.breitbandkatze.de/crc.html habe mit CRC 8.Grades und 0x1D als CRC Polynom, sowie dem Initial Value 0xFF verschiedene Einstellungen ausprobiert und bin nie auf den Prüfsummenwert gekommen. Auch diverse Rechnungen mit Taschenrechner haben nicht zum Erfolg geführt. Wo liegt mein Fehler, bzw. wie passt die Prüfsumme zu den übertragenen Bytes? Ich hoffe ihr könnt mein Verständnisproblem lösen.
vieleicht benutz Du auch nur das falsche Generatorpolynom? X8+X4+X3+X2+1 =0x11D
Ja, ist ein Infineon Chip. Auf der breitbandkatze-Seite gibt man das Polynom ohne die führende "1" an, also 0x(1)1D. Die Eingabe 11D wird auch durch das Programm verweigert, da der CRC-Grad nicht mehr zum Polynom passt.
Schau dir auch mal die Endianness deiner Systeme an (dh vertausche mal die Bytes in deinen Datenworten)
Ich komme auch immer auf 0x85. Ist merkwürdig - aber der Haken scheint dieses 'fast CRC circuit' zu sein. Hier noch ein brauchbarer online CRC Generator: http://ghsi.de/CRC/index.php?Polynom=100011101&Message=8021af117e Etwas vielseitiger als die breitbandkatze. Gibt noch einen in China, aber das Forum bezeichnet den Link als Spam.
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.