📡 ds-09 SPI 通信与寄存器

怎么通过 SPI 读写数据、配置芯片?
ADS131M02 数据手册初学者精讲 · 从芯片框图到电能计量应用

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

🎛️ SPI 信号速览

📨 通信帧结构

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

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

注意: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 数据。
🧠 小测验
ADS131M02 使用 SPI 哪种模式?
Mode 1:CPOL=0(空闲低),CPHA=1(下降沿采样)。
为什么读寄存器需要两帧?
第一帧发送 RREG 命令,ADC 在下一帧才把寄存器值放到 DOUT 上。这是流水线延迟。
配置寄存器前为什么建议先关闭通道?
避免在配置过程中读到不完整的转换数据,保证后续数据帧格式一致。
← 上一篇🏠 顶层目录下一篇 →