很多硬件工程师第一次做 ADC 选型,最容易掉进一个误区:ADC 是 16 bit,所以测量精度就是 16 bit。实际上,这两个概念差得很远。
16 bit 只是告诉你 ADC 理论上可以把满量程分成 2^16 = 65536 份,但真正拿到板子上测电压,结果可能远没有想象中那么准。尤其是做电池电压采样、电流检测、温度采集这类电路时,ADC 精度不能只盯着一个参数,而要把量化误差、偏移误差、增益误差、INL、DNL、参考电压、输入源阻抗、噪声和温漂全部放进来考虑。这也是很多规格书上看起来很亮眼、实测却差一截的根源所在。

那这些东西如何考虑呢?下面逐个拆解。

先搞清楚 1 LSB 到底是多少?
假设一个 12 bit ADC,参考电压 VREF = 3.3V,那么理想情况下:
$$LSB = \frac{V_{REF}}{2^{12}} = \frac{3.3V}{4096} \approx 0.806mV$$
也就是说,ADC 理论上的最小量化步进只有 0.806mV。如果换成 16 bit,1 LSB ≈ 50.4μV。看到这里是不是觉得 16 bit 非常厉害?先别急。

50µV 只是理论分辨率,不代表你真的能测准 50µV。因为 ADC 内部还有各种误差,外部还有参考源噪声、电源噪声、PCB 串扰。接下来我们聊聊 ADC 精度最容易搞混的几个参数。
1. Offset Error——偏移误差
假设 ADC 输入 0V,理论上应该输出 0,但实际输出可能是几个 LSB。比如 Offset = +3 LSB,对于 12 bit、3.3V 参考:
3 × 0.806 = 2.42mV
这意味着即使输入端完全是 0V,ADC 仍然可能显示约 2.42mV。这个误差最大的特点是它基本表现为整体平移,所以偏移误差其实比较好处理,可以通过软件校准消掉。

2. Gain Error——增益误差
增益误差更像是 ADC 的比例尺不准了。假设满量程理论应该对应 3.3V,但实际满量程对应 3.29V,那么整个转换曲线就不再是理想斜率。例如 ADC 实际存在 Gain Error = 0.1%,测量 3.0V 时,仅增益误差就可能带来:
3.0 × 0.1% = 3mV
所以对于高精度测量,Offset 和 Gain 通常需要分开处理。

3. 真正让 ADC 非线性的,是 INL 和 DNL
这两个参数很多人看规格书时容易跳过去,但做精密 ADC 设计时非常重要。DNL 是微分非线性误差,它关注的是每一个 ADC 码之间的实际步长是不是一样。理想情况下每一步应该是 1 LSB,如果某一级实际只有 0.7 LSB 或者 1.3 LSB,这就是 DNL 误差,严重时甚至可能出现丢码。

INL 是积分非线性误差,它关注的是实际转换曲线和理想直线到底偏了多少。例如规格书写 INL = ±2 LSB,对于前面的 12 bit ADC:
2 × 0.806 = 1.61mV
这意味着即使你把 Offset 和 Gain 都校准好了,ADC 内部的非线性仍可能贡献约 ±1.61mV 的误差。这里就能看出来:校准 ADC 并不等于 ADC 变成理想 ADC。校准主要解决系统性的偏移和增益问题,而 INL/DNL 属于转换器自身线性度的问题。

4. 参考电压才是隐形天花板
ADC 测量本质上是在做:
$$Code \approx \frac{V_{IN}}{V_{REF}} \times 2^N$$
所以 ADC 不只是测输入电压,它其实是在测「输入电压与参考电压的比值」。
假设 VIN = 1.65V,VREF = 3.3V,理论输出:
Code = 1.65 / 3.3 × 4096 = 2048
但如果参考电压实际变成了 3.3V + 10mV = 3.31V,那么:
Code = 1.65 / 3.31 × 4096 ≈ 2042
已经差了大约 6 个码。所以很多时候 ADC 本身没问题,真正拖后腿的是 VREF。这也是为什么做高精度 ADC 时,参考源的噪声、初始精度、温漂、负载调整率都不能忽略。
5. RC 滤波为什么有时候把精度搞得更差?
这是实际硬件设计中非常容易踩坑的一点。很多人看到 ADC 前面需要滤波,直接串一个 10kΩ 电阻,再并一个 100nF 电容。从低频滤波角度看没问题:
$$f_c = \frac{1}{2\pi RC}$$
代入 R = 10kΩ,C = 100nF,得到 fc ≈ 159Hz,看起来很合理。
但 ADC 内部通常存在采样保持电容。ADC 采样瞬间,需要从外部信号源抽取电荷,如果前面的源阻抗太大,采样电容来不及充电,ADC 采到的电压就可能偏低。所以 ADC 数据手册经常会规定一个最大推荐源阻抗,或者要求外部增加缓冲运放。

RC 不是越大越好,这是 ADC 前端设计非常重要的一条经验。
实战:算一个 12 bit ADC 系统的总误差
假设现在做一个 0~3.3V 的 12 bit ADC 系统。参数假设如下:
- 量化误差:
±0.5 LSB
- Offset:
±2 LSB
- Gain:
±3 LSB
- INL:
±2 LSB
- 参考电压误差换算:
±2 LSB
- 输入噪声:
±2 LSB
最简单的工程估算,把这些误差按照最坏情况相加:
Error_total = 0.5 + 2 + 3 + 2 + 2 + 2 = 11.5 LSB
对应电压是:
11.5 × 0.806 ≈ 9.27mV
所以这个系统虽然是 12 bit ADC,理论 LSB 只有 0.806mV,但实际最坏情况下,系统误差可能已经接近 ±9mV。
这就是为什么 ADC 选型不能只看多少 bit,真正应该看的是整个测量链路的 Total Error。
温度漂移:25℃ 的数据远远不够
假设 ADC 的 Offset Drift 为 10μV/℃,系统工作温度范围是 −40℃ ∼ 125℃,温差 ΔT = 165℃,那么仅偏移漂移就可能达到:
10μV/℃ × 165℃ = 1.65mV
如果你的产品采集的是微弱信号,这个影响已经非常大了。所以做精度预算时,不能只拿 25℃ 下的数据来算,真正应该算的是整个工作温度范围内的误差。
误差预算三步拆解法
在实际项目里,我通常把 ADC 误差拆成三个部分来看。
第一部分:ADC 自身误差
- Offset Error
- Gain Error
- INL
- DNL
- Quantization Error
第二部分:参考和电源影响
- VREF 初始精度
- VREF 噪声
- VREF 温漂
- AVDD 噪声
第三部分:外部模拟电路影响
- 分压电阻精度
- 运放 Offset
- 运放噪声
- RC 滤波
- 源阻抗
- PCB 漏电
- EMI 串扰
- 地弹噪声
尤其是电阻分压,假设:
$$V_{ADC} = V_{IN} \times \frac{R_2}{R_1 + R_2}$$
如果 R1、R2 都是 1% 电阻,你以为分压比例就在 1% 以内?实际上两个电阻的误差会共同影响比例。所以如果 ADC 本身已经做到 ±1 LSB,但前面的分压网络贡献了 ±10mV,那么这颗 ADC 选 16 bit 基本没有意义。
软件平均能不能救精度?
可以降低随机噪声,但不能把 ADC 自身的 INL、Gain Error 凭空消掉。如果噪声是随机的,采集 N 次做平均,理论上噪声标准差可以近似降低:
$$\sigma_{avg} = \frac{\sigma}{\sqrt{N}}$$
比如原始噪声 σ = 4mV,平均 16 次:
$$\sigma_{avg} = \frac{4}{\sqrt{16}} = 1mV$$
确实有效。但如果误差来自一个固定的 +5mV Offset,你平均 1000 次,结果仍然是 +5mV。所以要记住:平均主要对随机噪声有效,对系统性误差没有魔法。
真正靠谱的 ADC 精度计算方法
做项目时,不建议看到规格书上一堆参数就直接相加,更实用的方法是先建立一张误差预算表:
误差来源:ADC Offset、ADC Gain、INL、量化误差、VREF、输入电阻、运放 Offset、噪声。然后根据误差的性质分别计算。
如果采用最坏情况设计,可以直接做绝对值累加。如果这些误差彼此独立且近似随机,可以进一步采用 RSS 方法:
$$E_{RSS} = \sqrt{E_1^2 + E_2^2 + \cdots + E_n^2}$$
这两种算法得到的结果可能差很多。产品做可靠性设计时,我更倾向先用 Worst Case 把最坏的结果算出来,再根据实际测试数据做优化。
所以 ADC 真正难的,从来不是 12 bit 还是 16 bit,而是你能不能把 16 bit 里面到底有多少 bit 是真正有用的,算清楚。如果一个 16 bit ADC 的 1 LSB = 50μV,但整个系统噪声和误差已经达到 ±5mV,那么有效分辨能力才是你要关注的。这种情况下,ADC 标 16 bit 更多只是一个规格参数,真正决定测量结果的,是整个模拟前端和误差预算。
所以以后拿到 ADC 规格书,建议不要先看 Resolution 16 bit 这一行。先去找:Offset、Gain Error、INL、DNL、Reference、Noise、Temperature Drift、Input Source Resistance。把这些参数带入你的实际电路算一遍,你才知道这颗 ADC 到底够不够用。
ADC 设计选型涉及的知识点很碎,从转换器原理到前端调理电路,从参考源设计到误差分析,每一项都需要扎实的模拟功底。如果你也在做精密测量相关项目,建议系统性地梳理一遍技术文档中的 ADC 设计指南和避坑手册,把规格书参数和实际电路结合起来看。很多硬件工程师走过的弯路,本质上都是同一批参数的坑——只不过换个项目重新踩一遍而已。在云栈社区的硬件板块里,关于 ADC 采样精度、参考源选型、前端阻抗匹配的讨论串不少,翻一翻别人的实测数据和排错过程,往往比单看一篇教程更有收获。