1. 项目概述:ADC在嵌入式系统中的核心地位
ADC(模数转换器)作为嵌入式硬件与模拟世界的桥梁,其性能直接影响系统对物理量的感知精度。在STM32F103C8T6这类Cortex-M3内核芯片中,12位逐次逼近型ADC(SAR-ADC)凭借其平衡的速度与精度,成为工业控制、传感器采集等场景的首选方案。以智能温控系统为例,当NTC热敏电阻输出的模拟电压信号经过ADC转换后,才能被MCU的PID算法处理,这个过程中ADC的线性度、采样率将直接影响控温精度。
2. 深入SAR-ADC硬件原理
2.1 逐次逼近寄存器工作原理
SAR-ADC的核心是一个二进制搜索算法实现的DAC网络。当启动转换时,内部比较器会先检测输入电压是否大于1/2VREF(假设VREF=3.3V)。如果是,则保留最高有效位(MSB)为1,并继续比较1/4VREF位置;否则MSB置0,下一位比较3/4VREF。这个过程持续到最低有效位(LSB),形成12位数字输出。F103的ADC完成一次转换需要12个时钟周期(分辨率位数)+ 3个周期固定开销,因此当ADCCLK=14MHz时,理论最高采样率为1Msps。
2.2 STM32F103的ADC特性
该芯片内置3个ADC模块(ADC1/2/3),支持:
- 12位分辨率(实际ENOB约10.5位)
- 16个外部通道+2个内部通道(温度传感器、VREFINT)
- 单次/连续/扫描/间断四种模式
- 模拟看门狗功能
关键参数实测:在VDD=3.3V、室温25℃下,实测INL(积分非线性度)±2LSB,DNL(微分非线性度)±1LSB。建议工作时钟不超过14MHz以保证ENOB。
3. CubeMX工程配置详解
3.1 时钟树与ADC参数设置
- 在Clock Configuration中确保APB2时钟≥14MHz(ADC最大允许时钟)
- ADC预分频选择:若APB2=72MHz,选择PCLK2/6得到12MHz ADCCLK
- 配置ADC参数:
- Resolution: 12Bits
- Data Alignment: Right(便于直接读取DR寄存器)
- Scan Conversion Mode: Enabled(多通道必需)
- Continuou
