STM32 ADC精度提升方法

STM32 ADC精度提升方法

  • Fang XS.
  • 1452512966@qq.com
  • 如果有错误,希望被指出,学习技术的路难免会磕磕绊绊
  • 量的积累引起质的变化

硬件方法

  1. 优化布局布线,尽量减小其他干扰
  2. 增加电源、Vref去耦电容
  3. 使用低通滤波器,或加磁珠
  4. 尽量减小电源的纹波,噪声; // STM32的ADC就是纯ADC,不带电源抑制设计
  5. 尽可能让输入信号的电平范围等于Vref+和Vref-的电平范围

软件方法

  1. 减小ADC输入时钟
  2. 使用较大采样周期
  3. 增加滤波算法,精度优先首选均值滤波
  4. 在初始化时使用ST自带的校准
  5. 在每次采集数据时使用Vrefint通道校准
  6. 手动校准
  7. 数字静默,采集时降CPU主频和其他可能影响ADC的时钟

使用Vrefint通道校准方法

以STM32F030C8T为例,规格书描述如下
在这里插入图片描述
这个值是在芯片出厂时,ST针对Vrefint通道进行校准的值,也就是用ADC采集VDDA=3.3V时得到的ADC值,存放在地址0x1FFF F7BA处,2字节大小;
结合这个校准值可以优化ADC转换计算方法:
通道x电压 = (通道xADC值 * 3.3 * VREFINT_CAL) / (通道VrefintADC值 * 4095);
每次ADC采集包含Vrefint通道,将每次采集都进行校准。
去除浮点数运算,DEMO代码如下:

#define VREFINT_CAL_ADDR ((uint16_t*) ((uint32_t) 0x1FFFF7BA))
// F0没有浮点运算单元,使用MV单位避免浮点运算
#define VREFINT_CAL_VOLTAGE_mV 3300 // Vrefint电压 (mV)
uint32_t CalibrateADC(uint32_t adc_value, uint32_t vrefint_adc) 
{ 
	uint32_t vrefint_cal = *VREFINT_CAL_ADDR; // 读取Vrefint校准值 
	uint32_t adc_chan_vol_mV = (adc_value * VREFINT_CAL_VOLTAGE_mV * vrefint_cal) / (vrefint_adc * 4095); 
	return adc_chan_vol_mV;
 }

ADC的常用测试评估方法

  1. 平均值
  • 代表ADC的测量中心值:反映ADC对这组固定电压的整体测量趋势。如果ADC理想且无偏差,平均值应接近电压的真实值。
  • 系统误差(偏移误差):若平均值与真实电压值存在差异,说明ADC可能存在零点偏移(如校准不准或硬件偏差)。
  1. 标准差
  • 测量噪声或随机误差:标准差衡量数据的离散程度,表示ADC的噪声水平或稳定性:
    • 标准差小:数据集中,ADC噪声低、重复性好。
    • 标准差大:数据分散,可能由电源噪声、信号干扰、ADC分辨率不足或电路设计问题导致。
  • 用于计算信噪比(SNR)和有效位数(ENOB)。
  1. 变异系数(CV)
  • CV = 标准差 / 平均值 * 100%
  • 通过将标准差归一化到平均值,提供相对波动性
  • 评估ADC在不同输入电压下的稳定性(例如:1V和5V输入的噪声比例)。
  • CV越小,说明ADC的测量值相对波动越小,稳定性越好。
  • 若CV接近ADC的最小分辨率(如LSB的百分比),可能达到硬件极限。
  • CV的倒数可近似反映SNR(如CV=1% => SNR≈100:1)。

注:

  1. SAR型ADC相较于其他ADC,容易受干扰影响;
  2. 看其他的文章,有的型号可能出现通道间串扰的问题,解决思路跟本文类似,还可以在2个通道采集之间插入一次接地通道的采集,原理是让电容有充分的时间进行充放电;

参考文档:
AN2834 如何在STM32微控制器中获得最佳ADC精度
AN3116 STM32的 ADC 模式及其应用
AN4073 使用 STM32F2xx 和 STM32F4xx 微控制器时如何提高 ADC测量精度
TI 计算ADC系统总误差
数字信号处理 科学家和工程师指南
TI ADC噪声分析与应用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值