CRC Funkthermometer

Gast #2568033
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
Gast #2568061
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"

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren