简介:面向嵌入式硬件工程师、数据采集与电能计量开发者的ADS131A04中英文数据手册,服务于双通道/四通道24位ΔΣ同步采样ADC的选型评估、原理图设计与驱动调试,适合具备模拟前端基础的读者查阅。内容覆盖128kSPS数据速率、差分输入、10,000:1动态范围下优于0.1%的单通道精度、内置负电荷泵、3.0~5.5V灵活模拟电源、6ppm/℃基准、ADC自检、故障监控及CRC/汉明码校验,并给出异步中断与同步主从接口时序、寄存器地图、电源时序、去耦与布局示例,可对照中英文核对关键参数、典型应用电路和封装信息。压缩包仅含1个docx文件,约1.04MB,按功能模块组织,便于快速检索,尤其适合在芯片评估、外围电路设计、寄存器配置和通信调试阶段反复查阅。已有641人学习,可用于能源监控、电网保护、电池测试和数据采集系统开发中的参数核对、接口配置与排错参考。
1. 这份 ADS131A04 中英文数据手册,真正的入口在第 9 页
硬盘里躺着几十份 PDF,真正翻到第三遍的没几个。ADS131A04 中英文数据手册属于“不看会翻车、看错也会翻车”的那一类:四个差分通道、24 位、128kSPS,特性列表念下来很顺,可决定板子能不能出数的,是第 9 页那两张推荐操作条件表,和寄存器 0x0B 里的一个位。英文版文档号 SBAS590,中文版 ZHCSEV8D,两版章节编号一一对应,遇到译文别扭的地方(比如引脚表里那个“完成的”,其实是 DONE 引脚)直接切到英文页对照,比在中文里猜词义快得多。它适合正在选型、或者原理图已经画完准备写驱动的嵌入式工程师,尤其是做电能计量、断路器保护、电池测试这类要多通道同步采样的场景。读完至少要能回答三个问题:模拟电源走哪条路、M0/M1/M2 怎么拉、第一帧数据为什么全是 0。
2. 先定电源拓扑:负电荷泵、单极、双极三条路的取舍
电源这一章决定了后面所有参数能不能兑现。手册第 7.3 节把推荐操作条件拆成“电荷泵使能”和“电荷泵禁用”两大块,这两块不是可选项的罗列,而是两条互斥的设计路线,选错了后面调什么都别扭。
2.1 三种接法与输入共模范围的联动
先把三条路的边界摆出来,数据来自手册第 7.1 节绝对最大额定值和 7.3 节推荐操作条件:
| 方案 | AVDD–AVSS | AVSS 相对 GND | 输入绝对电压 | 基准上限 | 典型场景 |
|---|---|---|---|---|---|
| 负电荷泵使能(VNCPEN=1) | 3.0~3.45V | ±0.05V | AVSS−1.5V ~ AVDD | 4.0V 需 AVDD–AVSS>4.5V,实际只能用 2.442V | 电流互感器、罗氏线圈这类有负半周的信号 |
| 单极性,泵禁用(VNCPEN=0) | 3.0~5.5V | −2.75~0.05V | AVSS−0.3V ~ AVDD+0.3V | 可到 AVDD−0.5V,5V 供电时能用 4.0V | 电阻分压网络测母线电压,只关心正半周 |
| 双极性,泵禁用 | 典型 ±2.5V | −2.5V | AVSS−0.3V ~ AVDD+0.3V | ±2.5V 供电下约 2.0V | 需要真双极前端、又不想开泵 |
这里有个反直觉的地方,也是我最开始没想明白的:5V 单电源如果打开负电荷泵,AVDD–AVSS 会被压到 3.45V 以内,白白丢掉量程。泵的价值不在“提高电压”,而在把输入共模往下延伸到 AVSS−1.5V,让直接挂在输入端的互感器负半周不被削掉。所以判断标准很简单——信号里有没有低于地的成分。有,就 3.3V 加泵;没有,就 5V 单电源拿满 ±4V 的差分范围。
手册里 VNCP 的输出典型值是 −2V,范围 −1.65~−2V(D 版把原来的 −1.95V 改成了 −2V,这个改动在后面第 6 章的修订对照里还会提到)。这意味着泵的负压能力是有限的,输入跌到 AVSS−1.5V 以下就进非线性区了,别拿它当无限轨到轨用。
2.2 VNCP、CAP、REF 引脚的外围清单与取值
引脚外围这一块,手册第 6 节引脚功能和第 11 章电源建议分散着写,我按原理图评审的顺序整理成一张表,画图时直接照着摆:
| 引脚 | 外围元件 | 取值 | 说明 |
|---|---|---|---|
| VNCP | 电容到 AVSS | 270nF | 仅在负电荷泵使能时;不使用泵时直接接 AVSS |
| CAP | 电容到 GND | 1µF | 内部数字 LDO 输出,IOVDD ≤ 2.0V 时需把 IOVDD 接到 CAP |
| REFP | 电容到 REFN | 1µF | 内部基准输出,别在这条线上挂别的负载 |
| REFEXT | 电容到 AVSS | 1µF | 用内部基准时接电容;用外部基准时是输入,范围 2.0V ~ AVDD−0.5V |
| REFN | 直接接 AVSS | — | 负基准输入 |
| RESV | 接 IOVDD | — | 保留引脚,不能悬空 |
| DOUT | 上拉到 IOVDD | 100kΩ | 手册明确要求,缺这个上拉在多设备链路上会出怪问题 |
| RESET | 低有效,脉宽 ≥800ns | — | tw(RSL) 最小值 800ns |
| XTAL2 | 不用晶振时悬空 | — | 别顺手接地 |
| AINxN | 悬空或接 AVSS | — | 未使用的负输入两种处理都行,但别留成天线 |
基准选择是个容易忽略的分叉点。VREF_4V 位置 0 时内部基准 2.442V,置 1 时 4.0V,但 4.0V 那一档要求 AVDD–AVSS 大于 4.5V,也就是必须 5V 单电源并且关掉电荷泵。很多人先在 3.3V 加泵的方案上把 VREF_4V 置 1,然后发现读数全部贴顶——不是 ADC 坏了,是基准根本没建立起来。内部基准的温漂是 6ppm/℃ 典型、20ppm/℃ 最大,这个指标在 −40~125℃ 的工业温区里算相当能打,一般场合没必要外挂基准。
2.3 上电时序与去耦:为什么手册把它排在布局之前
第 11 章把负电荷泵、内部数字 LDO、电源时序控制、电源去耦排在一起,顺序不是随便定的。数字 LDO 的输出就是 CAP 引脚,它的建立时间依赖 IOVDD 的上电斜率;负电荷泵又要等 AVDD 稳定之后才有输出。常见做法是 IOVDD 和 AVDD 同时上电或者 IOVDD 略晚,中间不要出现 AVDD 有电、IOVDD 悬空太久的状态,否则 RESET 释放时内部逻辑可能处在半启动状态。
复位后的等待时间是另一个血泪点。手册 7.7 节给的 tD(RSSC) 是 4.5ms 典型值,这个数指的是 RESET 上升沿到器件就绪响应之间的延迟。我见过有代码拉完 RESET 立刻发命令,前几条命令全部被吞,最后靠加了个 10ms 延时“修好”了——其实那不是玄学,就是没等够 4.5ms。
去耦方面,手册的布局指南要求每个电源引脚就近放 0.1µF,再加一颗 1µF 的储能电容,模拟地和数字地在器件下方单点汇合。REFP 那颗 1µF 必须紧贴引脚,走线越短越好,因为内部基准缓冲的输出阻抗不是零,长走线引入的寄生电感会让基准在采样瞬间抖一下,反映到数据上就是低频段的一层噪声。32 引脚 TQFP 是 5×5mm,RθJA 为 77.5℃/W,四通道高分辨率模式下功耗 22.7mW 左右,热上问题不大,但地平面被电源走线切碎之后,串扰指标 −125dB 是保不住的。
3. 接口模式不是跳线随便拨:M0/M1/M2 与三种 SPI 帧格式
引脚表里 M0、M1、M2 三个引脚各占一行,看起来像三个独立开关,实际上它们是一组必须在复位期间就固定死的配置字。手册第 6 节的脚注写得很直白:模式信号在上电复位后被锁存,要用小于 1kΩ 的电阻接到高电平或低电平。这一句话值一块板子的返工费。
3.1 异步中断、同步主机、同步从机三种拓扑
| 引脚 | 接 IOVDD | 接 GND | 悬空 |
|---|---|---|---|
| M0 | 异步中断模式 | 同步主机模式 | 同步从机模式 |
| M1 | 32 位字长 | 24 位字长 | 16 位字长 |
| M2 | 汉明码校验使能 | 汉明码关闭 | 保留,不要使用 |
异步中断模式是最常见的单器件用法:器件把 DRDY 拉低表示新数据就绪,MCU 用外部中断接住,SCLK 由 MCU 提供,一次事务读回四个通道。多器件时每片的 DRDY 各占一个 MCU 引脚,软件里靠时间戳拼帧,通道间同步性依赖各片自己的采样时刻。
同步主机模式把角色反过来:器件输出 SCLK,主机侧做从。手册 7.8 节里同步主机模式的 tc(SC) 直接写成 2×tCLKIN,说明 SCLK 是从主时钟分频出来的。这种模式适合一片做主、其余做从的级联结构,主器件的 SCLK 和帧同步信号广播给整条链路。
同步从机模式下所有器件共享 SCLK 和 CS,DOUT 各自独立,DRDY 也叫同步信号。三片以上做同步采样时走这条路,代价是布线上多几根 DOUT,收益是四个通道的采样时刻严格对齐。
M0 悬空这个状态最坑。悬空在数字输入上不是“中间电平”,是随温度和漏电流漂移的未知态,POR 锁存那一刻读到什么就是什么。我一般会在 M0/M1/M2 上各放一颗 1kΩ 下拉,需要高电平时用 0Ω 电阻改接 IOVDD,而不是直接连到 MCU 的 GPIO 上省事——MCU 复位期间 GPIO 是高阻,等于把模式引脚悬空。
3.2 一帧里到底传了什么:字长、CRC 与汉明码
24 位字长是默认的性价比选择,一帧里每个通道 24 个 bit,没有多余开销。32 位字长多出来的 8 位带状态和 CRC 信息,在电磁环境差的现场(断路器旁边、变频器柜内)值得开。16 位字长会截断低位,只有在数据率拉满、又不在乎分辨率时才考虑。
CRC 和汉明码是两层独立的保护,别混为一谈。CRC 校验的是整帧数据的完整性,命令字和数据都参与,CRC_MODE 位决定算法变体;汉明码作用在命令字上,做单比特纠错。手册第 9 章里专门用一小节讲 CRC,还特意说明 CRC_MODE=0 和使用 WREGS 命令时 CRC 的行为差异,这段修订记录里也反复改过,说明它确实是容易理解错的地方。实际调试时我的做法是:先把 CRC 和汉明码全关,确认数据通路通了,再逐项打开,这样出错时能立刻定位到是哪一层在报。
3.3 寄存器配置顺序与一段能跑的初始化序列
初始化顺序不能乱:复位 → 等就绪 → 解锁 → 配时钟和电源 → 配通道和增益 → 启动转换。手册 9.5 节的编程模型和 10.4 节的初始化设置是两份互补的材料,前者讲命令帧格式,后者给配置流程。
/* ADS131A04 上电初始化骨架,SPI 模式 1,MSB first,24 位字长 */ #define REG_A_SYS_CFG 0x0B /* 系统配置寄存器,bit7 为 VNCPEN */ static void adc_hw_reset(void) { gpio_clr(PIN_RESET); /* RESET 低有效 */ delay_us(2); /* tw(RSL) 最小 800ns,留一倍余量 */ gpio_set(PIN_RESET); delay_ms(5); /* tD(RSSC) 典型 4.5ms,取 5ms 保险 */ } static void adc_unlock(void) { /* POR 或复位后寄存器处于锁定态,按手册 9.5 节的解锁序列写两次 */ spi_write_reg(REG_A_SYS_CFG, ADC_UNLOCK_KEY1); spi_write_reg(REG_A_SYS_CFG, ADC_UNLOCK_KEY2); } static void adc_config_power(uint8_t use_pump) { uint8_t cfg = spi_read_reg(REG_A_SYS_CFG); if (use_pump) cfg |= (1u << 7); /* VNCPEN=1,走 3.3V 加泵方案 */ else cfg &= ~(1u << 7); /* VNCPEN=0,走 5V 单电源方案 */ spi_write_reg(REG_A_SYS_CFG, cfg); } static void adc_start(void) { /* 先等 DRDY 有效,再发唤醒/启动命令,避免命令被丢弃 */ while (gpio_get(PIN_DRDY) != 0) { /* 等待就绪 */ } spi_send_command(CMD_WAKEUP); spi_send_command(CMD_START); }这段代码里三个参数值得单独说。ADC_UNLOCK_KEY1/KEY2的具体数值必须从手册解锁序列那一节抄,不同修订版没有变过,但抄错一个字节的表现是后续所有写寄存器操作全部无效、读回来还是默认值。VNCPEN在 0x0B 的 bit7,手册 7.5 节电气特性的测试条件里反复出现“寄存器 0Bh 的位 7”,这句话等于告诉你这个位的地址。delay_ms(5)那个等待不是保守,是手册给的最小就绪时间,去掉它省不了多少启动时间,却会换来一堆随机失败。
4. 时钟与数据速率:从 16.384MHz 晶振推到 128kSPS
128kSPS 这个数字写在标题里,但它不是无条件成立的。它依赖主时钟、调制器频率和抽取率三者的整除关系,中间任何一环配错,实际数据率就会掉到一半或者变成非整数。
4.1 fCLKIN、fMOD、OSR 与输出数据率
手册 7.5 节的测试条件是 fCLKIN = 16.384MHz、fMOD = 4.096MHz,正好是四分频。数据率再由 fMOD 除以抽取率得到:
| 目标数据率 | fMOD | 抽取率 OSR | 说明 |
|---|---|---|---|
| 128kSPS | 4.096MHz | 32 | 上限,分辨率下降明显 |
| 64kSPS | 4.096MHz | 64 | 电能质量分析的常用档 |
| 32kSPS | 4.096MHz | 128 | 谐波分析够用 |
| 8kSPS | 4.096MHz | 512 | 手册标称 20.6 位有效分辨率的测试点 |
| 4kSPS | 4.096MHz | 1024 | 工频基波加低次谐波 |
时钟源有两个选择。外部有源晶振或 MCU 输出的时钟直接进 XTAL1/CLKIN,IOVDD 大于 2.7V 时允许 0.4~25MHz,IOVDD 不超过 2.7V 时上限降到 8.192MHz。用无源晶振时接在 XTAL1/CLKIN 和 XTAL2 之间,频率限定 16.384~16.5MHz,而且手册要求 IOVDD 大于 3.0V 才能用晶振。这条限制在 1.8V IO 系统里直接判了晶振方案死刑,只能走外部时钟。
多器件级联时还要注意时序表里“单一设备”和“多设备链接”两列的区别。同样是 SCLK 周期,单设备 64ns、多设备链接 88ns,链路上每多一级缓冲和走线,时序余量就得重新算。
4.2 高分辨率模式与低功耗模式的噪声账
手册第 8.1 节噪声测量给了有效分辨率的计算方式,核心是把满量程和实测 RMS 噪声相比:
有效分辨率 = log2( FSR / Vn_rms ),其中 FSR = 2 × VREF / 增益。
举个例子,VREF 取内部 2.442V,增益 1,差分满量程是 ±2.442V,FSR 为 4.884V。若在 8kSPS 下实测 RMS 噪声约 1.5µV,代入得 4.884 / 1.5e−6 ≈ 3.26×10⁶,取以 2 为底的对数约 21.6 位——和手册标称的 20.6 位在同一量级,差距来自测试条件和增益档位。这个公式的实用价值在于:换增益、换基准、换数据率之后,你可以自己算出理论分辨率,再和实测对比,判断噪声是来自 ADC 本身还是前端。
高分辨率模式和低功耗模式的差别在 fMOD 上:前者 4.096MHz,后者 1.024MHz。同样的抽取率下低功耗模式的数据率只有四分之一,换来的是功耗从 22.7mW 降到 5.3mW 左右(ADS131A04 典型值)。电池测试系统这类对功耗敏感、采样率要求不高的场景,低功耗模式是合算的;电能质量分析要抓 50 次谐波,必须高分辨率模式跑满。
4.3 时序参数怎么读:建立保持与 CS/SCLK 的关系
时序表第 7.6 到 7.11 节按三种接口模式分开列,参数名一致但数值不同。挑几个真正会出问题的:
| 参数 | 含义 | 1.65~2.7V | 2.7~3.6V |
|---|---|---|---|
| tc(SC) | SCLK 周期,单设备 | 64ns | 40ns |
| tc(SC) | SCLK 周期,多设备链接 | 88ns | 56ns |
| tsu(DI) | DIN 相对 SCLK 下降沿的建立时间 | 5ns | 5ns |
| th(DI) | DIN 相对 SCLK 下降沿的保持时间 | 8ns | 8ns |
| td(CSSC) | CS 下降沿到首个 SCLK 上升沿 | 16ns | 16ns |
| td(SCS) | 末个 SCLK 下降沿到 CS 上升沿 | 4ns | 5ns |
| tw(CSH) | CS 高电平持续时间 | 20ns | 15ns |
| tw(RSL) | RESET 低电平脉宽 | 800ns | 800ns |
表格里最容易被忽略的是 td(SCS) 和 tw(CSH) 这一对。很多人写驱动时 CS 拉高拉低跟着 SCLK 走,中间不留间隙,在 40ns 周期的边界上就会出现末位数据还没移出、CS 已经抬起来的情况,表现是最后一个通道的低字节随机错。SCLK 频率越高,这两个参数越要先算。另外 th(DI) 是 8ns,比建立时间还长,说明器件在下降沿之后还要保持一段时间,别把数据线在下降沿瞬间翻掉。
5. 避坑与排查:手册读漏一行,板子多飞一根线
这一章按“现象 → 原因 → 解决”记五条,都是配置层面能直接对上的问题,不是泛泛的“检查焊接”。
5.1 现象:第一帧数据全 0 或全 0xFFFFFF
原因通常有三个。一是复位后没走解锁序列,所有写寄存器操作被静默丢弃,器件还停在默认态;二是 tD(RSSC) 没等够,RESET 释放后 4.5ms 内发的命令全部无效;三是 DRDY 没接上拉或者接成了推挽输出,MCU 读到的一直是低,程序以为没数据。
解决顺序是先量 RESET 波形,确认低电平脉宽过 800ns、上升沿干净;再在代码里把 5ms 等待写死,不要依赖“应该够了”;最后读一次 A_SYS_CFG,看解锁之后的写入有没有生效——读回来的值和写进去的一样,才说明解锁成功。如果读回来还是默认值,问题一定在解锁序列,不在后级。
5.2 现象:通道读数整体偏移几毫伏,且随温度漂
原因是未使用的负输入 AINxN 悬空。手册 10.3 节“该做的和不该做的”里明确讲过未使用输入的处理,悬空的负端会通过输入电容耦合到相邻通道,形成缓慢漂移的共模。差分输入阻抗在 fMOD=4.096MHz 时约 130kΩ,悬空节点的电位完全由漏电流决定。
解决是把不用的 AINxN 直接接 AVSS,或者把整个通道的 P 端和 N 端都短接到一个确定的共模电平。顺带检查共模范围:泵使能时输入共模必须在 AVSS 到 AVDD 之间,超了之后读数会整体压缩,看起来像增益误差。
5.3 现象:多片级联时通道数据错位,第一片正常后面全乱
这是 M0 悬空导致的模式误锁存。悬空的数字输入在 POR 时刻读到什么全看漏电流和上一次的残余电荷,可能被锁成同步从机,也可能锁成主机,链路上两片角色冲突,数据自然错位。
解决是把 M0/M1/M2 全部用小于 1kΩ 的电阻拉到确定电平,不要直接接 MCU GPIO。多片系统里再检查一遍字长配置是否一致——一片 24 位、一片 32 位,读回来的帧长度对不上,解析时就会整体偏移。调试阶段可以先把字长统一降成 24 位、关掉 CRC,通路确认后再逐项加回来。
5.4 现象:CRC 间歇性报错,重试又好
原因一般是 SCLK 速率贴着上限跑、DOUT 缺少 100kΩ 上拉、或者 CS 建立时间不足。手册在引脚功能表里专门给 DOUT 标了“将一个 100kΩ 上拉电阻连接到 IOVDD”,这条不是建议,是总线在器件未驱动时需要有确定电平。缺少上拉时,DOUT 在切换方向的瞬间浮空,CRC 就把这段浮空当成数据算进去了。
解决是把 SCLK 降到标称值的一半做对比测试,如果错误消失,就是时序余量问题,回头核对 td(SCS) 和 tw(CSH);如果降速后仍然偶发,检查上拉电阻和地回路。CRC 报错不要急着换算法变体,先把物理层坐实。
5.5 现象:5V 供电,基准却只有 2.442V
VREF_4V 位置 1 的条件是 AVDD–AVSS 大于 4.5V。如果负电荷泵还开着,AVDD–AVSS 被限制在 3.45V 以内,4.0V 基准根本建立不起来,器件会回落到 2.442V 或者输出异常。
解决是先确认 VNCPEN 的状态,再确认供电电压,两个条件同时满足才置 VREF_4V。这条坑的隐蔽之处在于读数不会报错,只是量程悄悄缩了将近一半,标定系数全部作废。我现在的习惯是在初始化完成后回读一次基准配置,把实际生效的 VREF 打印出来,跟设计值对一遍。
6. 用修订历史反查设计:D 版改了什么,以及我的验证清单
数据手册的修订历史是最容易被跳过的一节,但它记录了原厂自己在哪些地方改过错。这份手册从 2016 年 3 月首版到 2018 年 1 月的 D 版,改动集中在命名、漂移指标和接口时序三块,手上有旧版图纸的人对一遍能省不少事。
| D 版变更点 | 旧值/旧名 | 新值/新名 | 对设计的影响 |
|---|---|---|---|
| 引脚命名统一 | VAVDD、VAVSS、VIOVDD | AVDD、AVSS、IOVDD | 旧原理图网络名对不上,评审时容易误判 |
| 标题 | 双通道或四通道 24 位同步采样 δ-σ 型 ADC | 增加 128kSPS | 数据率是核心卖点,选型时别按旧标题估性能 |
| 失调漂移 | 1.2µV/℃ 典型、3µV/℃ 最大 | 2.5µV/℃ 典型、4µV/℃ 最大 | 温补算法系数要跟着改 |
| 增益漂移 | 0.25ppm/℃ 典型 | 0.5ppm/℃ 典型、2ppm/℃ 最大 | 高精度计量场景要重新评估 |
| 基准温漂 | 4ppm/℃ 典型 | 6ppm/℃ 典型、20ppm/℃ 最大 | 工业温区内的总误差预算要放宽 |
| VNCP 输出 | −1.95V 典型 | −2V 典型,取消最小值 | 负压余量按 −1.65V 下限算,不要按典型值设计 |
| CAP 电压规格 | GND−0.3V ~ GND+2.0V 表述 | 改为 0.3V ~ 2.0V | 绝对最大额定值表的读法变了,别按旧表判 |
| WREGS 命令 | 写入数量为 n+1 | 改为 n−1 | 批量写寄存器的驱动要改,否则多写一个寄存器 |
这张表里我最在意的是最后两行。WREGS 的数量语义从 n+1 改成 n−1,如果你的驱动是照着旧版手册写的,批量配置时要么少写一个、要么越界写进相邻寄存器,现象是某个通道的增益莫名其妙不对。VNCP 取消最小值看着无关紧要,实际上意味着负压能力没有下限保证,设计余量要按 −1.65V 这个推荐范围的下沿留。
我现在的验证清单固定四步:第一步,上电后回读 A_SYS_CFG,确认解锁和 VNCPEN 状态;第二步,用内部基准测一次已知直流,算实际增益误差,和手册 0.03% FS 的典型值对比;第三步,把数据率从 8kSPS 扫到 128kSPS,每档抓一千点算 RMS 噪声,画一条噪声随数据率上升的曲线,形状不对说明抽取率配错了;第四步,短路输入测失调,再放到温箱里跑一遍,看漂移是否落在 2.5µV/℃ 附近。
这四步走完大概半小时,但能挡掉后面几天找不到原因的返工。从那以后我每次拿到一份新的 ADC 手册,都先把修订历史打印出来贴在工位上,对照旧图纸逐条划掉,再开始改原理图——这个习惯是从一次增益漂移指标翻倍、导致整批标定系数作废的教训里换来的。希望帮到你。
本文还有配套的精品资源,点击获取