CRC Prüfsumme
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.