ADS131M02 通过 SPI 与 MCU 通信。它是 SPI 从机,固定使用 Mode 1(CPOL=0,CPHA=1):空闲时钟低,数据在 SCLK 上升沿变化、下降沿采样。

🎛️ SPI 信号速览

  • CS:片选低有效。一帧通信内保持低电平;
  • SCLK:时钟输入,数据在上升沿变化、下降沿锁存;
  • DIN:主机发送给 ADC(MOSI);
  • DOUT:ADC 回传给主机(MISO),CS 高时高阻;
  • DRDY:数据准备好,可配成电平或脉冲模式;
  • SYNC/RESET:同步转换或复位。

📨 通信帧结构

每个 SPI 帧由若干个字组成,字长可设为 16/24/32 位(MODE 寄存器的 WLENGTH 位)。典型 24 位模式下:

图 8-18. 典型通信帧 图 8-18. 典型通信帧

  • 主机发送:命令字 + 命令 CRC/0 + 两个 dummy 字;
  • 从机回复:上一帧命令的响应字 + 通道 0 数据 + 通道 1 数据 + CRC/状态字。

注意:ADC 输出的是上一帧命令的响应,不是当前帧。这是流水线延迟,写代码时要特别注意。

📝 读寄存器时序

读寄存器分两步:第一帧发送 RREG 命令,第二帧接收寄存器值。

图 8-23. 读取单个寄存器 图 8-23. 读取单个寄存器

🗂️ 关键寄存器速查

寄存器地址作用
ID00h芯片 ID,上电可读
STATUS01h状态位:锁定、CRC 错误等
MODE02hSPI 字长、DRDY 格式、CRC 使能等
CLOCK03hOSR、功耗模式、通道使能
GAIN104h两通道 PGA 增益
CFG06h全局斩波、电流检测配置
CH0_CFG / CH1_CFG09h / 0Ch通道输入 MUX、相位
CH0_OCAL / CH1_OCAL0Ah/B / 0Dh/E偏移校准
CH0_GCAL / CH1_GCAL0Ah/B? 具体见手册增益校准

提醒

配置寄存器时建议先关闭通道(CLOCK 寄存器),写短帧完成配置后再开启,避免读出不完整数据。

💻 代码伪代码理解

数据手册给了完整 C 风格伪代码,核心流程是:

  1. 初始化 MCU SPI、GPIO、DMA、CLKOUT;
  2. 等 DRDY 变高,说明芯片准备好通信;
  3. 写 CLOCK 寄存器设置 OSR、功耗模式;
  4. 写 MODE 寄存器设置 DRDY 格式、字长;
  5. 写 GAIN1/CH_CFG 设置增益和输入;
  6. 使能 DRDY 中断,在中断里发 dummy 字读回 ADC 数据。