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

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

[复制链接]
STMCU-管管 发布时间:2020-11-9 13:39
, O# j7 m' w, D" b) y2 R
- a) A) w4 y9 Z& x) V0 Y: ~0 A

4 s& ^) B6 o- @% s/ v2 L- N& ]
0 ~% D+ M  m+ p! \( v3 Y/ N& y
问题% s; J2 `. R& n
  今天在使用 STM32F407 的 ADC 时遇到一个问题:ADC 的参考电压都是通过 Vref+ 引脚提供的并作为ADC转换器的基准电压(部分 MCU 没有 Vref+ 引脚)。当我们使用的 Vref+ 是直接取自用 VDD 电压时,当 VDD 电压波动比较大时或稳压性能比较差时,转换结果自然就不准确了!

. L3 n  a" s) y3 \4 H3 o6 L' `& s2 ]供电方案1 ^1 Q. t% h% [" y5 l
  MCU 的参考手册都会有一章节单独介绍 MCU 的电源管理,针对不同的 MCU(封装不同等)其外部电源如何连接也是有要求的,我们在 MCU 上一般都会发现如下引脚:

1 k* [! {5 H+ aVDD = 2.0 to 3.6 V: external power supply for I/Os and the internal regulator. Provided externally through VDD pins.
) U9 L$ q: W$ iVSSA, 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.' `$ h+ S2 v$ \' M
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.4 ^% T- ?/ {% n& S- u
VREF+: 正模拟参考电压输入(部分芯片没有个引脚)  r- ], T& s, Q# @0 k
下面以 STM32F1 和 STM32F2 的 MCU 比较来具体看看; M$ V. y( ]  n& |: i
供电架构如下图所示:+ }7 \7 }5 H9 _2 Q) e
21.png
7 Z4 Z2 `+ d3 J+ V3 y不同的供电所管理的供电域
4 `" y3 p: w. c+ S& E5 v 22.png . {. f9 u5 u: H: ?5 I
供电电压
6 t, c# A. q3 H: J8 L 23.png
% E; w  ]( S, ]7 Y5 p" ?
VCC: C=circuit 表示电路的意思, 即接入电路的电压
4 w# _1 R1 Q7 mVDD: D=device 表示器件的意思, 即器件内部的工作电压;5 v& z- v1 W1 U' B3 I* G0 V2 s8 j
VSS: S=series 表示公共连接的意思,通常指电路公共接地端电压9 T" Z0 V" }; B5 O' H* y
stm32 的 VDDA 和 VSSA 不能悬空,复位模块和RC振荡器需要 VDDA 和 VSSA。否则无法下载程序!) \9 W7 P! @/ A; X7 b) Z  }
电源引脚连接
; i/ K5 V4 |. D, S4 p- D% L; IVDD 引脚外接去藕电容连到外部稳压源
7 P: s% K% D6 `+ f一个最小值4.7uF、典型值10uF的钽电容或陶瓷电容) x9 e! h3 p- t; P) i
每个VDD引脚再接一个100nF的陶瓷电容7 N" P/ R8 a( E& _' ~( J  Y
VBAT引脚外接电池。若没有电池,推荐通过100nF的陶瓷电容连到VDD引脚( }( K4 y0 e$ @; Z/ a/ ^
VDDA引脚外接两个去藕电容6 m4 y9 Y0 q. ^! }6 W* q/ q, y
一个100nF的陶瓷电容
" y# m2 o  I* v! a' `一个1uF的钽电容或陶瓷电容
5 P# p" }- n* e- FVREF+引脚连到VDDA
: P2 A$ ~% J% {  u5 H6 i若有单独的参考稳压源连接
. w4 A5 c/ e) m" X" C% v2 H) F一个100nF和1uF的电容) Q2 Y# [* L$ m+ u# M+ C) x: Y
VCAP1 和 VCAP2 通常只各连接一个2.2uF的电容
9 S! P3 H% K! S特殊封装上,可外接1.2V电源来旁路内部主电压调节器! h# \, S1 g! y6 p/ N: y3 x6 E2 v' Y- \
24.png
! m  A3 y4 w8 s# aADC的参考电压  z, T+ H8 ~$ p$ _6 [3 s
  在部分MCU的封装中,会有单独的一个Vref引脚. l4 g% G6 F# n7 x+ N' w
25.png
+ f6 B" ~9 ^/ J' z我们可以把外部基准电压芯片(例如REF3133,输出的电压是标准的3.300V)连接到Vref引脚。一般100脚的STM32 MCU(如上图STM32F4)都有VREF引脚。; c- I: F9 q) N' U: L
  对于100脚以下的芯片,STM32没有把VREF引脚引出来,所以,我们只能把基准电压芯片连接到VDDA引脚。注意,STM32单片机上面有好多电源引脚,其中有若干VDD引脚,只有一个 VDDA 引脚,VDDA 引脚就是模拟供电引脚。不过,需要注意,VDDA的电压不是随便定义的。例如,STM32F051系列单片机就规定,VDDA必须要大于或者等于VDD才可以正常工作,所以这时候,最好是给单片机3.0V供电,再给VDDA采用一个3.3V的基准电压芯片供电。
4 `3 k" m! f7 r7 b 26.png
" N, M6 o- k. {2 \& F: ]2 [
内部参照电压9 y0 C, Q# f) L* k7 u  F" H
  以上两种方法都需要外加基准电压芯片,在实际应用中,往往是VDDA引脚和VDD引脚连在一起,都是由电源芯片供电。这个时候如果要提高ADC转换准确性该怎么办呢?3 O6 ]# H! X2 {6 f
  在每个MCU的内部,都有一个叫内部参照电压的东西。关于该部分的介绍,位于对应 MCU 的 数据手册 中(不同MCU的 数据手册 介绍有多又少,同样是STM32F0的 数据手册 介绍更为详细),如下图:' ]0 j5 N' C! O) ]+ C# C2 S
27.png
( O. B) a+ ?7 s8 Z4 T' U内部参考电压在芯片出厂时已经校准过精度了!且不同的MCU是有可能不同的!其厂内校准过程是在外部供3.3V电源,将采样内部参考的ADC值写入到固定的内存中去(如上地址,不同MCU具体位置可能不同)!而我们就可以利用这个来校准自己的ADC。; D1 u. T& e4 y0 I% R- T
  STM32的ADC内部都有一个参考电压引脚,可以通过配置,把这个脚连接到ADC输入引脚,是内部连接。然后再计算实际的VDDA值。MCU不同具体链接的ADC引脚也是不同的。下面是STM32F4芯片的参考手册的说明:, Z7 a+ i" u3 h/ {* y
28.png $ O6 t. ]3 U! H8 H4 G
这样我们就可以用ADC实际采样,得到VREFINT的采样值,然后使用上面的校准值进行计算即可!
/ j  ~2 u' S4 j) C9 T  关于使用内部参照电压的具体方法,只有在STM32F0x芯片的参考手册中才能找到,其他MCU的参考手册都是很简单的几句说明。5 X* `' H$ q# V& g  a
29.png - s) p; u+ ^" `6 e
更进一步,在计算其他通道的时候,我们就可以使用以上计算的 VDDA 来作为基准了!
+ f( Z3 C& X9 Q7 _$ x' t4 ~ 30.png ( B1 p5 N: {" q5 f
需要特殊注意的是,在不同系列的芯片中,以上是有区别的,例如以下是 STM32L476 系列的
9 C8 v. S/ A2 b4 y& A; Q 31.png
- G, Z4 x/ d/ n/ {- E
ADC转换时间2 }: m3 Z. b) v+ _0 }# x4 [
在使用上面的方法时,必须要特殊注意ADC转换时间。否则采样值将出现较大偏差!先看看每个通道的总转换时间公式:每个通道总的转换时间 = TSampling + Tconversion

9 d9 U% {  o$ U. wTSampling可配置:SMP@ADC_SMPRx,需要和外部电路的输入阻抗匹配(在对应的数据手册中会有详细说明)
6 p6 {4 w( C. o& u' q" m 32.png
" x- e4 X( d  H# k8 S* u3 d* HTconversion取决于转换精度:
RES@ADC_CR1,降低转换精度可提高转换速度, |: q8 L& H. E; a1 C6 {. Q2 W
33.png
' g) A" t( Q( C2 m8 N6 w# \: t1 PADC总转换时间为:Ttotal = (SMP + RES) * ADCCLK

8 Z  z) g* }7 K; A2 ?( Y1 Z! D6 _SMP:采样时间,需要和外部输入阻抗搭配4 D$ g9 ^- \0 s- p7 j1 ^
RES:转换精度,降低精度可提高速度. b( |6 j5 m8 s& K" e, M+ z# |3 z
ADCCLK:ADC模块工作时钟2 s# x8 w- @* }8 r; h5 ?: h
ADCCLK = APB2时钟分频(2,4,6,8)
3 N% G# f& f# G$ U& VADCCLK最大值还受限于工作电压( |6 x2 {* C! z- T9 r
VDDA=1.8~2.4V fADCmax = 15MHz$ v. s4 O. y" U' c2 |; C
VDDA=2.4~3.6V fADCmax = 30MHz
5 a  e: O  J! a, U/ z为什么要说ADC采样时间?因为上一节所讲的方法,对于采样时间是有限制的!!!
3 R5 Q1 v9 X6 `! P/ b9 \1 A
温度传感器8 G+ l8 ~( h4 Q( z* o
34.png
! R, \: M5 l2 ^Vbat4 v' g+ E3 t( @$ N% j7 L
35.png $ V" ?' \/ |, n8 o3 e3 B& G8 w
VREFINT
6 V! a8 k, a. |3 u0 _, Y* |, E 36.png
# O8 C4 N7 Z. Q4 Y' J' q; A关于采样时间需要和外部输入阻抗搭配,参看下图和对应的 数据手册9 c# F9 {" f! X; Z5 X# {
37.png
: p) h& l* u/ A; }: \; A% J
% S2 o& j% E( H) O6 w9 r1 v: j" p  N

8 a  a  {6 {( {( Z: G- l
收藏 2 评论0 发布时间:2020-11-9 13:39

举报

0个回答

所属标签

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