CRC Prüfsumme

Um manche Übertragungsfehler auf dem I2C Bus zu erkennen versendet und erwartet der Sensor SCD41 eine Prüfsumme.

rechner

Die Datenübertragung über den I2C Bus erfolgt für den Sensor SCD41 in Gruppen mit zwei Datenbytes, und einem Byte Prüfsumme. Die Bestätigung der Prüfsumme ist bei vom Sensor gesendeten Daten nicht zwingend notwendig. Bei Übertragung von Befehlen oder Konfigurationsdaten an den Sensor muss die Prüfsumme berechnet und übertragen werden.

Im Mikrocontroller wird die Berechnung in C-Code durchgeführt. Für schnelle Tests in der Entwicklungsphase erlaubt eine Berechnung im Taschenrechner eine manuelle Kontrolle.

Die Berechnung der CRC Prüfsumme im HP-16C ist mit diesem Programm möglich: :

 001    43.22.  1       Lbl 1
 002    45      4       RCL 4
 003    42      A       SL
 004    22      3       GTO 3
 005    43.22.  2       Lbl 2
 006    45      4       RCL 4
 007    42      A       SL
 008    45      3       RCL 3
 009    42      10      XOR
 010    22      3       GTO 3
 011    43.22.  4       Lbl 4
 012    45      1       RCL 1
 013    36              Enter
 014    45      4       RCL 4
 015    42      10      XOR
 016    45      5       RCL 5
 017    42      20      AND
 018    43      40      x=0
 019    22      1       GTO 1
 020    22      2       GTO 2
 021    43.22.  3       Lbl 3
 022    44      4       STO 4
 023    45      1       RCL 1
 024    42      C       RL
 025    44      1       STO 1
 026    45      4       RCL 4
 027    43      21      RTN
 028    43.22.  A       Lbl A
 029    44      1       STO 1
 030            31      R/S
 031    43.22.  B       Lbl B
 032    44      2       STO 2
 033            8       8
 034    44      32      STO I
 035            F       F
 036            F       F
 037    44      4       STO 4
 038            8       8
 039            0       0
 040    44      5       STO 5
 041            3       3
 042            1       1
 043    44      3       STO 3
 044    43.22.  5       Lbl 5
 045    21      4       GSB 4
 046    43      23      DSZ
 047    22      5       GTO 5
 048    45      2       RCL 2
 049    44      1       STO 1
 050            8       8
 051    44      32      STO I
 052    43.22.  6       Lbl 6
 053    21      4       GSB 4
 054    43      23      DSZ
 055    22      6       GTO 6
 056    43      21      RTN 

 R0     7->0    loop
 R1     MSB
 R2     LSB
 R3     0x31    (0b0011 0001)
 R4     0xFF    Initialisierung CRC
 R5     0b1000 0000     Maske

 [MSB] GSB A [LSB] GSB B 

Entsprechend dem Dokument Sensirion_GF_AN_SFM-04_CRC_Checksum_D1.pdf (S.4) wird die Berechnung der CRC Prüfsumme als Generatormodell im HP-16C Code umgesetzt. Im Datenblatt des Sensors Sensirion_SCD4x_Datasheet.pdf (S.21) wird darauf hingewiesen, dass im Algoritmus der CRC Wert initial auf 0xFF zu setzen ist.