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

STM32F0系列ADC CH17用法

[复制链接]
刚声打火机 发布时间:2015-10-13 16:24
目前F0系列的MCU,我只用过F030和F051(F031)两者各有自己的Reference Manual 以及 DataSheet
: E1 G# f* W. y* x$ @/ T
4 f- S) t9 [3 K* a* `
8 a7 y" G5 T" x" M2 l8 x
我发现ST的文档还是比较坑的,就如何利用内部CH17通道ADC采样求得VCC电压,F030的参考手册里面并没有( Q0 _3 d; j& O% F8 h
解释得很清楚,网上的帖子也是一大堆,不过没有一个准确的,至少我没找到。7 [- g: e2 M! W

0 {4 T  T9 M2 U) G
4 {5 Y& r- K5 J: R- R
今天就这个问题,作一个笔记,方便以后查阅:* \. b+ Y! P- Y* J. Z. c
首先,我们翻开F030的DataSheet来看看(F030的DataSheet:DS9773)% @& o8 G3 H! l$ V
1.png
- O' a( I$ X1 Q& s
" U2 Y; f2 u% ?看看这段英文,大概的意思就是MCU有一个内部参考电压,是和ADC通道17相连的。ST公司在MCU" X5 w2 ]7 j) H' v: Y; H1 X
生产过程中,会在这样一个环境下对MCU作一个校准:  R* y9 w6 O4 @9 O) W
温度30度,为MCU加上较为精确的3.3V电压时,获取ADC CH17的AD值Vrefint_cal,并且把此AD值记录
6 N6 q6 H4 _( ?3 o3 J) n# r到MCU的内部存储器里面作为一个只读的数据,作为参考。此数据地址为0x1ffff7ba,长度2字节
0 w# v5 {$ {$ j2 W; _3 w& G9 ]& g& o6 i% v- y
然后呢?怎么用呢?datasheet就没下文了,好吧,那我们再去查查Reference Manual8 _! }" T8 Q6 t  I% D# U( Y9 X
找到STM32F030的[RM0360],找到ADC这一章,204页(我这个是Rev3的)/ S1 ]+ D0 |. a, `" J+ E" r
2.png
4 u4 b3 U9 U8 w/ \
7 \  S) X: [1 h- j1 V' G
我想说:然并卵!!!) F. b" {& o3 J
file:///C:/Users/Administrator/AppData/Local/YNote/data/qq64CFFFD5BCF5D79E15E658E5AFC24512/e77d702919e9404aafe723892f30752b/clipboard.png, _: B7 \" N! A1 S! J) U, I
/ m! Q$ y% f. v: e+ F4 p
看到这里我突然无语了,只讲了内部温度如何求得,居然没讲内部参考电压的用法!!!
+ k/ [6 Y6 P/ t: p) Q! b0 v5 L# I: o所以我说ST的文档坑呢。。。. n: V9 o. p  A
* u6 a1 {  o3 O! ?' U$ I; T

0 X, b+ X: p6 A+ s, U# }* b不过还好,我发现虽然这个RM0360里面没有提及VREFINT的用法,但是另一款MCU; z$ c# {9 ?  I2 d
STM32F051的参考手册里面有说到:' \4 D3 p4 _. X! T

4 h! w3 t( T1 V& f  U) f( {/ @打开[RM0091]
8 A5 ^3 y( X" tfile:///C:/Users/Administrator/AppData/Local/YNote/data/qq64CFFFD5BCF5D79E15E658E5AFC24512/b7f2c021c1b1452b8ee1cf39f729f6f9/clipboard.png
, G8 D3 K9 ]+ E9 m" A4 P& t3 O4 y 3.png 8 k# g+ x* C: G4 X, x

' S4 g$ V& z& k: U6 {& x终于找到了用法,这段英文大概的意思是这样的:
+ B4 f: E8 i* gVDDA提供电压给MCU(MCU能工作的前提条件),但是VDDA的值可能是波动的,或者我们不能知道
9 _, P$ b8 }* Q7 u# O: Y+ }9 U其精确值,那么内部的参考电压VREFINT和记录在MCU里的参考值会帮助我们求得当前VDDA的精确值
# {6 {6 O0 P5 v" E并且给了一个很简单的公式。2 ]( O% m/ n- C  V, x8 `
VREFINT_CAL 就是前面提到的生产时记录到MCU内部的一个数据4 e+ P4 l" N: L8 |' U
VREFINT_DATA 则为ADC CH17采集到的AD值6 M6 H4 F7 B6 y1 J! ?3 t% P

0 ]- m  c6 Q+ v5 I0 Z7 E! S1 h
% B+ ~8 g1 J: F8 l  n
自此,我们终于知道这个内部参考电压是怎么用的了,简单的讲,就是:6 ]' u/ U3 B& q& _0 _6 d6 m
当我们无法知道当前VDD的值到底是多少时,可以利用ADC CH17采样值
* }" {6 g, ~# A* I; E以及MCU内部的参考值去求得
- U! I8 A. Y( `$ C* y
8 d9 T1 u) H2 G: I
0 i+ L9 D; Z8 x
此方法,我已经做过实验了,F030和F051上都试过,并且应用于实际产品(估算电池电量),准确性还是挺高的。
6 E0 _: Y0 v: J8 b- C
( A4 A6 F  q; {9 m) b- U( J; z
9 u8 R4 d2 C; V8 p2 V( f
PS:
: \5 V# l6 S5 Z) J6 D        从公式来看,VDD越高,CH17的值越小;VDD越低,CH17的值反而越大
$ E0 {) X0 H1 n' W" o( _那么,内部的原理图到底是怎样的呢?很好奇。
3 Z) g; B6 a4 w4 q1 q
6 m( `% j/ M6 c9 S" j

6 e& }' e" k4 i! U( Q2 \% b6 O* i- m9 q. }6 ]' t
4 Z. ]+ _/ G4 g" V2 p
6 z4 P" \+ O3 O3 G" X2 B
+ q. W2 y4 M/ t$ w" p& ^; G

, E) }7 m# P9 a; W, Z1 r" p, Q5 x
. S1 U+ w" e3 F2 @, X  V( T! B% v
! b  m, x" k; H% P2 `6 C- C* N  m
8 ^& U4 l6 q& Q) u
( V- J6 \* p  J+ t1 U7 V  B! m: W
- b' m4 L* C3 p

3 N" H9 \( ~' z/ v3 _
' c5 b, M- _3 n0 b  q
# v; k$ M2 y+ n2 g% Z, D- ?
' i4 j& _# r; f; K* W# z
& h( Z$ ?' S6 a! V( b" c/ h
7 l4 P) t+ M* A9 K
8 b$ F5 b0 D* ]0 ?- ?2 Q# r/ y

$ D/ A! f$ j) y! u4 W% L+ E% N
, i" ?6 X' O9 O2 N

1 d4 T. b6 Q* }1 e

) C. w. P5 B: p  R1 L1 Y5 |( a6 m) n" d2 Q9 N
* Z  P- `3 S6 ]' ?( u( H
# b6 j% J7 M9 Y* w- Y* z
0 n. h+ A/ R* E" T9 c8 z7 ~
1 `6 S0 v. @; O; v& z
9 ~" W; I7 b1 Y/ C1 f! d

) d" I' C2 o9 \. C& s5 \  t

! j% z( j3 u) b4 [0 A9 V. S' v4 @4 W2 R

' ^- U9 Z( R* v2 k) l0 p9 Z, W$ W5 ?: K& w+ z' U7 d! _+ x, o

9 J' @5 g. O) n$ Z7 _
2 f3 T4 m' S: d$ G

5 o* W0 Q# \) l. z
/ @1 F" Y) E* }# A4 u  l' h
5 D; i6 o: c3 S

' M  t  {6 G+ a+ g3 p& w: X5 h
; a- v. M- C0 x1 J3 Z& e

! m9 F3 j& R8 i# M4 O# p* r/ i6 N) q
& k9 `7 c0 W- g0 l3 P& a2 b

& \5 d3 E' G/ G5 X2 ^7 g* b
8 B1 q# ^# P# V5 e
' [9 s* k2 p  j) a
$ @& h& g0 R7 S. [; t7 D6 L7 E5 m

" m' b% z+ ^0 B& R
赞 收藏 7 评论16 发布时间:2015-10-13 16:24

举报

16个回答
foxglove 回答时间:2015-10-13 17:15:29
准确性还是挺高
kingsings 回答时间:2015-10-14 00:18:11
按理说,电源电压变了,这时候量化值应该也会变,如果同比例减小,那么采到的数据应该不会变化。3 `# L5 y0 Y& t& @- K
就是不知道他的量化值是否由一个与电源无关的恒压参考源提供
disheng4688 回答时间:2015-10-14 17:02:55
学习  [9 M9 s2 d- l
! i. ]. n( g% g0 G" e
                     
STM32LEARN 回答时间:2015-10-14 07:49:38
学习了  
yubinwu_3004964 回答时间:2015-10-14 21:12:10
楼主的探索精神赞一个
埃斯提爱慕 回答时间:2015-10-15 10:28:53
提示: 作者被禁止或删除 内容自动屏蔽
yceast 回答时间:2015-10-15 10:43:39
楼主好人  最近内部测温测出来70多度 正在困扰
安臣 回答时间:2015-10-15 12:20:16
为毛我总是搞不定
ruilimeng 回答时间:2015-10-21 11:46:45
谢谢分享!
eshui 回答时间:2015-10-21 11:55:51
非常好的资料,非常感谢分享
wolfgang 回答时间:2016-3-1 17:31:29
这帖讲得透彻
追梦者11号 回答时间:2016-10-17 17:07:01
感谢分享
zbber 回答时间:2016-10-17 21:05:19
按理说,电源电压变了,这时候量化值应该也会变,如果同比例减小,那么采到的数据应该不会变化
C106工作室 回答时间:2017-8-17 16:16:27
问题是,,怎么读取这个  第17通道?需要打开什么吗?
12下一页

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版