ADC转换不准确?启用内部参考电压缓冲器 (VREFBUF)

文章详细解释了STM32L476xx中VREFBUF的作用,包括作为ADC和DAC的电压参考,以及如何配置输出2.048V和2.5V的稳定电压。还介绍了VREF+和VDDA的连接规则及VREFBUF在不同模式下的行为。

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


本文主要使用VREFBUF开启内部参考电压(Vref+引脚未与VDDA键合时可以开启),选择内部电压输出的模式(它也可以配置作为输入模式,而后从外界提供一个稳定的电压源)输出2.048V、2.5V的参考电压供ADC使用。
注:前面叙述略繁琐,可直接跳至VREFBUF的使用部分查看,不理解的地方再向上查看,效率更高。

一、VREF+描述

1.VDDA(有时与VREF+键合)

VDDA= 1.62 V (adc /COMPs) / 1.8 V (dac / opamp) /2.4 V (VREFBUE)至3.6 V。VDDA是A/D转换器、D/A转换器、电压参考缓冲器、运算放大器和比较器的外部模拟电源。VDDA电压电平与VDD电压无关。在不使用这些外设时,最好将VDDA连接到VDD。
在这里插入图片描述
VDDA不同情况下电压范围:
在这里插入图片描述
VDDA供电电压可以不同于VDD。在启用VDDA提供的任何模拟外设(A/D转换器、D/A转换器、比较器、运算放大器、电压参考缓冲器)之前,必须检查VDDA的存在。

2.VREF- 与 VREF+

VREF+是ADC和DAC的输入参考电压。当启用时,它也是内部电压参考缓冲区的输出。

  • 当VDDA < 2v时,VREF+必须等于VDDA。
  • 当VDDA ≥ 2v时,VREF+必须在2v和VDDA之间。
  • 当ADC和DAC不活动时,VREF+可以接地。
  • VREF-必须始终等于VSSA。
    在这里插入图片描述
    VREF-和VREF+引脚并非在所有包上都可用。当包中不可用时,它们分别绑定到VSSA和VDDA。当VREF+与封装中的VDDA双键连接时,内部电压参考缓冲区不可用,必须保持禁用状态(请参阅相关设备数据表了解封装引脚描述)。
    单片机高于100引脚时,VREF+和VREF-单独引出,如下:
    在这里插入图片描述
    在有些不到100引脚的芯片上,VREF+在内部直接与VDDA连接,VREF-在内部直接与VSSA连接。单片机只引出VDDA、VSSA引脚,在这种情况下ADC的参考电压直接等同于电源电压。而电源电压一般供电3.3V,这也就是为什么我们常认为ADC参考电压为3.3V。
    在这里插入图片描述

3.VREF+作用

ADC和DAC参考电压为了确保在低压输入和输出上有更好的精度,用户可以在VREF+上连接一个低于VDDA的单独参考电压——VREF+是模拟输入(ADC)或输出(DAC)信号的最高电压,用满量程值表示。
VREF+为ADC的参考电压提供引脚。
在这里插入图片描述
VREF+既可以由外部参考电压提供,也可以由内部缓冲电压(VREFBUF)提供。

内部电压参考缓冲区支持两个输出电压,它们在VREFBUF_CSR寄存器中配置VRS位:

  • VREF+约2.048 V。要求VDDA大于等于2.4 V。
  • VREF+约2.5 V。这要求VDDA等于或高于2.8 V。

为什么不直接连接电源电压,而要重新在内部或外部给予参考电压?
在这种情况下,参考电压不容易受板子上其他负载影响,而导致的参考电压不稳定。
简单来说,就是提供一个更稳定的参考电压。

二、VREFBUF(电压参考缓存器)

1.简介

STM32L476xx器件嵌入了一个电压参考缓冲器,可以作为ADC、DAC的电压参考,也可以通过VREF+引脚作为外部元件的电压参考。
当内部参考电压缓冲器关闭时,可以通过VREF+引脚提供外部参考电压。
在某些封装上,VREF+引脚与VDDA双键合。在这些封装中,内部电压参考缓冲器不可用。
在这里插入图片描述

2.功能描述

内部参考电压通过VREFBUF控制和状态寄存器(VREFBUF_CSR)中设置ENVR位来启用。
内部电压参考缓冲区支持两个输出电压,它们在VREFBUF_CSR寄存器中配置VRS位:
· VRS=0:2.048 V
· VRS=1:2.5 V

内部基准电压也可以通过VREF+引脚向外部元件提供电压。
VREFBUF特性如下:
在这里插入图片描述
内部电压基准可以配置在四种不同的模式,取决于ENVR和HIZ位配置。这些模式如下表所示:
在这里插入图片描述
通过设置ENVR位并清除VREFBUF_CSR寄存器中的HIZ位使能VREFBUF后,用户必须等待VRR位设置,即电压参考输出达到预期值。

3.VREFBUF 修边

对于VRS = 1设置,VREFBUF输出电压由st进行出厂校准校准数据在复位时自动加载到TRIM寄存器。
对于VRS = 0设置,没有校准数据。用户可以减少输出电压通过改变TRIM寄存器位。

三、VREFBUF寄存器

VREFBUF由VREFBUF_CSR和VREFBUF_CSR控制。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

注:不同低功耗模式下的VREFBUF

  1. ADCx (x=1,2,3),温度传感器和VREFBUF缓冲器在停止0模式期间会消耗功率,除非在进入该模式之前将其禁用。
  2. ADCx, OPAMPx, DAC_CHx,温度传感器和VREFBUE缓冲区可以消耗除非它们在进入该模式之前被禁用,否则在停止2模式期间将无法使用电源。

四、VREFBUF的使用

示例:配置启用内部参考电压,并且输出2.048V。
注:比较偏底层的设置,STM32CubeMX上未找到直接配置的地方,但可以在生成代码中进行修改(有了解直接STM32CubeMX上配置的可在【评论区】补充)
1.在生成的main函数中找到HAL_Init();(Ctrl+F12跳转)。
2.在跳转的HAL_Init(void)函数中找到HAL_MspInit();(初始化底层硬件的函数),再Ctrl+F12跳转查找。
3…在跳转的void HAL_MspInit(void)函数中可以找到VREFBUF的配置:

// HAL_SYSCFG_VREFBUF_VoltageScalingConfig(SYSCFG_VREFBUF_VOLTAGE_SCALE1);//配置内部参考电压为2.5V输出
HAL_SYSCFG_VREFBUF_VoltageScalingConfig(SYSCFG_VREFBUF_VOLTAGE_SCALE0);//配置内部参考电压为2.048V输出
HAL_SYSCFG_EnableVREFBUF();//使能内部电压参考缓冲
/**Configure the internal voltage reference buffer high impedance mode */
HAL_SYSCFG_VREFBUF_HighImpedanceConfig(SYSCFG_VREFBUF_HIGH_IMPEDANCE_DISABLE);

五、总结

本文主要使用VREFBUF开启内部参考电压(Vref+引脚未与VDDA键合时可以开启),选择内部电压输出的模式(它也可以配置作为输入模式,而后从外界提供一个稳定的电压源)输出2.048V、2.5V的参考电压供ADC使用。
使ADC转换准确的方式不止这一种,也可通过内部VREFINT进行测量校准ADC的参考电压实际是多少,而使测量更准确。放在后面的文章进行说明。

### STM32 低温环境下 ADC 测量准的解决方案 #### 温度对ADC性能的影响 温度变化会影响STM32内部模拟电路的工作特性,特别是在极端条件下。当环境温度降低时,ADC转换精度可能会受到影响,表现为测量值偏离实际值以及读数稳定等问题[^1]。 #### 提高ADC稳定性措施 为了提高在低溫環境下的測量準確性和穩定性,可以采取以下几种方法: - **启用内部参考电压缓冲器** 通过开启内建于芯片中的VrefBUF(Reference Buffer),能够有效减少外部干扰因素对于基准源所带来的影响,从而提升整体系统的信噪比(SNR),进而改善ADC采样的准确性。 - **增加样本数量并求平均** 利用多次取样再计算均值得方式来平滑随机噪声引起的误差波动;这种方法虽然能完全消除系统性的偏移错误,但对于抑制短期内的起伏非常有用。 ```c uint32_t sum = 0; for (int i=0; i<NUM_SAMPLES; ++i){ HAL_ADC_Start(&hadc); HAL_ADC_PollForConversion(&hadc, HAL_MAX_DELAY); sum += HAL_ADC_GetValue(&hadc); } average_value = sum / NUM_SAMPLES; ``` - **校准ADC输入通道** 定期执行软件自动零位/满刻度调整操作,即所谓的Self-Calibration功能,这有助于补偿由于时间和温度漂移造成的长期缓慢改变的趋势。 - **优化硬件设计** 确保PCB布局合理,尤其是电源层和地线的设计要尽可能短而宽,以减小阻抗。同时,在靠近MCU的位置放置去耦电容,并选用具有良好热稳定特性的元件,如薄膜电阻等材料制作分压网络,这些都有助于维持稳定的供电条件和支持更精确的数据采集过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值