1. ADC模块结构解析:从逐次逼近原理到寄存器级实现
在嵌入式系统开发中,模数转换器(ADC)是连接模拟世界与数字世界的桥梁。STM32系列MCU集成的ADC模块并非简单的“黑箱”,其内部结构设计深刻反映了采样-保持、时序控制与多任务调度等核心工程思想。理解其结构框图,是编写稳定、可预测、可复用ADC驱动代码的前提。本节将完全脱离视频语境,以工程师视角,基于STM32F103系列数据手册与参考手册,对ADC1/ADC2模块的硬件架构进行逐层解构。所有分析均指向一个目标:当我们在代码中调用HAL_ADC_Start()或配置ADC_SQR1寄存器时,底层硬件究竟在执行什么动作?
1.1 逐次逼近型ADC(SAR ADC)的核心机理
STM32F103所采用的ADC本质上是12位逐次逼近型(Successive Approximation Register, SAR)转换器。其工作原理并非对输入电压进行连续积分或并行比较,而是通过一个精密的“二分查找”过程,在固定周期内完成一次转换。这一过程依赖于三个关键物理单元:采样保持电路(S/H)、DAC与比较器、以及控制逻辑。
采样保持电路是整个流程的起点,其功能可形象地类比为一个“电子天平托盘”。当采样开关(通常由MOSFET实现)闭合时,输入模拟信号Vin通过一个有限阻抗(由外部RC网络与内部开关导通电阻共同决定)对采样电容Csh进行充电。根据RC电路充放电理论,电容两端电压Vc(t) = Vin × (1 - e^(-t/RC))。为确保采样精度,必须保证采样时间tsample足够长,使Vc(t)与Vin的误差小于1/2 LS