4、逐次逼近型ADC(SAR):工作原理、内部结构、时序分析、优缺点及适用场景

各位工程师朋友,咱们今天聊聊SAR ADC。这东西在仪器仪表里太常见了,中低速高精度的场合,十有八九都是它。我刚开始做数据采集卡那会儿,用的就是12位的SAR,当时觉得这玩意儿真神奇——怎么就能一步步把模拟量给“猜”出来呢?

4.1 工作原理:二分法搜索,像查字典

SAR ADC的核心思想,说白了就是“二分法”。你想想看,如果让你猜一个0到1023之间的数,你会怎么猜?肯定先猜512,对方说“小了”,那就猜768,再说“大了”,就猜640……每次砍掉一半范围,最多10次就能猜中。

SAR ADC就是这么干的。它内部有个比较器,还有个数模转换器(DAC)。工作流程是这样的:

  1. 采样保持:先把输入电压抓住,保持稳定。
  2. 最高位试探:DAC输出一半的参考电压(比如Vref/2),跟输入比一下。
  3. 比较判决:输入大,这一位就置1;输入小,这一位置0。
  4. 下一位试探:根据上一位的结果,DAC调整输出,再比下一位。
  5. 重复:直到所有位都比完。

举个例子,一个4位SAR ADC,参考电压5V,输入是3.3V。它会这样走:

步骤DAC输出比较结果数字码
第1位(MSB)2.5V3.3V > 2.5V → 11xxx
第2位3.75V3.3V < 3.75V → 010xx
第3位3.125V3.3V > 3.125V → 1101x
第4位(LSB)3.4375V3.3V < 3.4375V → 01010

最终结果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,那个又是另一番天地了。