网站做支付宝支付接口,建设工程人员锁定网站,温州做网站哪家好,iview做的网站STM32 ADC精度提升方法
Fang XS.1452512966qq.com如果有错误#xff0c;希望被指出#xff0c;学习技术的路难免会磕磕绊绊量的积累引起质的变化
硬件方法
优化布局布线#xff0c;尽量减小其他干扰增加电源、Vref去耦电容使用低通滤波器#xff0c;或加磁珠使用DCDC时尽…STM32 ADC精度提升方法
Fang XS.1452512966qq.com如果有错误希望被指出学习技术的路难免会磕磕绊绊量的积累引起质的变化
硬件方法
优化布局布线尽量减小其他干扰增加电源、Vref去耦电容使用低通滤波器或加磁珠使用DCDC时尽量减小纹波使用LDO尽量减小噪声
软件方法
减小ADC输入时钟使用较大采样周期增加滤波算法精度优先首选均值滤波在初始化时使用ST自带的校准在每次采集数据时使用Vrefint通道校准手动校准对于没有FPU的MCU尽量避免浮点数运算数字静默采集时降CPU主频和其他可能影响ADC的时钟
使用Vrefint通道校准方法
以STM32F030C8T为例规格书描述如下 这个值是在芯片出厂时ST针对Vrefint通道进行校准的值也就是用ADC采集VDDA3.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))
#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;}注
SAR型ADC相较于其他ADC容易受干扰影响看其他的文章有的型号可能出现通道间串扰的问题解决思路跟本文类似海可以在2个通道采集之间插入一次接地通道的采集原理是让电容尽可能充分的放电