Forum: Mikrocontroller und Digitale Elektronik CRC Funkthermometer


von Stefan (Gast)


Lesenswert?

Hallo,

ich logge gerade die Daten eines 868 MHz Funkthermometers mit:

94 44 21 6A 54
94 44 23 6A 8D
94 44 22 6A 79
94 44 24 6A 23

Das letzte Byte soll die CRC sein (angeblich Generatorpolynom x^8 + x^5 
+ x^4 + 1 wie bei Dallas 1-Wire). Ich habe nun schon einige Online CRC 
Rechner und C Sourcecodes ausprobiert, aber keiner hat das richtige 
Ergebnis geliefert. Kann jemand helfen?

Stefan

von Stefan ++ (Gast)


Lesenswert?

Hallo,

folgende Routine ergibt das gewünschte Ergebnis
1
uint8_t  CRC8_update(uint8_t crc, uint8_t data) //mit dem Dallas 1-Wire Generatorpolynom x^8 + x^5+ x^4 + 1  entspricht:  100110001, 0x131 
2
{                                               
3
uint8_t i;
4
5
  crc = crc ^ data;
6
  for (i = 0; i < 8; i++){
7
    if (crc & 0x80)
8
      crc = (crc << 1) ^ 0x31;    // Dallas 1-Wire-Polynom 
9
    else
10
      crc <<= 1;
11
  }
12
  return crc;
13
}

dazu zu begin die "crc" mit 0x00 initialisieren und dann fortlaufend die 
Datenbytes "bearbeiten"

von Stefan (Gast)


Lesenswert?

Super, das klappt! Vielen Dank!

Stefan

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.