ZHCSPQ8 December 2025 ADS122S14
PRODUCTION DATA
SPI 循环冗余校验 (CRC) 是一种校验代码,用于检测与主机控制器之间的传输错误。SDI 上的主机将一个 CRC-IN 字节与 ADC 输入数据一起传输,SDO 上的器件将一个 CRC-OUT 字节与输出数据一起传输。使用 SPI_CRC_EN 位启用 SPI CRC。此外,允许使用 STATUS_EN 位来传输 STATUS 标头,以获得有关任何 SPI 输入 CRC 故障的通知。
主机通过对两个命令字节进行计算,生成 CRC-IN 代码。填充到帧开头的任何输入字节都不包括在 CRC-IN 计算中。ADC 根据在两个接收的输入命令字节上计算的内部代码来检查输入命令 CRC-IN 代码。如果 CRC-IN 代码不匹配,则不会执行命令,并会将 SPI_CRC_FAULTn 位设置为 0b。
SPI_CRC_FAULTn 位作为 STATUS 标头的一部分输出,以立即指示前一帧中发生了 CRC 错误。SPI_CRC_FAULTn 位在下一个 SPI 帧中自动清除,前提是当前帧中没有发生 SPI CRC 错误。
用于计算输出 CRC 代码的字节数取决于 SDO 上的帧中传输的数据量。表 7-10 展示了输出 CRC 计算中包含的字节数。
| 操作 | 器件分辨率 | 状态标头已启用 | 字节计数 | 输出 CRC 涵盖的数据 |
|---|---|---|---|---|
| 转换数据读取 | 16 位 | 否 | 2 | 16 位转换数据 |
| 转换数据读取 | 16 位 | 是 | 4 | 16 位 STATUS 标头 + 16 位转换数据 |
| 寄存器数据读取 | 16 位 | 否 | 2 | 8 位寄存器数据 + 8 位地址字节 |
| 寄存器数据读取 | 16 位 | 是 | 4 | 16 位 STATUS 标头 + 8 位寄存器数据 + 8 位地址字节 |
| 转换数据读取 | 24 位 | 否 | 3 | 24 位转换数据 |
| 转换数据读取 | 24 位 | 是 | 5 | 16 位 STATUS 标头 + 24 位转换数据 |
| 寄存器数据读取 | 24 位 | 否 | 3 | 8 位寄存器数据 + 8 位地址字节 + 8 位 00h 填充 |
| 寄存器数据读取 | 24 位 | 是 | 5 | 16 位 STATUS 标头 +8 位寄存器数据 + 8 位地址字节 + 8 位 00h 填充 |
CRC 代码值计算是可变长度参数与 CRC 多项式进行逐位异或 (XOR) 运算后的 8 位余数。CRC 基于 CRC-8-ATM (HEC) 多项式:X8 + X2 + X1 + 1。多项式的九个系数为:100000111.CRC 计算初始化为全 1,以便在 SDI 和 SDO/DRDY 始终处于高电平或低电平时检测错误。
图 7-20 展示了 CRC 计算的直观表示。下面是计算 CRC 值的过程:
可从此处下载的示例 C 代码包括可能的 CRC 实现。