mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP CRC-16 Berechnung nicht nachvollziehbar


Autor: Kai F. (nixblicker)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo liebe Tüftler,

ich weiß ja, dass es schon viele CRC-Problem Threads hier im Forum gibt, 
aber ich habe doch ein sehr spezielles Problem, wobei mir die anderen 
Beiträge leider nicht helfen.

Ich möchte mit einem µC über RS232 einen Text an ein gekauftes LED-Modul 
übertragen. Zu diesem LED-Modul existiert eine SW, die beliebigen Text 
z.B. als Laufschrift an das Modul einmalig überträgt. Das LED-Modul gibt 
diesen Text dann in einer Endlosschleife auf dem Display aus. Einen Teil 
dieses Datenverkehrs zwischen PC und LED-Modul habe ich mitgschnitten 
und als pdf angehängt. Dabei wurde 4x derselbe Befehl gesendet, um es 
besser nachvollziehen zu können.

Und hier fängt mein Problem an:

Bei der Übertragung folgender Sequenz(in hex) wird eine CRC-16 
Checksumme berechnet, die ich einfach nicht nachvollziehen kann:

02 08 04 0F 04 01 03 00 3f 93

wobei
- 02 eine Startkennung ist
- 0F eine lfd Nr. ist
- 3f 93 die CRC Checksumme ist (3f ist CRC high, 93 ist CRC low)

Außerdem habe ich folgendes aus den spärlichen technischen Unterlagen 
des LED-Moduls herausgelesen:

Der Datenstrom ist auf folgende Weise aufgebaut:

- STX Startkennung 02h (wie oben im Bsp.)
- Länge in Byte (von "Länge" bis "CRClow") -> 08 (also OHNE die 
Startkennung)
- Adresse (in meinem Fall immer 04)
- lfd. Nr. (geht immer von 03 bis 0F)
- Kommando (Laufschrift, Blinken usw.)
- Daten1 bis DatenN
- CRC high
- CRC low

Eine Besonderheit: sollte im Datentelegramm ein STX vorkommen (nicht als 
Startkennung), so wird diese wie folgt kodiert:

02h = 01h 04h
eine 01h wird dann wie folgt kodiert: 01h = 01h 03h (siehe Bsp. oben)

Zur CRC-Berechnung:

Laut Unterlagen wird eine CRC-Summe von "Länge" bis "DatenN" gebildet, 
dem folgendes Polynom zu Grunde liegt:

x^16 + x^11 + 1


Das CRC-Prinzip ansich ist mir schon klar, nur schaffe ich es einfach 
nicht die oben beschriebenen CRCs nachzuvollziehen. Könnt ihr mir da 
vielleicht bitte weiterhelfen?

Gruß Kai

Autor: Kai F. (nixblicker)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Achso in den technischen Utnerlagen wurde noch ein Beispiel angegeben, 
welches aber leider auch nicht nachvollziehbar für mich ist:

<Beispiel>
CRC-Check:

Sender: folgende Folge soll übertragen werden: (alle Werte in HEX)

06 04 09 03 (Aktivabfrage)

06 - Länge
04 - Adresse
09 - lfd. Nr.
03 - Statusabfrage

Vorgehensweise:

2 Nullen anhängen

d.h. Folge 06 04 09 03 00 00

Es wird das Ergebnis nach jedem Schiebewert dargestellt:

Startwert (low/high - Vertauschung)

04 06

    Wert zum Durchschieben: 09

080C
1018
2030
4060
80C1
11A3
2346
468D

    Wert zum Durchschieben: 03

8D1A
0A15
142A
2854
50A8
A150
5280
A501

    Wert zum Durchschieben: 00

5A23
B446
78AD
F15A
F295
F50B
FA37
E44F

    Wert zum Durchschieben: 00

D8BF
A15F
529F
A53E
5A5D
B4BA
7955
F2AA

F2AA ist somit die CRC-Summe

d.h. übertragen wird: 06 04 09 03 F2 AA

</Beispiel>

So das war das Beispiel.  Ich hoffe damit könnt ihr nun was anfangen. :)

Gruß Kai

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.