Forum: Mikrocontroller und Digitale Elektronik Forward / Reverse CCITT(CRC) ??


von Gerd Kahlbach (Gast)


Angehängte Dateien:

Lesenswert?

hallo @

kennt jemand den Unterschied zwischen der Forward und Reverse CCITT
(CRC mit Polynom x^16 + x^12 + x^5 + 1)? Kann sich jemand
vorstellen,mit welchem Polynom die mit CRC-16 gekennzeichneten Felder
berechnet wurden?

Gruß und Dank schonmal

von Markus_8051 (Gast)


Lesenswert?

Hallo Gerd,

auch wenn Polynom und Startwert festgelegt sind, gibt es immer noch
etliche Wege der Berechnung. So kann man die zu prüfenden Daten
vorwärts oder rückwärts behandeln. Ebenso kann man das Polynom rechts
oder links herum rotieren. Das gibt dann natürlich unterschiedliche
Ergebnisse.

Woher stammt dein crc.pdf Dokument? Ist das ein Screenshot von einem
Programm? Wo gibt es dieses Tool? Ich habe schon bei TI auf der Seite
gesucht, aber nix gefunden. Kannst Du mir da einen Tipp geben?

Gruß,
Markus_8051

von Gerd Kahlbach (Gast)


Lesenswert?

Ich kann Dir schicken wenn Du willst.
An Deine gmx?

Gruß

von Markus_8051 (Gast)


Lesenswert?

Ja, gerne, an die GMX-Adresse.

Ich habe nämlich auch oft schwierigkeiten, wenn es darum geht, den
richtigen Algorythmus für die CRC zu finden. Und dieses Tool sieht so
aus, als ob man damit ein paar Möglichkeiten ausprobieren könnte.

Gruß und danke schon mal,

Markus_8051

von Gerd Kahlbach (Gast)


Lesenswert?

Hallo nochmal,

kennt jemand den Algorithmus für
den Reverse CCITT, bzw. Doku darüber?


Gruß

von Thomas (Gast)


Lesenswert?

Hallo Gerd,

Ich habe es nachgerechnet.

CRC-16  -> x^16 + x^15 + x^2 + 1
CCITT   -> x^16 + x^12 + x^5 + 1

Forward CRC:

- MSB der Datenbytes zuerst
- CRC-Schieberegister in Richtung MSB (nach links) schieben
- normale Polynommaske verwenden (0x8005/0x1021)

Reverse CRC:

- LSB der Datenbytes zuerst
- CRC-Schieberegister in Richtung LSB (nach rechts) schieben
- bitgedrehte Polynommaske verwenden (0xA001/0x8408)

Gruß Thomas

von Gerd Kahlbach (Gast)


Lesenswert?

Hallo Thomas,

Danke für die Info, ich probier' s gleich mal aus.

Hast du die Rechnung da, könnte ich da mal draufschauen??


Grüße Gerd

von Thomas (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Gerd,

Die Berechnungen stehen im Dateianhang.

Die Reverse-CRC kann man übrigens auch vorwärts berechnen, man
fängt dann mit dem LSB der Datenbytes anstatt dem MSB an und
verwendet das bitgedrehte Ergebniss der kompletten Berechnung.
Dieses Austauschen der Bits spart man durch das Reverse-Verfahren,
die CRC wird bereits bitgedreht berechnet.

Aber wozu das ganze überhaupt ?

CRC ist eigentlich immer MSB-first. Damit ergeben sich aber
Probleme wenn bei der Übertragung eines Bytes das LSB zuerst
dran ist. Dann würden die CRC-Bits in der falschen Reihenfolge
am Ziel ankommen.

In dieser Reihenfolge sollen sie ankommen :

        1. Byte                   2. Byte
15 14 13 12 11 10 09 08 - 07 06 05 04 03 02 01 00

Aber so würden sie ankommen :

        1. Byte                   2. Byte
08 09 10 11 12 13 14 15 - 00 01 02 03 04 05 06 07

Das Reverse Verfahren berechnet sie so :

        1. Byte                   2. Byte
00 01 02 03 04 05 06 07 - 08 09 10 11 12 13 14 15

Vor dem Senden vertauscht man die beiden Bytes :

        1. Byte                   2. Byte
08 09 10 11 12 13 14 15 - 00 01 02 03 04 05 06 07

Jetzt kommen sie wieder richtig an :

        1. Byte                   2. Byte
15 14 13 12 11 10 09 08 - 07 06 05 04 03 02 01 00


Gruß Thomas

von Gerd Kahlbach (Gast)


Lesenswert?

Oh man, Thomas,

ich weiß garnicht wie ich das wieder gut machen kann!!!
Hab vielen Dank für Deine aufopferungsvolle Hilfe.  :)

Viele Grüße
Gerd

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.