48脚STM32内部基准电压校准ADC的一些心得记录

STM32的48脚的单片机因为没有Vref+,Vref-,所以我们使用一些高精度参考电压芯片来提高ADC的精度很不方便。这里还有一种方法可以参考下.
STM32内部有一个专门用于校准的稳压器VREFINT,,它由外部的VSSA供电,他的电压一般为1.2V左右。 ADC17通道用于检测这个基准电压,在每颗芯片出厂时 ,ST公司会给芯片的VSSA和VDDA加上一个高精度的3v电压, 然后读出此时的ADC17通道的值存放在芯片内部;我们可以利用这个值精确的算出外部VSSA的电压,然后进一步算出外部ADC的精确电压.

注意:要获得精确的电压还要注意ADC的取样时间要足够长,并且需要启动校准

实验过程:(我的VDDA和VDD是连接 在一起的大约3.2V左右)
1.读取ST在标准3v外加电压条件下的内部ADC基准电压采样值

我用的是STM32L051单片机,通过查询编程手册,我知道了内部基准电压存放在0x1FF80078这个地址.(不同的芯片存放地址可能不同)
定义一个变量
__IO uint16_t VREFINT_CAL=0;
VREFINT_CAL=*(__IO uint16_t *)(0x1FF80078); //得到一个16进制的
注意;这里需要地址对其,否则会进入硬件错误!!

我这里VREFINT_CAL读出来的值是0x65D,

2.读取自己的板子当前电压条件下的内部ADC基准电压采样值**

//第一步开启校准,这一步非常重要,如果不开可能误差较大
HAL_ADCEx_Calibration_Start(&hadc, ADC_SINGLE_ENDED);
//开启ADC转换
HAL_ADC_Start(&hadc);
//等待转换完成
if(HAL_ADC_PollForConversion(&hadc, 200)== HAL_OK )
{
//获取在当前供电条件下的ADC采样值,我的VDDA和VDD是连接
// 在一起的大约3.2V左右
VREF_ADC1_17=HAL_ADC_GetValue(&hadc);
}

3.通过芯片手册提高的公式进行转换

VDDA=3VREFINT_CAL1000/VREF_ADC1_17; //因为单片机不好处理浮点型,我就*1000扩大了1000倍

到这里你的板子的VDDA就精确的算出来了. 我实验单片机测得的电压和万用表测试结果相差0.01,已经非常精准了!!

知道了精确的VDDA那么外部ADC电压就简单了,这里不再赘述

注意:检测ADC电压时检测时间一定要够长,外部ADC管脚的分压电阻不要太大,因为ADC还是需要一一定量电流的,而且开启校准.

如下:我采用时间选择最长,更加准确
hadc.Init.SamplingTime = ADC_SAMPLETIME_160CYCLES_5;

  • 19
    点赞
  • 92
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: STM32F030系列微控制器中的ADC模块使用内部基准电压作为参考电压来进行模数转换。其内部基准电压分为两个不同的值: 1. ADC1和ADC2通道的内部参考电压为1.2伏特。 当我们想使用ADC1或ADC2通道时,可以选择将内部参考电压设置为1.2伏特。这个内部参考电压可以提供较高的精度,适用于需要更精确模数转换的应用。 2. ADC3和ADC4通道的内部参考电压为2.56伏特。 当我们想使用ADC3或ADC4通道时,可以选择将内部参考电压设置为2.56伏特。这个内部参考电压可以提供更大的范围,适用于需要更大电压测量范围的应用。 在使用这些内部基准电压之前,我们需要通过设置寄存器来选择要使用的内部参考电压值。然后,在进行模数转换之前,ADC模块会使用所选的内部参考电压对输入信号进行校准和转换。 需要注意的是,使用内部基准电压进行ADC转换时,我们应该了解和考虑其精度和范围的限制。对于一些特殊应用或需要更高精度的情况,我们还可以选择使用外部参考电压来代替内部基准电压。 ### 回答2: STM32F030系列微控制器中的ADC(模数转换器)具有内部基准电压供参考和校准使用。 该系列MCU中的ADC可以选择多个基准电压源来进行参考电压。其中一个选择是内部基准电压源,其电压值为1.2V。这个内部基准电压源可以用作单端或差分模式下的参考电压。 使用内部基准电压源时,可以通过设置ADC控制寄存器(ADC_CR)的VBATEN位来启用它。此时,所选择的参考电压将会是内部基准电压源。 当ADC使用内部基准电压源时,需要在进行ADC转换之前先对其进行校准校准步骤包括测量内部基准电压源的实际电压,并将此测量值与理论值进行比较。然后,通过调整ADC校准参数来修正测量误差,以便确保精确的ADC转换。 可以通过设置ADC_CR寄存器的ADCAL位来启动自动校准。在自动校准完成之前,ADCRDY标志位将会保持为低电平。一旦校准完成,ADCRDY标志位将会置位,表示ADC已经准备好进行转换。 总之,在STM32F030系列微控制器中,内部基准电压源可以作为ADC的参考电压供电,并且需要在使用之前对其进行校准。这样可以确保ADC的精确度和准确性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值