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