Forum: Mikrocontroller und Digitale Elektronik CRC8 bis welche Datengröße sinnvoll?


von Jochen B. (fitzefatze)


Lesenswert?

Hi,

Folgendes Szenario:
Daten werden von einem Sensor an einem Microcontroller erfasst und über 
eine Funkverbindung (Zigbee) zu einem weiteren Microcontroller 
weitergeleitet. Dieser soll die Daten dann über RS232 zur Auswertung an 
einen angeschlossenen PC weiterreichen.

Fehlerhafte Daten sollen entweder erneut übertragen oder einfach 
verworfen werden. Deshalb möchte ich CRC8 zur Fehlererkennung bei der 
Übertragung zum PC verwenden.

Jetzt frage ich mich aber, wie groß der Datensatz, über den die 
Prüfsumme gebildet wird, für CRC8 sinnvollerweise maximal sein darf? 
Konnte bisher noch keine Angaben dazu finden. In meiner Anwendung ist 
die maximale Paketgröße ca.  85 Bytes (vorgegeben durch die maximale 
Nutzdatengröße der Funkverbindung), die durchschnittliche aber 
wesentlich kleiner, vielleicht so 10-20 Bytes (die gemessenen 
Sensordaten). Reicht CRC8 dafür aus, oder sollte ich CRC16 verwenden?

Gruß,
fitzefatze

von Hagen R. (hagen)


Lesenswert?

2^8 = 256 Bits.

Gruß Hagen

von Jochen B. (fitzefatze)


Lesenswert?

Hi Hagen,

kannst du mir genauer erklären, warum das so ist bzw. hast du eine 
Quellenangabe für mich, wo ich das nachlesen kann?

Gruß,
fitzefatze

von arc (Gast)


Lesenswert?


von Hagen R. (hagen)


Lesenswert?

>>kannst du mir genauer erklären, warum das so ist bzw. hast du eine
>>Quellenangabe für mich, wo ich das nachlesen kann?

ganz genau kann ich es nicht, weis aber das folgendes gilt

- eine "8 Bit CRC" (ansich schon eine falsche Bezeichnung) stellt ein 
Polynom dar das maximal 8 Koeffizienten besitzen kann. Wichtig dabei ist 
das es im Grunde maximal 9 Koeffizienten gibt und der höchste davon wäre 
immer X^8, wird aber nicht benutzt

- sollte das benutze Polynom "irreducibel" also nicht reduzierbar bzw. 
teilerfremd sein dann entsteht die maximale Periode im modualren Galois 
Field GF(2).

- da wir zu einem Basis 2 Glaois Field arbeiten heist dies die maximal 
Periode kann 2^8-1 sein. Es ist aber schwierig solche Polynome zu 
finden. Man geht davon aus das eine CRC8 minimal bis zu 2^7=128 Bits 
lange Daten absichern kann. Eine CRC16 demzufolge bis 2^15. Bei größeren 
Daten wird aber die CRC nicht komplett untauglich sondern nur 
Teileigenschaften gehen verloren, zb. 1/2 Bit Fehlerkorrektur,Abstände 
der minimalen 1 Bit Fehler reduziert sich.

Du solltest das aber nochmal genauer aus qualifizierter Quelle 
nachlesen, ich hatte das vor 15 Jahren mal gelernt.

Gruß Hagen

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.