SBASAD2 November 2021 ADS130B04-Q1
The ADS130B04-Q1 features a cyclic redundancy check (CRC) engine on both input and output data to mitigate SPI communication errors. The CRC word is 16 bits wide for either input or output CRC. Coverage includes all words in the SPI frame where the CRC is enabled, including zero-padded bits.
CRC on the SPI input is optional and can be enabled and disabled by writing the RX_CRC_EN bit in the MODE register. Input CRC is disabled by default. When the input CRC is enabled, the device checks the provided input CRC against the CRC generated based on the input data. A CRC error occurs if the CRC words do not match. The device does not execute any commands, except for the WREG command, if the input CRC check fails. A WREG command always executes even when the CRC check fails. The device sets the CRC_ERR bit in the STATUS register for all cases of a CRC error. The response on the output in the SPI frame following the frame where the CRC error occurred is that of a NULL command, which means the STATUS register plus the conversion data are output in the following SPI frame. The CRC_ERR bit is cleared when the STATUS register is output.
The output CRC cannot be disabled and always appears at the end of the output frame. The host can ignore the data if the output CRC is not used.
There are two types of CRC polynomials available: CCITT CRC and ANSI CRC (CRC-16). The CRC setting determines the algorithm for both the input and output CRC. The CRC type is programmed by the CRC_TYPE bit in the MODE register. Table 8-7 lists the details of the two CRC types. The CRC calculation is initialized with the seed value of FFFFh to detect errors in the event that DIN or DOUT are stuck low.
|CRC TYPE||POLYNOMIAL||BINARY POLYNOMIAL|
|CCITT CRC||x16 + x12 + x5 + 1||0001 0000 0010 0001|
|ANSI CRC||x16 + x15 + x2 + 1||1000 0000 0000 0101|