Forum: Mikrocontroller und Digitale Elektronik Daten und CRC in Einklang bringen


von Flo (Gast)


Angehängte Dateien:

Lesenswert?

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.

von Peter Z. (hangloose)


Lesenswert?

Um was für einen Sensor handelt es sich denn? Infineon?

von Viktor N. (Gast)


Lesenswert?

Lass dir doch vom Hersteller den Code geben.

von nobi (Gast)


Lesenswert?

vieleicht benutz Du auch nur das falsche Generatorpolynom?

X8+X4+X3+X2+1 =0x11D

von Flo (Gast)


Lesenswert?

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.

von Flo (Gast)


Angehängte Dateien:

Lesenswert?

Hier noch das Datenblatt zum verwendeten Sensor

von Phantomix X. (phantomix)


Lesenswert?

Schau dir auch mal die Endianness deiner Systeme an (dh vertausche mal 
die Bytes in deinen Datenworten)

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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
Noch kein Account? Hier anmelden.