SBASAW5 December 2025 ADS122C14
PRODUCTION DATA
The ADS1x2C14 can output an 8-bit cyclic redundancy check (CRC) code when sending conversion data or register data to the controller to detect transmission errors. Use the I2C_CRC_EN bit to enable the I2C CRC. The devices append the CRC byte after the conversion data or register data, respectively, as shown in Figure 7-19, Figure 7-20, and Figure 7-22.
The number of bytes used to calculate the CRC code depends on the amount of data bytes transmitted in the frame. Table 7-11 shows the data included in the CRC calculation.
| ACTION | DEVICE RESOLUTION | STATUS HEADER ENABLED | DATA COVERD BY CRC |
|---|---|---|---|
| Conversion data read | 16 bit | No | 16 bits of conversion data + 8 bits of zero padding |
| Yes | 16 bits STATUS header + 16 bits of conversion data + 8 bits of zero padding | ||
| 24 bit | No | 24 bits of conversion data | |
| Yes | 16 bits STATUS header + 24 bits of conversion data | ||
| Register data read | 16 or 24 bit | N/A | 8 bits of register data |
The CRC code calculation is the 8-bit remainder of the bitwise exclusive-OR (XOR) operation of the variable length argument with the CRC polynomial. The CRC is based on the CRC-8-ATM (HEC) polynomial: X8 + X2 + X1 + 1. The nine coefficients of the polynomial are: 100000111. The CRC calculation is initialized to all 1s to detect errors in the event that SDI and SDO/DRDY are either stuck high or low.
Figure 7-24 shows a visual representation of the CRC calculation. The following procedure calculates the CRC value:
The example C code available for download here includes a potential CRC implementation.
Register data written to the devices are not CRC protected. To detect transmission errors when writing to the devices, read back the register data after a register has been written.