你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32供电系统及内部参照电压(VREFINT)使用及改善ADC...

[复制链接]
STMCU-管管 发布时间:2020-11-9 13:39
5 E6 ]. r0 L1 \1 S8 A2 [6 k7 U4 ?

# h2 k1 w6 P- k, o5 v
6 s8 C: ?* U8 A% Q, R

: F4 ^% G0 W1 ~: N) L5 ]# y+ D. P$ f问题: z: R6 d- L, i. P/ j
  今天在使用 STM32F407 的 ADC 时遇到一个问题:ADC 的参考电压都是通过 Vref+ 引脚提供的并作为ADC转换器的基准电压(部分 MCU 没有 Vref+ 引脚)。当我们使用的 Vref+ 是直接取自用 VDD 电压时,当 VDD 电压波动比较大时或稳压性能比较差时,转换结果自然就不准确了!
+ ~- X0 Q( L% [8 T9 i2 E: b- N4 K
供电方案
. [8 b7 |- Z5 l; n0 D1 U" {  MCU 的参考手册都会有一章节单独介绍 MCU 的电源管理,针对不同的 MCU(封装不同等)其外部电源如何连接也是有要求的,我们在 MCU 上一般都会发现如下引脚:
, {; C2 y- A! ^2 s
VDD = 2.0 to 3.6 V: external power supply for I/Os and the internal regulator. Provided externally through VDD pins.
# h$ u* |( u( N# B* Z5 v9 TVSSA, 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.
1 Q6 A' B0 c+ X  {" OVBAT = 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.
5 ^: m, Y6 f& h3 CVREF+: 正模拟参考电压输入(部分芯片没有个引脚)9 {) V2 Z1 W& u0 ]8 S0 M
下面以 STM32F1 和 STM32F2 的 MCU 比较来具体看看
) H9 e. f0 V) d3 V  r' f5 y9 ^供电架构如下图所示:; P4 b: z1 F* ?, Z& B" q
21.png
* u$ s+ y! _  s1 S  b不同的供电所管理的供电域! T1 Q- m3 j1 D; {" T, n% J
22.png
4 ]7 ~$ @# R" f; Y2 B  C供电电压0 I* r& `2 J' e" h. g7 a
23.png

, r( a7 L: P2 m3 j$ Y* I# AVCC: C=circuit 表示电路的意思, 即接入电路的电压% R0 {) {( y) @# [
VDD: D=device 表示器件的意思, 即器件内部的工作电压;) N+ z  @2 e) D5 y& s
VSS: S=series 表示公共连接的意思,通常指电路公共接地端电压
, k5 e  V  ^2 c1 O1 astm32 的 VDDA 和 VSSA 不能悬空,复位模块和RC振荡器需要 VDDA 和 VSSA。否则无法下载程序!
- k/ t, n- x" I' Z& F3 x电源引脚连接
; Z& n/ s( P. L1 f- @' d/ q2 d$ yVDD 引脚外接去藕电容连到外部稳压源
, b% k9 X5 i9 v* F一个最小值4.7uF、典型值10uF的钽电容或陶瓷电容4 p! C  y/ G! I3 G1 Z
每个VDD引脚再接一个100nF的陶瓷电容
* e( ]' B  m2 XVBAT引脚外接电池。若没有电池,推荐通过100nF的陶瓷电容连到VDD引脚) s: ^+ Y6 ?; F3 G6 M' O  L
VDDA引脚外接两个去藕电容
2 I; v5 W; m  `5 z) e一个100nF的陶瓷电容: S* D  ?- N' r3 ~/ d2 F8 M
一个1uF的钽电容或陶瓷电容8 W, A# t) @+ I% S; q! _
VREF+引脚连到VDDA
$ L- ^( J$ x3 o3 {若有单独的参考稳压源连接
4 Z  T; q3 ]9 T* c一个100nF和1uF的电容
4 U1 \# Q) Y) [$ rVCAP1 和 VCAP2 通常只各连接一个2.2uF的电容3 T- I( S8 P! y. p+ T
特殊封装上,可外接1.2V电源来旁路内部主电压调节器
- n! |9 B& j# s- r. o% x 24.png 6 T9 h& a, a7 F) p1 j% X
ADC的参考电压
2 q1 }/ Q. P; {6 K  在部分MCU的封装中,会有单独的一个Vref引脚$ y' A+ c8 D% v5 l8 P
25.png 8 U, X& U' g1 r& ]9 c# e
我们可以把外部基准电压芯片(例如REF3133,输出的电压是标准的3.300V)连接到Vref引脚。一般100脚的STM32 MCU(如上图STM32F4)都有VREF引脚。6 H; U8 ]1 y) u% `
  对于100脚以下的芯片,STM32没有把VREF引脚引出来,所以,我们只能把基准电压芯片连接到VDDA引脚。注意,STM32单片机上面有好多电源引脚,其中有若干VDD引脚,只有一个 VDDA 引脚,VDDA 引脚就是模拟供电引脚。不过,需要注意,VDDA的电压不是随便定义的。例如,STM32F051系列单片机就规定,VDDA必须要大于或者等于VDD才可以正常工作,所以这时候,最好是给单片机3.0V供电,再给VDDA采用一个3.3V的基准电压芯片供电。5 }- q2 p5 D5 W+ O5 i7 p4 j& H/ f6 j
26.png
2 S, T) |; g, X# z
内部参照电压( F' U: ?1 v6 v% F0 p9 E9 I
  以上两种方法都需要外加基准电压芯片,在实际应用中,往往是VDDA引脚和VDD引脚连在一起,都是由电源芯片供电。这个时候如果要提高ADC转换准确性该怎么办呢?* [* D% f3 r; X& a1 p: _
  在每个MCU的内部,都有一个叫内部参照电压的东西。关于该部分的介绍,位于对应 MCU 的 数据手册 中(不同MCU的 数据手册 介绍有多又少,同样是STM32F0的 数据手册 介绍更为详细),如下图:
6 s4 `. a, P0 ^$ L- Y% v" u0 \ 27.png
/ f: o4 f+ ^0 h% y# `内部参考电压在芯片出厂时已经校准过精度了!且不同的MCU是有可能不同的!其厂内校准过程是在外部供3.3V电源,将采样内部参考的ADC值写入到固定的内存中去(如上地址,不同MCU具体位置可能不同)!而我们就可以利用这个来校准自己的ADC。
. z- @* c; I3 q! O2 h9 p2 n  STM32的ADC内部都有一个参考电压引脚,可以通过配置,把这个脚连接到ADC输入引脚,是内部连接。然后再计算实际的VDDA值。MCU不同具体链接的ADC引脚也是不同的。下面是STM32F4芯片的参考手册的说明:+ F( o. X* e6 I, P
28.png " L8 v; A5 N7 z: o
这样我们就可以用ADC实际采样,得到VREFINT的采样值,然后使用上面的校准值进行计算即可!
7 m0 J) Q6 ~8 a9 u3 {8 }  关于使用内部参照电压的具体方法,只有在STM32F0x芯片的参考手册中才能找到,其他MCU的参考手册都是很简单的几句说明。" \& M) U1 x$ W1 b5 x; x
29.png ; ~) \* P' B$ `: |4 F2 j
更进一步,在计算其他通道的时候,我们就可以使用以上计算的 VDDA 来作为基准了!
" [6 a; w! q0 M4 y 30.png
( n* p- R7 w+ q需要特殊注意的是,在不同系列的芯片中,以上是有区别的,例如以下是 STM32L476 系列的8 |6 J6 D. U" ?- W* G% w
31.png

  Y( c3 j- S- o" g) F; WADC转换时间( y' L! y  E+ m% L& C* ?7 ]
在使用上面的方法时,必须要特殊注意ADC转换时间。否则采样值将出现较大偏差!先看看每个通道的总转换时间公式:每个通道总的转换时间 = TSampling + Tconversion
$ ?0 U! s" \9 e: X7 t
TSampling可配置:SMP@ADC_SMPRx,需要和外部电路的输入阻抗匹配(在对应的数据手册中会有详细说明)) N5 E: d2 r2 E& c* W, Z% u; x' i
32.png
/ k( |$ E& t. t7 S4 ~Tconversion取决于转换精度:
RES@ADC_CR1,降低转换精度可提高转换速度& j4 v1 o+ Q, y, ]/ K* G! D) J
33.png - P/ Q0 n7 z( i9 H9 A
ADC总转换时间为:Ttotal = (SMP + RES) * ADCCLK
7 ~. J6 ^& x, |2 s2 [# C
SMP:采样时间,需要和外部输入阻抗搭配
" k4 Y' b( o! P0 S' ]! LRES:转换精度,降低精度可提高速度
% v- }# ?" o+ \ADCCLK:ADC模块工作时钟
0 S6 I/ S' I" v$ m$ tADCCLK = APB2时钟分频(2,4,6,8)
- h* b% p5 c- J! U$ a" Q& p$ UADCCLK最大值还受限于工作电压# r- G0 D$ s# u* L8 ?3 E1 y
VDDA=1.8~2.4V fADCmax = 15MHz4 ?+ _, J! D. T) X
VDDA=2.4~3.6V fADCmax = 30MHz9 a6 a; B1 \* P! R1 b$ o0 E
为什么要说ADC采样时间?因为上一节所讲的方法,对于采样时间是有限制的!!!

" w( c: p* P( d( ?: w温度传感器
' A, m# ^6 X9 I" C' @ 34.png
6 K, }: E2 V: W" RVbat
# }, M+ R& |3 ^" V7 t 35.png
( s# r0 I+ Z" p- IVREFINT3 S# k  {/ y+ a  p* m
36.png - j9 I1 X) y. u5 U8 B/ E5 g
关于采样时间需要和外部输入阻抗搭配,参看下图和对应的 数据手册
! i) }" M1 v' r* q" q; F' R7 C/ } 37.png
& g2 q$ t8 k# r; j7 X

3 E- C6 d" l2 K& g
0 O# z' z% {' m) @6 U# O% m- C
收藏 2 评论0 发布时间:2020-11-9 13:39

举报

0个回答

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版