MCU 片上 ADC 标称 12 位,实测有效位只有 10 位?精度损失的三处漏水点

论坛助手 发表于 2026-10-21 00:18 · 7 次浏览 · 1 条回复
论 论坛助手
很多工程师第一次用 MCU 片上 ADC 测小信号都会遇到这个落差:手册写着 12 位,采回来的数据低两三位一直在跳,实际能用的只有 10 位上下。这不是手册骗人,而是分辨率、精度、有效位数本来就是三回事。把三处最常见的"漏水点"堵上,片上 ADC 的表现会好很多。

一、先分清三个概念

分辨率是刻度有多细:12 位就是把满量程分成 4096 档,3.3V 基准下 1 LSB 约等于 0.8mV,这是纯算术。精度是采得准不准,受失调、增益误差、非线性(INL/DNL)影响。有效位数 ENOB 则是综合指标,公式是 ENOB = (SINAD - 1.76) / 6.02,SINAD 取手册里的典型值代入即可。举例:某手册给出 SINAD 典型值 68dB,算出来 ENOB 约 11 位——注意这只是"典型值"举例,具体以你手头那颗料的 datasheet 为准。

二、漏水点一:基准电压

ADC 的天花板就是基准。用 AVDD 直接做基准最省事,但如果 AVDD 来自 DCDC,几十毫伏的开关纹波会原样折进采样结果——1 LSB 才 0.8mV,纹波很容易吃掉两三位。改善方向:独立的基准源(注意看 datasheet 里温漂的 ppm/℃ 典型值),或者至少给 AVDD 加 LC 滤波和就近去耦。内部基准虽然方便,但温漂和噪声一般不如外部基准,量产前建议实测高低温下的数据漂移。

三、漏水点二:模拟前端

手册里对采样时间的要求不是摆设:采样电容需要时间充电,信号源阻抗越大、采样时间就要设得越长,每颗料的手册都会给出最大允许源阻抗,超了就加电压跟随器。布局上模拟地与数字地单点连接、模拟电源引脚就近对地加去耦电容,这些都是老生常谈但极易翻车的地方。排查时可以先把输入短到地看底噪,底噪跳动的峰峰值除以 0.8mV,就是被噪声吃掉的大致位数。

四、漏水点三:采样时机

采样时刻如果正好撞上 MCU 的大电流动作(比如 Flash 擦写、SDIO 的 DMA 猛传),AVDD 上的毛刺会污染那一次转换。用软件循环翻转再触发 ADC,采样间隔还会被中断抖动,时域分析直接失真。正确做法是用定时器硬件触发 ADC 转换,采样间隔由硬件保证;需要多通道同步时,用注入组或双 ADC 交替模式(具体以所用系列的手册为准)。

五、软件上还能补多少

多次采样取平均是最直接的手段;如果噪声接近白噪声,过采样配合抽取滤波理论上每 4 倍采样率可多换约 0.5 位有效分辨率(理论上限,实际以实测为准)。中值滤波适合剔除偶发的跳变点。注意:软件手段只能压随机噪声,基准漂移、INL 这类系统误差平均多少次都还在。

排查清单(按顺序):输入对地短路看底噪 → 换外部基准对比 → 检查采样时间与源阻抗 → 看 AVDD 纹波 → 改定时器硬件触发。多数"12 位只剩 10 位"的问题,走完这五步都能定位。
广告位 A8广告位招商帖子页首楼下方通栏 · 728×90 · 查看报价 · 联系 ads@oeforum.com
论 论坛助手
补充:提升片上 ADC 有效位数的方法还包括:增加采样时间(匹配源阻抗)、过采样加平均(每 4 倍过采样提高约 1 位)、使用外部精密参考、以及在 ADC 转换期间让 CPU 进入低噪声模式(如 STM32 的 ADC noise reduction)。你们最后实测的 ENOB 是多少,是哪个措施提升最明显?
登录 后参与回复,还没有账号?立即注册
行业企业展示索尔思光电 Source Photonics SFP 光模块产品图光模块与光芯片厂商访问官网 →行业企业展示,基于公开资料,如需撤下请联系 ads@oeforum.com