1.3 Checksums - turag-ev/TURAG-Feldbus GitHub Wiki

  • Each packet ends on a checksum which is 1 or 2 bytes long.
  • Slaves can implement one of the specified checksum modes.
ID Length Checksum Description
0x00 - - reserved
0x01 1 Byte CRC-8/I-Code CRC-8 mode; for very small devices which only send short messages
0x02 1-2 Byte 0...29 data bytes: CRC-8/I-Code
30+ data bytes: CRC-16/IBM-3740
CRC-8/16 mixed mode; all devices with enough resources to implement CRC-16;
recommended mode

CRC-8/I-Code

  • Parameters: width=8 poly=0x1d init=0xfd refin=false refout=false xorout=0x00 check=0x7e residue=0x00 name="CRC-8/I-CODE"[1]
  • detects all 1 bit errors, burst errors up to 8 bit and 2 bit errors up to 30 data bytes[2][3]

CRC-16/IBM-3740

  • Parameters: width=16 poly=0x1021 init=0xffff refin=false refout=false xorout=0x0000 check=0x29b1 residue=0x0000 name="CRC-16/IBM-3740"[4]
  • detects all odd bit errors, burst errors up to 16 bit and 2 bit errors up to 4 KB[5][6]

References

  1. ^ http://reveng.sourceforge.net/crc-catalogue/1-15.htm#crc.cat.crc-8-i-code
  2. ^ https://users.ece.cmu.edu/~koopman/crc/crc8.html
  3. ^ https://en.wikipedia.org/wiki/Mathematics_of_cyclic_redundancy_checks#Error_detection_strength
  4. ^ http://reveng.sourceforge.net/crc-catalogue/16.htm#crc.cat.crc-16-ibm-3740
  5. ^ https://users.ece.cmu.edu/~koopman/crc/crc16.html
  6. ^ https://en.wikipedia.org/wiki/Mathematics_of_cyclic_redundancy_checks#Error_detection_strength
⚠️ **GitHub.com Fallback** ⚠️