最近看完了ST的AN2834应用笔记《如何在STM32微控制器中获取最佳ADC精度》,这篇文档写得非常好。我觉得借助它终于简单理解了SAR型ADC工作原理,偏移误差,增益误差以及为何最大输入信号幅度要与ADC动态范围匹配可提高分辨率等。以前也看过很多ADC资料,但印象都不太深,这篇不一样。
所以本文结合ST这篇文档,简单整理一下SAR型ADC工作原理,因为它是最常用的一种ADC之一。只有稍微了解它的工作原理,才有可能用好它(必要条件),才能明白为何设计它时要格外注意输入级驱动和参考源等。
一、常见ADC对比、特性与应用
下面图1和图2引用自TI的资料,可以看到这是很旧的资料了,因为如今SAR型ADC的采样率可高达到如65MSPS,分辨率最高也可到20-bit的了。但不妨碍我们理解SAR型ADC与其他ADC的区别,特性和应用。
SAR型ADC的几个关键词,瞬时转换性,高采样率,高分辨率,操作简单,低成本和低功耗。
图1 常见ADC对比(第一行中的转换速度和分辨率顺序反了)
图2 四种常见ADC特性及应用
二、SAR型ADC的工作原理
ST那篇文档已经写得很详细了,我这里再补充一些我在学习过程中的笔记即可。STM32中的ADC同样是SAR型ADC。SAR即逐次逼近,类似于算法中的“二分法”。转换次数取决于ADC的位数。这里以10位ADC举例,但只介绍前两步逼近,因为后面基本是重复的,最终会持续到LSB为止。
图3 总览SAR型ADC的工作过程,这里只讲解了前两步逼近,因为后面的逼近基本是重复的,最终会持续到LSB为止
图4 SAR 切换电容型ADC的基本原理(10位ADC示例)
图5 采样状态
图6 保持状态
图7 第一步:与Vref/2比较
图8 第二步:如果MSB=0,则与1/4 Vref比较
着重看一下图8。这是MSB=0时,也就是第一步的比较结果是Vin小于1/2Vref,因此第二步会跟1/4Vref比较。
比较器输入端电压为VCOMP=-VIN+1/4Vref——这可以用用叠加法进行理解,因为虽然电容电压是不同时态的值,但中间没有任何损耗。C/2并联3C/2是2C,图7和图8是一样的,所以接入到比较器输入端的总电容都是2C,即在保持状态t0的电压都是-Vin。
转换期间t1,Vref会对采样电容阵列充电,第二步如果MSB=0时的等效电路参见图8下半部分。之所以会是1/4Vref,是因为电容的分压导致的。电容分压要记住两个电容上面的电荷量是一样的(KCL),根据公式Q=CV,C越大那么V越小。因此,3/2C两端的电压为1/4Vref,C/2两端电压为3/4Vref。
图
9 第二步:如果MSB=1,则与3/4Vref进行比较
三、总结
本文为ST AN2834文档中SAR型ADC工作原理的学习笔记。理解SAR型ADC工作原理的关键在于三点。第一,二分法,记得以前看过一个C语言视频,印象非常深,讲师通过“撕书”展示二分法,比如500页的书,我们要找25页,那么先把书从中间撕开,丢掉大于250页的那一半,重复该过程直到找到25页为止;第二,电容电压不能突变,所以采样保持电路仅靠电容阵列即可实现;第三,叠加法,不同时态的电容电压如果没有损耗,是可以用叠加法考虑的,一次只考虑一个时态的电容电压,总电压就是所有时态电容电压的和。