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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.