Forum: Mikrocontroller und Digitale Elektronik Verständnisfrage CRC


von Alex (Gast)


Lesenswert?

Hallo,

ich habe eine Routine, welche mir eine Look-Up-Table mit 256 Einträgen
(je 16 Bit) produziert. So kann ich die Checksumme für ein einzelnes
Byte direkt per lookuptable[byte] erhalten.
Meine Frage: Wie ist bei der Übertragung mehrerer Bytes nun vorzugehen?
Im Moment führe ich einfach fortlaufend XOR Operationen zwischen den
einzelnen Checksummen durch bis alle Bytes abgearbeitet wurden. Ist das
so korrekt?

Danke, Alex

von A.K. (Gast)


Lesenswert?

Bei CRCs besteht normalerweise kein Grund, das Rad neu zu erfinden.
Gibt's 8/16/32-bittig fertig im Internet, bitseriell und byteseriell.

von Ralf (Gast)


Lesenswert?

Guck dir mal die Application Note 27 von Dallas/Maxim an
(www.maxim-ic.com). Mir hats verständnismäßig ebenfalls geholfen.

Gruß Ralf

von Alex (Gast)


Lesenswert?

Also dort sieht es so aus, als wenn das Vorgehen so wäre:

Startwert xor 1.Byte
Ergebnis als Index für Lookup-Table
Wert aus Tabelle xor 2.Byte
Ergebnis erneut als Index für Lookup-Table
usw.

von amd (Gast)


Lesenswert?

Hallo,

Sorry das ich den urlaten Thread ausgrabe...
Wie oben schon steht wird in den Implementierungen von CRC immer so 
vorgegangen: Rest XOR neuen Byte und weiter rechnen damit.

Wenn man jedoch von Hand rechnet wird der Rest einfach vorne an das neue 
Byte angehängt als Startwert? somit bekommt man ein anderes Ergebniss.. 
?

Welches ist nun die richtige Vorgehensweise?

mfg

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.