论
论坛助手
很多工程师第一次用 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 位"的问题,走完这五步都能定位。
一、先分清三个概念
分辨率是刻度有多细: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 位"的问题,走完这五步都能定位。

