mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik crc8 berechnen


Autor: Nicolas Nickisch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich bin leider absolut kein Mathe-Freak. Insofern habe ich einiges an 
Verständnisschwierigkeiten beim Thema CRC8 berechnen.
Das Netz ist zwar voll von Hinweisen, aber leider komme ich nicht ganz 
hin.

Ich habe hier eine superkurze Anleitung  wie die Kommunikation mit einem 
Gerät ablaufen soll.

"Checksum8 is an 8bit checksum as it is utilized by varoius chip 
manufacterets ( with the polynomial x^8+x^5+x^4+1, bit reversion for 
data and remainder, initialized with 0xff)"
Mehr habe ich nicht.

Es beginnt schon mit dem Verständnis für das Polynom. Wie mir scheint, 
aknn man hier alles mögliche einsetzen, manche Werte sind aber wohl 
besser geeignet. Für CRC8 finde ich immer wieder den Wert 0x07 als 
Polynom. Passt dies zu der o.g. Anweisung ? Ich ätte jetzt gedacht, es 
müsste 49dez sein - aber was soll dann das x^8 ? Wenn ich einige 
Webseiten so anschaue, dann scheint ein x^8 oder x^16 (bei CRC16) 
einfach weggelassen zu werden. Aber man wird ja nicht einfach das 
höchstwertige Bit unterschalgen , oder ?

Unter www. miscel.dk/miscel findet man ein Programm mit dem man 
tatsächlich crc8-Werte zum testen berechnen kann.
Dazu gehören aber noch einige andere Werte.

Initial: dürfte dem 0xff in der Anweisung entsprechen
Alt: ?
final xor: ?
Polynom: müsste hier 49dez rein ?

Kann mir jemadn helfen ?

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gehört eigentlich nicht in diese Forum, habs mal gemeldet vieleicht 
verschiebt es ein Freundlicher Moderator.

http://de.wikipedia.org/wiki/Cyclic_Redundancy_Check erklärt das 
generelle Vorgehen + Beispiel in C vieleicht hilft dir das?
Da wird auch erklärt wie das Polynom zustande kommt.

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zurueck zur urspruenglichen Frage:

> manufacterets ( with the polynomial x^8+x^5+x^4+1, bit reversion for
>besser geeignet. Für CRC8 finde ich immer wieder den Wert 0x07 als
>Polynom. Passt dies zu der o.g. Anweisung ?

nein.

> Ich ätte jetzt gedacht, es
> müsste 49dez sein -

49dez = 110001 = x^5 + x^4 + 1

BRAVO! Passt!

> aber was soll dann das x^8 ?

Wenn das 8.te Bit gesetzt wird, also 1.abcd.efgh  (a..h E {0,1})
xored man mit 1.0011.0001 (=x^8 + x^5 + x^4 + 1), d.h. Bit8 wird
durch das XOR 0.
Wenn es sowie die "meiste" Zeit "0" ist, und man lediglich bei
einer Schiebeoperation aufpassen muss, reicht ein Byte. Ein
Programm, das mit 9 Bit hantiert und eine darauffolgende
(leichte) Optimierung macht Dir die Antwort auf die Frage glasklar.

> Wenn ich einige
>Webseiten so anschaue, dann scheint ein x^8 oder x^16 (bei CRC16)
>einfach weggelassen zu werden. Aber man wird ja nicht einfach das
>höchstwertige Bit unterschalgen , oder ?

s.o.

>Unter www. miscel.dk/miscel findet man ein Programm mit dem man
>tatsächlich crc8-Werte zum testen berechnen kann.
>Dazu gehören aber noch einige andere Werte.

Den 10 Zeiler bekommst Du in 30 Minuten selbst hin!
Aufpassen wie laut Spec. die Daten reinkommen, d.h. LSB first
oder MSB first.

-Hans

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.