ZHCSOL1 December 2025 ADS125H18
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 代码不匹配,则不会执行该命令,并且会将 STATUS_LSB 字节中的 SPI_CRC_FAULTn 位设置为 0b。
SPI_CRC_FAULTn 位作为 STATUS 标头的一部分输出,以立即指示前一帧中发生了 CRC 错误。SPI_CRC_FAULTn 位会在下一个 SPI 帧中自动清除,前提是当前帧中没有 SPI CRC 错误。
用于计算输出 CRC 代码的字节数取决于 SDO 帧中传输的数据字节量。表 7-50 展示了用于输出 CRC 计算的字节数。
| 操作 | 启用 STATUS 标头 | 字节计数 | 位计数和说明 |
|---|---|---|---|
| 读取转换数据 | 否 | 3 | 24 位转换数据 |
| 读取寄存器数据 | 否 | 3 | 8 位寄存器数据 + 8 位地址字节 + 8 位 00h 填充字节 |
| 读取转换数据 | 是 | 5 | 16 位 STATUS 标头 + 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-46 展示了 CRC 计算的直观表示。以下是计算 CRC 值的过程:
可从此处下载的示例 C 语言代码包含一种可能的 CRC 实现方案。