Forum: Compiler & IDEs Suche CRC 8


von Petra Eigen (Gast)


Lesenswert?

Hallo

suche einen einfachen CRC8-Code für den MSP 430 135. Ich will aus 2
oder 3 Byte eine Prüfsumme berechnen lassen, die ich dann zusätzlich
als "viertes" Byte schicken kann.
Es wäre auch hilfreich wenn ich wüsste wie dies dann auf der
Empfängerseite aussieht. (Auch ein MSP430 135). Die ganze
Datenkommunikation läuft über die UART-Schnittstelle ab.

mfg Petra

von A.K. (Gast)


Lesenswert?

Siehe 1-Wire Doku.

von peter dannegger (Gast)


Lesenswert?

1
char crc8 (char crc, char n)
2
{
3
  n ^= crc;
4
  crc = 0;
5
  if( n & 0x01 ) crc  = 0x5E;
6
  if( n & 0x02 ) crc ^= 0xBC;
7
  if( n & 0x04 ) crc ^= 0x61;
8
  if( n & 0x08 ) crc ^= 0xC2;
9
  if( n & 0x10 ) crc ^= 0x9D;
10
  if( n & 0x20 ) crc ^= 0x23;
11
  if( n & 0x40 ) crc ^= 0x46;
12
  if( n & 0x80 ) crc ^= 0x8C;
13
  return crc;
14
}


Peter

von Karl H. (kbuchegg)


Lesenswert?

> Es wäre auch hilfreich wenn ich wüsste wie dies dann auf der
> Empfängerseite aussieht.

Das ist ganz simpel:
Du hast 4 Bytes empfangen. Aus den ersten 3 errechnest Du wieder
die CRC und vergleichst mit dem 4 empfangenen Byte.

von Petra Eigen (Gast)


Lesenswert?

Schaut eigentlich ganz simpel aus der Code von peter dannegger. Gibts
dazu auch ne kleine Erklärung?

Also was muss ich mit CRC übergeben? Soll das mein Generatorpolynom
sein?

Und was muss ich bei n übergeben?
Ich bin da nicht ganz so firm, wie manch andere hier.

von peter dannegger (Gast)


Lesenswert?

Nun, die Funktion muß pro Datenbyte aufgerufen werden (n = Datenbyte,
crc = Rückgabewert des vorherigen Aufrufs, bzw. Startwert).

Der letzte Rückgabewert ist dann die CRC.


Z.B. für 3 Bytes:

crc = crc8(crc8(crc8(0, byte1), byte2), byte3);


Peter

von Petra Eigen (Gast)


Lesenswert?

Danke,

noch zwei Fragen.
1. Welches Generatorpolynom steckt dahinter?
2. Wie korrigiert man auftretende Fehler?

Petra

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.