别让你的 ADC “失真”——单片机模数转换从入门到精通

📅 发布时间:2026/8/16 1:22:37
别让你的 ADC “失真”——单片机模数转换从入门到精通
单片机 ADC 详解从原理到工程实践ADCAnalog-to-Digital Converter模数转换器是单片机中最重要的模拟外设之一。它把真实世界的连续模拟量——温度、压力、电压、电流、声音、光照等——转换成单片机能够处理的离散数字量。理解 ADC 的工作原理、参数指标、外设结构和使用方法是嵌入式开发的基本功。下面从概念、参数、原理、单片机内部结构、工作模式、硬件设计、软件处理、应用选型等几个方面做一个比较系统的介绍。一、ADC 的基本概念与作用在嵌入式系统中单片机核心是数字电路只能识别 0 和 1。而现实世界的大部分物理量是连续变化的模拟量。例如温度传感器输出 0.5 V ~ 2.5 V 的电压电池电压在 3.0 V ~ 4.2 V 之间变化电流采样电阻两端电压为几十 mV麦克风输出微弱的交流音频信号。ADC 的作用就是把这些模拟电压信号转换成数字编码例如输入 1.65 V参考电压 3.3 V12 位 ADC 输出约为 2048。转换结果可以用公式表示其中VnVin​输入模拟电压Vref​参考电压NADC 位数D数字输出码值。例如 12 位 ADCVref3.3V输入 1.65V实际输出可能是 2047 或 2048存在量化误差。二、ADC 的主要技术参数1. 分辨率分辨率表示 ADC 能够分辨的最小模拟变化量通常用位数表示8 位256 个等级10 位1024 个等级12 位4096 个等级16 位65536 个等级24 位16777216 个等级。最小分辨电压也叫 1 LSB例如 12 位、3.3 V 参考2. 参考电压参考电压 Vref决定了 ADC 的满量程输入范围。常见单片机参考电压来源芯片内部基准例如 1.2 V、2.5 V、3.0 V外部专用基准芯片例如 TL431、REF3030、ADR4525单片机供电电压 VDD​。参考电压的稳定性直接影响转换精度。如果参考电压波动 1%转换结果也会产生约 1% 的误差。3. 转换时间与采样率转换时间是指完成一次模数转换所需的时间。对于 SAR 型 ADC通常由采样时间和逐次逼近时间组成。采样率是每秒完成的转换次数单位 SPSSamples Per Second或 Hz。例如低速测量几 SPS 到几 kSPS普通单片机 ADC几十 kSPS 到几 MSPS音频采样44.1 kSPS 以上高速 ADC几十 MSPS 到 GSPS。根据奈奎斯特采样定理要无失真恢复信号采样率至少应为信号最高频率的 2 倍。实际工程中通常取 5~10 倍甚至更高。4. 精度相关指标分辨率高不代表精度高。精度还受非线性、噪声、温漂等影响。DNL微分非线性实际 ADC 的相邻码宽与理想 1 LSB 之间的最大偏差。单位为 LSB。理想 ADC 的 DNL 为 0。如果 DNL 超过 ±1 LSB可能会出现丢码。INL积分非线性实际转换曲线与理想直线之间的最大偏差。INL 是 DNL 的累计效果反映整体线性度。失调误差与增益误差失调误差输入为 0 时输出不为 0 的偏差增益误差实际满量程与理想满量程之间的斜率偏差。很多单片机 ADC 支持校准可以修正失调和增益误差。SNR 与 ENOB理想 ADC 的信噪比实际有效位数ENOB 比标称位数更能反映真实精度。例如一个标称 12 位的 ADC由于噪声大实际 ENOB 可能只有 10.5 位。三、常见 ADC 工作原理单片机内部最常用的是逐次逼近型 ADCSAR ADC此外还有 Sigma-Delta ADC、Flash ADC 等。1. 逐次逼近型 SAR ADCSAR 是 Successive Approximation Register 的缩写。它在分辨率、速度、功耗和成本之间取得了很好的平衡因此绝大多数单片机都集成 SAR ADC。SAR ADC 的核心结构包括采样保持电路比较器DAC逐次逼近寄存器控制逻辑。工作过程如下采样阶段开关闭合输入电压对内部采样电容充电电容电压跟随输入电压。此阶段结束后开关断开保持电压。比较阶段逐次逼近寄存器首先将最高位 MSB 设为 1其余位为 0。DAC 将该数字码转换为参考电压的一半。比较器比较采样保持电压与 DAC 输出电压如果输入电压大于 DAC 输出则保留 MSB 1如果输入电压小于 DAC 输出则清除 MSB 0。依次对下一位重复上述过程直到最低位 LSB 确定。转换结束寄存器中的二进制码即为转换结果。SAR ADC 每比较一次需要 1 个 ADC 时钟周期因此 N 位 SAR ADC 通常需要 N 个左右的时钟周期完成转换有时还需要额外几个周期用于采样和建立。特点速度中等适合从几十 kSPS 到几 MSPS分辨率通常 8~16 位功耗低可集成到单片机需要抗混叠滤波对输入驱动阻抗敏感。2. Sigma-Delta ADCSigma-Delta ADC 采用过采样和噪声整形技术用很低的内部量化位数通常是 1 位实现很高的分辨率常见于高精度低速测量如称重传感器、温度测量、音频 ADC。特点分辨率高可达 16~24 位甚至更高采样率较低适合直流或低频信号内部数字滤波对模拟前端要求较低常用于独立 ADC 芯片部分单片机也集成。3. Flash ADCFlash ADC 使用大量比较器并行工作一个时钟周期即可完成转换速度极快但电路规模随位数指数增长。一般用于高速应用如示波器、视频处理。单片机中较少集成。四、单片机内部 ADC 外设结构以常见的 STM32、AVR、MSP430、ESP32 等单片机为例内部 ADC 外设通常包含以下模块1. 模拟多路开关单片机通常有多个 ADC 输入通道但内部可能只有一个 ADC 内核。通过模拟多路选择器分时切换不同通道。例如 STM32F103 的 ADC1 有 16 个外部通道可以扫描转换多个引脚。2. 采样保持电路负责在转换期间保持输入电压恒定。采样时间需要根据输入信号源阻抗和内部采样电容确定。如果采样时间太短电容充电不足会导致较大误差。3. 逐次逼近转换器完成核心的量化过程。4. 转换结果寄存器保存转换结果通常为 16 位寄存器但有效数据位取决于分辨率。结果可以左对齐或右对齐。5. 触发控制ADC 转换可以由以下方式启动软件触发程序直接写启动位定时器触发由 PWM 或定时器事件触发实现固定采样率外部引脚触发。定时器触发在电机控制、数字电源等需要等间隔采样的场合非常重要。6. 中断和 DMA转换完成后可以产生中断或者通过 DMA 自动把结果搬运到内存缓冲区减少 CPU 负担。7. 模拟看门狗很多单片机 ADC 支持窗口比较功能。可以设置上限和下限当转换结果超出范围时产生中断。常用于电源电压监测、过流保护等。8. 内部专用通道除了外部引脚很多单片机 ADC 还连接了内部信号内部温度传感器内部参考电压电池电压监测通道DAC 输出回读通道。例如 STM32 的 ADC 通道 16 常接内部温度传感器通道 17 接内部参考电压。五、单片机 ADC 的常见工作模式1. 单次转换模式软件或外部触发一次ADC 完成一次转换然后停止等待下一次触发。适合不需要连续采样的场合如按键检测、温度巡检。2. 连续转换模式ADC 一次转换结束后自动开始下一次转换持续输出转换结果。适合需要连续监测的场合但 CPU 负担较重通常配合 DMA 使用。3. 扫描模式多个通道依次转换。扫描模式可以配合单次或连续转换。例如通道 0温度通道 1电压通道 2电流。ADC 会自动按顺序转换所有使能的通道结果可以存入不同的数据寄存器或通过 DMA 传输到数组。4. 注入模式Injected Mode部分单片机如 STM32支持注入通道。注入通道具有更高的优先级可以由外部事件触发打断常规转换。常用于电机控制中的电流采样需要在特定时刻立即获取结果。5. 间断模式每次触发只转换一个或几个通道然后停止等待下一次触发。适合低功耗应用可以降低平均功耗。6. 过采样与硬件平均部分单片机 ADC 支持硬件过采样多次采样求和或平均可以提高有效分辨率、降低噪声。例如 STM32L4 系列支持硬件过采样可配置 2x~256x 过采样率有效位数可增加。六、ADC 硬件设计要点1. 参考电压设计使用专用基准芯片保证精度和温漂在参考引脚附近加去耦电容如 100nF 10uF避免参考电压走线经过大电流区域如果使用内部基准注意其精度和温漂指标。2. 输入信号调理分压当被测电压超过 ADC 量程时使用电阻分压滤波在 ADC 输入引脚加 RC 低通滤波器滤除高频噪声和抗混叠缓冲如果信号源阻抗较高使用运放缓冲否则采样电容充电不足会导致误差保护加钳位二极管或串联电阻防止过压损坏引脚。3. 阻抗匹配SAR ADC 采样时内部采样电容需要从信号源抽取电荷。如果信号源阻抗太大采样时间内电容电压无法稳定到输入电压会产生误差。一般要求信号源阻抗小于几 kΩ具体看手册。计算公式近似4. PCB 布局模拟地与数字地分开单点连接ADC 输入走线尽量短远离数字高速信号参考电压走线加粗避免干扰在 ADC 引脚附近放置滤波电容。七、ADC 软件处理技术1. 软件滤波平均滤波对多次采样结果求平均可以降低随机噪声提高稳定性。中值滤波对一组采样值排序取中间值可以有效去除脉冲干扰。一阶低通滤波α 为滤波系数取值 0~1越小滤波越强但响应越慢。滑动平均滤波维护一个固定长度的队列每次新数据入队旧数据出队计算平均值。2. 过采样与抽取如果 ADC 本身不支持硬件过采样可以通过软件多次采样求和来提高有效位数。每增加 4 倍采样次数有效位数理论上增加 1 位。例如对同一信号采样 256 次并求和相当于 16 位 ADC 的有效分辨率假设噪声足够。3. 校准零点校准短接输入到地记录失调值后续减去满量程校准输入已知精确电压计算增益修正系数两点校准同时修正失调和增益。4. 结果换算将 ADC 码值换算为实际物理量例如再根据传感器特性换算为温度、压力等。八、应用选型考虑在实际项目中选择单片机 ADC 时需要关注分辨率根据精度要求选择 10 位、12 位或更高采样率根据信号频率确定通道数需要同时采集几路信号参考电压内部基准精度是否满足要求功耗低功耗应用注意 ADC 工作电流DMA 支持大量数据采集时DMA 可减轻 CPU 负担模拟看门狗需要电压监测时有用差分输入某些应用需要差分测量抑制共模干扰。常见单片机 ADC 对比单片机ADC 分辨率最大采样率特点STM32F10312 位1 MSPS多通道、注入模式、DMASTM32L412 位5 MSPS硬件过采样、低功耗ESP3212 位2 MSPS多通道、但线性度一般ATmega328P10 位15 kSPS简单易用MSP43012 位200 kSPS超低功耗独立 ADS111516 位860 SPSI2C 接口高精度九、总结单片机 ADC 是连接模拟世界与数字系统的桥梁。理解其工作原理主要是 SAR、关键参数分辨率、参考电压、采样率、DNL/INL、外设结构多路开关、采样保持、触发、DMA以及硬件和软件设计要点是嵌入式工程师的必备技能。实际使用中需要根据具体应用合理选择参考电压、配置采样时间、设计输入滤波电路并结合软件滤波和校准来提高测量精度。只有软硬件协同优化才能充分发挥 ADC 的性能。