ZHCSX83 October 2024 ADS127L21B
PRODUCTION DATA
SPI 循环冗余校验 (CRC) 是一种 SPI 校验代码,用于检测与主机控制器之间的传输错误。主机将一个输入 CRC 字节与 SDI 上的输入数据一起传输,ADC 将一个 CRC 字节与 SDO/DRDY 上的输出数据一起传输。通过 CONFIG3 寄存器的 SPI_CRC 位启用 SPI CRC 错误检查。
主机通过对两个命令字节进行计算,生成 CRC 代码。填充到帧开头的任何输入字节都不包括在 CRC 计算中。ADC 根据在两个输入命令字节上计算的内部代码来检查输入命令 CRC 代码。如果 CRC 代码不匹配,则不会执行命令,并且会在 STATUS 字节中设置 SPI_ERR 位。除了 STATUS 寄存器,还阻止寄存器写入操作,以便可以通过将 1b 写入 SPI_ERR 位来清除 SPI CRC 错误。除非在寄存器读取命令的 SPI 帧中检测到 SPI_CRC 错误,否则不会阻止寄存器读取操作。
用于计算输出 CRC 代码的字节数取决于帧中传输的数据量。输出 CRC 代码之前的所有数据字节都用于 CRC 计算。表 7-18 展示了用于输出 CRC 计算的字节数。
字节计数 | 字节字段说明 |
---|---|
2 | 16 位转换数据 |
2 | 寄存器数据的一个字节 + 00h 填充字节 |
3 | 16 位转换数据 + STATUS 字节 |
3 | 24 位转换数据 |
3 | 寄存器数据的一个字节 + 两个 00h 填充字节 |
4 | 24 位转换数据 + STATUS 字节 |
4 | 寄存器数据的一个字节 + 三个 00h 填充字节 |
CRC 值是具有 CRC 多项式的可变长度参数按位异或 (XOR) 运算的 8 位或 16 位余数。ADS127L21B 根据 CRC 功能使用 8 位和 16 位 CRC 长度。8 位 CRC 用于 SPI、主程序存储器和 IIR 滤波器系数。8 位 CRC 基于 CRC-8-ATM (HEC) 多项式:X8 + X2 + X1 + 1。多项式的九个系数为:1 00000111。
16 位 CRC 专门用于 128 FIR 滤波器系数。16 位 CRC 基于 CRC-16-IBM 多项式:X16 + X15 + X2 + 1。17 个系数为 1 10000000 00000101。
以下程序会计算 CRC 值: