打印
[其他ST产品]

内部参照电压(VREFINT)使用及改善ADC参考电压

[复制链接]
2210|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
vivilyly|  楼主 | 2023-3-30 21:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
问题
  今天在使用 STM32F407 的 ADC 时遇到一个问题:ADC 的参考电压都是通过 Vref+ 引脚提供的并作为ADC转换器的基准电压(部分 MCU 没有 Vref+ 引脚)。当我们使用的 Vref+ 是直接取自用 VDD 电压时,当 VDD 电压波动比较大时或稳压性能比较差时,转换结果自然就不准确了!

供电方案
  MCU 的参考手册都会有一章节单独介绍 MCU 的电源管理,针对不同的 MCU(封装不同等)其外部电源如何连接也是有要求的,我们在 MCU 上一般都会发现如下引脚:
VDD = 2.0 to 3.6 V: external power supply for I/Os and the internal regulator. Provided externally through VDD pins.
VSSA, VDDA = 2.0 to 3.6 V: external analog power supplies for ADC, reset blocks, RCs and PLL (minimum voltage to be applied to VDDA is 2.4 V when the ADC is used). VDDA and VSSA must be connected to VDD and VSS, respectively.
VBAT = 1.8 to 3.6 V: power supply for RTC, external clock 32 kHz oscillator and backup registers (through power switch) when VDD is not present.
VREF+: 正模拟参考电压输入(部分芯片没有个引脚)
下面以 STM32F1 和 STM32F2 的 MCU 比较来具体看看
供电架构如下图所示:
不同的供电所管理的供电域
供电电压

VCC: C=circuit 表示电路的意思, 即接入电路的电压
VDD: D=device 表示器件的意思, 即器件内部的工作电压;
VSS: S=series 表示公共连接的意思,通常指电路公共接地端电压
stm32 的 VDDA 和 VSSA 不能悬空,复位模块和RC振荡器需要 VDDA 和 VSSA。否则无法下载程序!
电源引脚连接
VDD 引脚外接去藕电容连到外部稳压源
一个最小值4.7uF、典型值10uF的钽电容或陶瓷电容
每个VDD引脚再接一个100nF的陶瓷电容
VBAT引脚外接电池。若没有电池,推荐通过100nF的陶瓷电容连到VDD引脚
VDDA引脚外接两个去藕电容
一个100nF的陶瓷电容
一个1uF的钽电容或陶瓷电容
VREF+引脚连到VDDA
若有单独的参考稳压源连接
一个100nF和1uF的电容
VCAP1 和 VCAP2 通常只各连接一个2.2uF的电容
特殊封装上,可外接1.2V电源来旁路内部主电压调节器
ADC的参考电压
  在部分MCU的封装中,会有单独的一个Vref引脚
我们可以把外部基准电压芯片(例如REF3133,输出的电压是标准的3.300V)连接到Vref引脚。一般100脚的STM32 MCU(如上图STM32F4)都有VREF引脚。
  对于100脚以下的芯片,STM32没有把VREF引脚引出来,所以,我们只能把基准电压芯片连接到VDDA引脚。注意,STM32单片机上面有好多电源引脚,其中有若干VDD引脚,只有一个 VDDA 引脚,VDDA 引脚就是模拟供电引脚。不过,需要注意,VDDA的电压不是随便定义的。例如,STM32F051系列单片机就规定,VDDA必须要大于或者等于VDD才可以正常工作,所以这时候,最好是给单片机3.0V供电,再给VDDA采用一个3.3V的基准电压芯片供电。

内部参照电压
  以上两种方法都需要外加基准电压芯片,在实际应用中,往往是VDDA引脚和VDD引脚连在一起,都是由电源芯片供电。这个时候如果要提高ADC转换准确性该怎么办呢?
  在每个MCU的内部,都有一个叫内部参照电压的东西。关于该部分的介绍,位于对应 MCU 的 数据手册 中(不同MCU的 数据手册 介绍有多又少,同样是STM32F0的 数据手册 介绍更为详细),如下图:
内部参考电压在芯片出厂时已经校准过精度了!且不同的MCU是有可能不同的!其厂内校准过程是在外部供3.3V电源,将采样内部参考的ADC值写入到固定的内存中去(如上地址,不同MCU具体位置可能不同)!而我们就可以利用这个来校准自己的ADC。
  STM32的ADC内部都有一个参考电压引脚,可以通过配置,把这个脚连接到ADC输入引脚,是内部连接。然后再计算实际的VDDA值。MCU不同具体链接的ADC引脚也是不同的。下面是STM32F4芯片的参考手册的说明:
这样我们就可以用ADC实际采样,得到VREFINT的采样值,然后使用上面的校准值进行计算即可!
  关于使用内部参照电压的具体方法,只有在STM32F0x芯片的参考手册中才能找到,其他MCU的参考手册都是很简单的几句说明。
更进一步,在计算其他通道的时候,我们就可以使用以上计算的 VDDA 来作为基准了!
需要特殊注意的是,在不同系列的芯片中,以上是有区别的,例如以下是 STM32L476 系列的

ADC转换时间
在使用上面的方法时,必须要特殊注意ADC转换时间。否则采样值将出现较大偏差!先看看每个通道的总转换时间公式:每个通道总的转换时间 = TSampling + Tconversion
TSampling可配置:SMP@ADC_SMPRx,需要和外部电路的输入阻抗匹配(在对应的数据手册中会有详细说明)
Tconversion取决于转换精度:RES@ADC_CR1,降低转换精度可提高转换速度
ADC总转换时间为:Ttotal = (SMP + RES) * ADCCLK
SMP:采样时间,需要和外部输入阻抗搭配
RES:转换精度,降低精度可提高速度
ADCCLK:ADC模块工作时钟
ADCCLK = APB2时钟分频(2,4,6,8)
ADCCLK最大值还受限于工作电压
VDDA=1.8~2.4V fADCmax = 15MHz
VDDA=2.4~3.6V fADCmax = 30MHz
为什么要说ADC采样时间?因为上一节所讲的方法,对于采样时间是有限制的!!!
温度传感器
Vbat
VREFINT

关于采样时间需要和外部输入阻抗搭配,参看下图和对应的 数据手册

使用特权

评论回复
沙发
童雨竹| | 2024-2-5 08:18 | 只看该作者

如果防护与热设计欠佳

使用特权

评论回复
板凳
Wordsworth| | 2024-2-5 09:21 | 只看该作者

由于共模电流的同向性,会在线圈内产生同向的磁场而增大线圈的感抗

使用特权

评论回复
地板
Clyde011| | 2024-2-5 10:24 | 只看该作者

在板的边缘上照常制作整个电镀通孔。

使用特权

评论回复
5
公羊子丹| | 2024-2-5 11:17 | 只看该作者

缩合型灌封硅胶由于固化过程有体积收缩一般不使用在模块电源的灌封中

使用特权

评论回复
6
万图| | 2024-2-5 12:20 | 只看该作者

在交流电频率一定情况下,电感量越大,其对交流电阻碍能力越大

使用特权

评论回复
7
Uriah| | 2024-2-5 13:23 | 只看该作者

然后焊接到更大的PCB上

使用特权

评论回复
8
帛灿灿| | 2024-2-5 15:19 | 只看该作者

电路的结构类似于全桥式,只是把其中的两只开关管(T3、T4)换成了两只等值大电容C1、C2。

使用特权

评论回复
9
Bblythe| | 2024-2-5 16:22 | 只看该作者

通过对于PCB电路板边缘的孔或通孔做电镀石墨化

使用特权

评论回复
10
周半梅| | 2024-2-5 18:18 | 只看该作者

脉冲变压器磁能被积累的问题容易解决,

使用特权

评论回复
11
Pulitzer| | 2024-2-5 19:21 | 只看该作者

在PCB组装过程中通常使用两种类型的技术

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

86

主题

1697

帖子

1

粉丝