1. ADC指标
除了分辨率,速率,输入范围这些基本指标外,衡量一个ADC好坏常日会用到以下这些指标:失落调偏差,增益偏差,微分非线性,积分非线性,信噪比,信纳比,有效位数,总谐波失落真。让我们以下图为例来看一下这些指标的意义。
LSB

参数中常常用LSB作为单位,比如说差分非线性为2 LSB。这究竟是多大一个值呢?为了大略起见,我们以一个3bit分辨率,满量程为5V的ADC为例。1个LSB对应的电压大小为5V/7=714mV。如果是8bit分辨率,那么1个LSB对应5/255=19mV。
图中横轴为输入电压Vin增长方向,纵轴为数字输出。空想情形下输入电压每增长1LSB(714mV),那么输出会向上跳变一次,对应虚线L1所在转换曲线。但实际电路每每会引入偏差,转换曲线每每如 L2 所对应曲线。
失落调偏差(Offset Error)
电压从0开始增大时,引起输出第一次跳变的电压值,与理论上该当引起第一次跳变的电压值(0.5 LSB)的差值。衡量小电压时的转换精度。如图中,理论上该当在0.5 LSB处跳变,实际电压增大到1 LSB时才跳变,以是Offset Error是 1–0.5 = 0.5 LSB。
增益偏差(Offset Error)
可以理解为实际转换曲线偏离空想曲线的程度。用最靠近满量程时跳变点电压值和理论跳变点电压值的差表示。
差分非线性 DNL(Differential Non-Linearity)
理论上每增加或减少1 LSB 的电压,都会引起输出对应的一次跳变。但实际情形可能如图中a,b处所示,电压的步距大于或小于1个LSB的理论步距。
a 处 DNL = 1.5 – 1 = 0.5 LSB;
b 处 DNL = 0.5 – 1 = -0.5 LSB;
积分非线性 INL(Integral Non Linearity)
差分非线性累积起来造成的对实际转换曲线的最大偏离便是INL。如图中所示,须要把稳的是INL不能表征对空想转换曲线的偏离程度。
总不可调度偏差 TUE(Total Unadjusted Error)
实际转换曲线与空想转换曲线之间最大的偏离。在最糟糕的一点,我们通过ADC得到的电压,与实际电压的差值。普通讲便是最不准的一点差多少。
思考一下,如果 DNL 和 INL 都非常好,那么是不是解释 TUE 就非常好?
对,还真不一定。纵然线性度非常好,如果增益偏差大,还是会导致终极结果大的偏差。
信噪比 SNR(Signal-to-Noise Ratio)
有用旗子暗记与噪声的能量比。我们总是期望信噪比越大越好。对付一个 N-Bit 分辨率的ADC来说,如果输入是一个满量程的正弦旗子暗记,在只考虑量化噪声的情形下,可以推导出一个有用的公式:
SNR = 6.02N + 1.76dB
推导过程见参考文档 ADI: MT-001
此公式直不雅观的表明了ADC分辨率和信噪比之间的量化关系。
信纳比 SINAD (Signal-to-Noise-and-Distortion Ratio)
实际ADC是无法达到空想状态的,它的输出除了会引入噪声,还会引入输入旗子暗记的谐波。SINAD是有用旗子暗记能量,与谐波(Distortion)加噪声(Noise)能量的比,它更能表示现实天下中的ADC性能。
SINAD = 20log(S/(N+D))
而SNR = 20log(S/N)
有效位数 ENOB(Effective Number of Bits)
表示ADC实际性能相称于多少位。可以从SINAD推出:
ENOB = (SINAD–1.76)/6.02
和空想情形下的位数对应:NOB =(SNR - 1.76)/6.02。
总谐波失落真 THD(Total Harmonic Distortion)
有用旗子暗记能量与谐波能量的比。
THD = 20log(S/D)
2. 如何提高转换精度
仿照电源(VDDA)和电压参考(VREF)
有的单片机ADC模块会引出单独的电源引脚和电压参考引脚,最好用LDO给这些引脚供电,或者用磁珠和滤波电容把这部分电源从数字部分隔离出来。
输入旗子暗记的输出阻抗
下图是ADC采样简化等效电路。ADC采样和保持电路的等效输入电阻电容Radc,和Cadc,手册中都会给出。在采样期间,开关SW会接通外部的旗子暗记输入电路,给采样电容Cadc充电至和输入旗子暗记相等(靠近),之后SW断开,ADC对采样电容上的电压进行转换。如果采样韶光过短,或者输入旗子暗记的输出阻抗过大,将导致采样电压不准。在旗子暗记源输出阻抗过高时,可以考虑增加一级运放。
高频串扰
如果与仿照输入引脚靠近的IO上有高频翻转的旗子暗记,或者PCB上有与输入旗子暗记长间隔的平行走线,串扰将滋扰输入旗子暗记。应避免ADC引脚附近旗子暗记高频翻转。在ADC输入布线和附近的走线之间用地线隔离开也可以避免ADC精度低落。
Wait,Stop模式
如果ADC在Wait和Stop模式下还可以事情,在此种模式下可以最大限度的降落MCU电源的颠簸,提高ADC的转换精度。
过采样(Oversampling)
如果采样频率为fs,那么对付fs/2以内的旗子暗记频率既可以得到完全信息。过采样是用远高于所需的采样频率去采样,这样噪声就会均摊在全体采样频带内。我们用数字滤波器可以滤除有用旗子暗记频带之外的噪声,从而使频带内的信噪比提高,得到更高的分辨率。对多次转换结果进行均匀也可以提高结果的精度。
芯片内部校正
很多单片机内部都有校正机制(Calibration),每次上电后实行一次Calibration,可以以提高ADC的精度。
温度的影响
ADC受温度影响比较大,特殊是失落调偏差和增益偏差。如果芯片事情温度范围很宽,可以在不同的温度下预先丈量,按温度做出查找表以在实际事情时做校正。
混入白噪声
这种方法对提高直流旗子暗记的分辨率很有用。如果输入旗子暗记靠近直流而且很稳定,那么输出就不会产生跳变,比如输出一贯是0x15A,我们无法确认输入电平是更靠近0x159,还是更靠近0x15B。那么我们可以人为地把白噪声混入旗子暗记,使旗子暗记产生小的颠簸从而输动身生跳变,然后再通过数学均匀得出一个精度更高的数值。实际操作中可以用GPIO产生一个方波然后通过阻容耦合进输入旗子暗记引脚。
参考资料:
ADI: Data Converter Introduction
ADI: MT-001 TUTORIAL Taking the Mystery out of the Infamous Formula,
"SNR = 6.02N + 1.76dB," and Why You Should Care
ST: AN1636 UNDERSTANDING AND MINIMISING ADC CONVERSION ERRORS
ST: AN2834 Application note How to get the best ADC accuracy in STM32 microcontrollers
NXP: How to Increase the Analog-to-Digital Converter Accuracy in an Application
NXP: Cookbook for SAR ADC Measurements