STM32 ADC采样不准怎么办

本文详细介绍了在使用STM32L011的ADC时遇到的精度问题及解决方法。通过利用内部参考电压进行补偿计算,可以有效消除电源波动对ADC精度的影响,实现更准确的采样值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在使用STM32L011的ADC时,发现ADC采样值极其不准确。经过查找资料,和反复测试,总算摸出点门道。

如将VDDA接到VDD,那么电源的波动会极大的影响ADC精度。
不过使用内部参考电压可以计算实际的VDDA电压。
在这里插入图片描述
说明:
VREFINT_CAL:芯片出厂时固化在存储器中的。使用时需要通过软件读取。
VREFINT_DATA:ADC读取VREFINT(内部参考电压通道ch17)得到的值,每次采样序列,将ch17一并采集,用来后续的AD值补偿计算。

如何读取VREFINT_CAL?

首先,找到芯片的datasheet,是所使用的那款芯片的数据手册,因为同一系列的不同芯片,可能存在区别。例如,我需要找到的datasheet标题是这个

在这里插入图片描述

搜索:VREFINT_CAL

在这里插入图片描述
得到VREFINT_CAL的地址后,使用语句

#define VREF_CAL                         *(__IO uint16_t *)(0x1FF80078) 

然后data1 = VREF_CAL;就可以了。

怎样计算得到一个与电源电压无关的绝对精确的AD值?

在这里插入图片描述
使用这个公式就可以了。
说明:
VREFINT_CAL:使用前述的读取语句data1 = VREF_CAL;从芯片存储器中读出;
ADC_DATAx:你需要测量的通道,使用ADC读出;
VREFINT_DATA:前述,内部参考电压通道(ch17)读出的值;
full_SCALE:上面已经解释很好了。取值2^n-1,n是分辨率。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值