4、逐次逼近型ADC(SAR):工作原理、内部结构、时序分析、优缺点及适用场景
各位工程师朋友,咱们今天聊聊SAR ADC。这东西在仪器仪表里太常见了,中低速高精度的场合,十有八九都是它。我刚开始做数据采集卡那会儿,用的就是12位的SAR,当时觉得这玩意儿真神奇——怎么就能一步步把模拟量给“猜”出来呢?
4.1 工作原理:二分法搜索,像查字典
SAR ADC的核心思想,说白了就是“二分法”。你想想看,如果让你猜一个0到1023之间的数,你会怎么猜?肯定先猜512,对方说“小了”,那就猜768,再说“大了”,就猜640……每次砍掉一半范围,最多10次就能猜中。
SAR ADC就是这么干的。它内部有个比较器,还有个数模转换器(DAC)。工作流程是这样的:
- 采样保持:先把输入电压抓住,保持稳定。
- 最高位试探:DAC输出一半的参考电压(比如Vref/2),跟输入比一下。
- 比较判决:输入大,这一位就置1;输入小,这一位置0。
- 下一位试探:根据上一位的结果,DAC调整输出,再比下一位。
- 重复:直到所有位都比完。
举个例子,一个4位SAR ADC,参考电压5V,输入是3.3V。它会这样走:
| 步骤 | DAC输出 | 比较结果 | 数字码 |
|---|---|---|---|
| 第1位(MSB) | 2.5V | 3.3V > 2.5V → 1 | 1xxx |
| 第2位 | 3.75V | 3.3V < 3.75V → 0 | 10xx |
| 第3位 | 3.125V | 3.3V > 3.125V → 1 | 101x |
| 第4位(LSB) | 3.4375V | 3.3V < 3.4375V → 0 | 1010 |
最终结果1010,换算成电压是3.125V。嗯,跟3.3V差了0.175V,这就是量化误差。位数越多,误差越小。
关键点:SAR ADC的转换时间由位数决定,N位就需要N个时钟周期。跟流水线型那种“流水线延迟”不一样,SAR是串行的,一个周期比一位。
4.2 内部结构:核心三件套
SAR ADC的内部结构其实不复杂,核心就三个东西:
- 比较器:负责“比大小”,输入大输出1,输入小输出0。我遇到过比较器失调电压导致精度下降的问题,后来加了自校准才搞定。
- 逐次逼近寄存器(SAR):这是“大脑”,负责控制二分法搜索的逻辑。它按顺序把每一位设成1,然后根据比较结果决定保留还是清零。
- 数模转换器(DAC):把SAR寄存器里的数字码转成模拟电压,跟输入比较。DAC的精度直接影响ADC的整体精度。
另外还有个采样保持电路(S/H),这个不能省。因为比较需要时间,输入信号如果一直在变,比较结果就没意义了。
个人经验:我习惯在SAR ADC前端加一个RC低通滤波器,截止频率设在采样率的1/10左右。这样既能滤掉高频噪声,又不会影响信号建立时间。曾经有一次没加,结果采集到的信号毛刺特别多,查了半天才发现是采样瞬间的电荷注入效应。
4.3 时序分析:别小看建立时间
SAR ADC的时序,说白了就是“采样+转换”两个阶段。以AD7689为例,它的时序是这样的:
// 伪代码描述SAR ADC时序
// CNV上升沿启动转换
// 转换期间BUSY为高
// 转换完成后BUSY变低,数据就绪
void Read_SAR_ADC(void) {
// 1. 拉高CNV,启动采样
CNV = 1;
delay_ns(10); // 采样时间,至少满足tACQ
// 2. 拉低CNV,开始转换
CNV = 0;
// 3. 等待BUSY变低
while(BUSY == 1);
// 4. 读取数据(SPI或并行)
data = SPI_Read();
}
这里有个坑,我踩过。采样时间(tACQ)必须足够长,让采样电容完全充到输入电压。如果信号源阻抗高,采样时间不够,转换结果就会偏小。我曾经用10kΩ的源阻抗配了个500ns的采样时间,结果12位ADC只出来8位的精度……
注意:SAR ADC的采样时间不是固定的!很多芯片允许你通过寄存器调整采样时间。源阻抗高的时候,一定要把采样时间设长一点。经验公式:tACQ > 9 × Rsource × Csample,其中Csample是内部采样电容(通常几pF到几十pF)。
4.4 优缺点:没有完美的ADC
SAR ADC的优点很明显:
- 功耗极低:静态电流几乎为零,只有转换时才耗电。非常适合电池供电的仪器。
- 无流水线延迟:输入信号进来,一个转换周期后就能出结果。不像流水线ADC那样有多个周期的延迟。
- 分辨率高:16位、18位甚至24位的SAR ADC都很常见。
- 体积小:内部结构简单,可以做到很小的封装。
缺点也明显:
- 速度受限:N位需要N个时钟周期,位数越多越慢。16位SAR做到几MHz采样率就到头了。
- 对噪声敏感:比较器对噪声很敏感,尤其是高分辨率的时候。我做过一个18位的设计,PCB布局稍微不注意,电源噪声就耦合进来了。
- 输入阻抗不恒定:采样瞬间会有一个电流尖峰,对前端驱动电路要求高。
4.5 适用场景:中低速高精度是它的主场
SAR ADC最适合的场景,我个人觉得是这些:
- 精密仪器仪表:比如数字万用表、数据采集卡、温度测量。这些场合需要高精度,但采样率不需要太高。
- 电池供电设备:功耗低是SAR的杀手锏。我做过一个便携式示波器,用的就是SAR ADC,一节18650电池能撑8小时。
- 多通道同步采样:每个通道配一个SAR ADC,可以做到真正的同步采样。不像Σ-Δ ADC那样需要多路复用。
- 工业控制:PLC模拟量输入模块,很多都是用SAR ADC,因为响应快、无延迟。
但如果你需要高速采样(比如几十MHz以上),那就别考虑SAR了,还是用流水线或Flash ADC吧。SAR在1MSPS以下才是它的舒适区。
总结一下:SAR ADC就像个“稳扎稳打”的老工程师,不追求速度,但每一步都走得扎实。选型的时候,先看速度要求,再看精度,最后看功耗。如果三者都满足,SAR通常是最省心的选择。
嗯,关于SAR ADC就聊这么多。下一章咱们讲讲Σ-Δ ADC,那个又是另一番天地了。