1. STM32F1 系列 ADC 模块深度解析:从寄存器架构到工程实践
ADC(Analog-to-Digital Converter)是嵌入式系统中连接物理世界与数字处理的核心桥梁。在 STM32F1 系列微控制器中,ADC 并非一个简单的“电压读取器”,而是一个高度可配置、具备多级流水线、支持多种触发与数据管理策略的复杂外设子系统。其设计哲学深刻体现了 ARM Cortex-M3 架构下资源复用与实时性保障的平衡。理解其底层机制,远比调用几个 HAL 库函数更为关键——因为当项目需求超出标准例程(如多通道同步采样、低功耗连续监测、注入通道抢占等)时,寄存器级的掌控力直接决定项目成败。
1.1 ADC 的核心特性与硬件约束
STM32F1xx 大容量产品线(如 STM32F103ZET6)集成了三个独立的 ADC 模块:ADC1、ADC2 和 ADC3。这一设计并非冗余,而是为满足不同应用场景下的并行处理需求。三者共享部分模拟前端资源,但拥有各自独立的转换器、数据寄存器和控制逻辑。其关键参数并非孤立存在,而是相互制约,构成一个必须整体考量的工程约束集:
分辨率与精度:12 位分辨率是其标称能力,意味着理论上的量化等级为 $2^{12} = 4096$ 级。但这仅是理想值。实际有效位数(ENOB)受电源噪声、参考电压稳定性、PCB 布局及外部信号源阻抗影响。例如,在 VREF+ = 3.3V 时,LSB(最低有效位)电压为 $3.3V / 4096 \approx 0.805mV$。任何低于此值的电压变化都无法被分辨,这直接定义了系统的最小可检测信号变化量。