STM32 SAR ADC工作原理与优化实践

张开发
2026/4/12 20:20:38 15 分钟阅读

分享文章

STM32 SAR ADC工作原理与优化实践
1. SAR ADC内部结构解析STM32微控制器内置的ADC采用SARSuccessive Approximation Register逐次逼近寄存器架构这是一种在嵌入式系统中广泛使用的中等精度、中等速度的ADC类型。其核心是一个由精密电容阵列构成的DAC数模转换器通过二分搜索算法逐步逼近输入电压值。1.1 电容阵列工作原理SAR ADC的核心是一个二进制加权的电容阵列每个电容的容值按2的幂次方递增。以10位ADC为例其典型结构包含1个MSB电容512C1个次MSB电容256C依此类推直到1个LSB电容1C1个额外的哑元电容1C用于匹配这种设计使得总电容值为1024C通过开关切换可以实现从0到VREF的电压分压。电容阵列的匹配精度直接决定了ADC的线性度现代工艺通常可以做到0.1%以内的匹配精度。1.2 采样保持阶段详解在采样阶段Sampling Phase所有电容的下极板通过开关Sa连接到输入引脚VIN开关Sb闭合将比较器输入端虚短到地此时所有电容被充电至VIN电压典型采样时间需要至少5个RC时间常数τRC其中R为开关导通电阻C为总电容值关键提示采样时间不足会导致信号未完全建立引入非线性误差。STM32的ADC时钟需根据采样时间要求合理配置。2. 转换过程逐步拆解2.1 保持阶段操作进入保持阶段Hold Phase后开关Sb断开比较器输入端形成高阻抗节点开关Sa从VIN切换到VREF所有电容的下极板切换到GND此时比较器输入端电压变为-VIN根据电荷守恒原理这个阶段的关键是保持电荷不泄露因此采用低漏电的MOS开关漏电流1pA比较器输入阻抗需1GΩPCB布局要最小化寄生电容2.2 逐次逼近流程以10位ADC为例完整转换需要10个时钟周期MSB判定周期最大电容512C切换到VREF比较器比较(-VIN)与(-VREF/2)若VIN VREF/2MSB1保持该电容连接否则MSB0切回GND后续位判定下一个电容256C切换到VREF比较电压根据前次结果选择若前位为1比较(-VIN)与(-3VREF/4)若前位为0比较(-VIN)与(-VREF/4)重复此过程直到LSB最终编码所有开关状态构成二进制输出通过温度计码转换提高可靠性实测技巧在噪声环境中建议牺牲1位分辨率换取更好的稳定性。例如12位ADC只使用11位有效位。3. 关键设计考量因素3.1 参考电压选择VREF的稳定性直接影响转换精度建议使用专用参考电压芯片如REF5025旁路电容需靠近ADC引脚10μF钽电容0.1μF陶瓷电容组合走线宽度≥15mil避免与其他信号并行3.2 时钟配置要点SAR ADC对时钟抖动(Jitter)敏感时钟抖动应1/(2π×fADC×2^(N1))对于1MHz采样率的12位ADC要求抖动12ps建议使用PLL倍频而非直接使用外部时钟3.3 输入信号调理前端电路设计规范源阻抗应1kΩ使用运放缓冲添加RC抗混叠滤波器fc0.5×fs避免输入超过VREF0.3V可能闩锁4. 常见问题排查指南4.1 转换值跳动大可能原因及解决方案电源噪声测量AVDD纹波应10mVpp增加LC滤波如22μH10μF地回路问题使用星型接地数字地与模拟地单点连接采样时间不足计算公式Tsmp ≥ (RsRin)×(CpinCsh)×9其中Csh为采样保持电容STM32约4pF4.2 线性度不达标改善措施校准偏移误差HAL_ADCEx_Calibration_Start(hadc1, ADC_SINGLE_ENDED);避免输入信号超过VDDA降低采样速率高精度模式4.3 通道间串扰优化方案未使用的通道接地相邻通道采样间隔加入1μs延迟软件上采用中值滤波算法5. 实战优化技巧5.1 过采样技术通过4×过采样可增加1位有效分辨率采集4个样本求平均需满足输入信号有至少1LSB的噪声代码实现uint32_t sum 0; for(int i0; i4; i){ HAL_ADC_Start(hadc1); sum HAL_ADC_GetValue(hadc1); } uint16_t result sum 2; // 除以45.2 参考电压缓冲当使用高阻抗参考源时添加运放缓冲器如OPA350配置为单位增益跟随器布局时靠近ADC的VREF引脚5.3 温度补偿精度要求高时需考虑测量芯片温度内置温度传感器建立温度-误差查找表实时补偿算法float compensate(uint16_t raw, float temp){ return raw * (1.0 0.0005*(temp-25.0)); }我在多个工业项目中验证发现STM32的ADC在适当配置下可以达到0.1%的相对精度。关键是要处理好参考电压稳定性和信号链阻抗匹配必要时可以采用外部ADC芯片如ADS1115获得更高性能。

更多文章