请选择 进入手机版 | 继续访问电脑版

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

STM32G071评测:PWR

[复制链接]
STM1024 发布时间:2019-1-18 16:57
本帖最后由 stm1024 于 2019-1-19 20:58 编辑 ( x$ X5 J' d! w9 W" t
* Q' W* ^  c9 M/ D, V; H
花了点时间走马观花的学习了一下STM32G0系列的电源管理,把要点拎出来和大家交流一下。
1 }; ^, N" |3 W. A; J4 _. ZG0提供了7种低功耗的方式,具有灵活的电源管理机制,有效降低了电源能耗,这7种低功耗方式分别是:
  `4 a$ N* @/ s  T& ]9 U
  • Low-power run(低功耗运行模式)
  • Sleep(睡眠模式)
  • Low-power sleep(低功耗睡眠模式)
  • Stop 0(停止模式0)
  • Stop 1(停止模式1)
  • Standby(待机模式)
  • Shutdown(关机模式)
    7 [/ {+ j( [# X) Q& E3 G4 Q
(如果翻译不对,还望指正)) _. m/ o0 A5 }5 u" }
G0的电源模型如下:. g# G! x7 Y4 |9 ~3 Z  B$ F
1.png

5 I9 p) V7 n2 P8 x& cVDD是主电源,向除VBAT供电之外的所有IO供电,包括Flash、复位、内部温度传感器和内部时钟源等,甚至还有待机电路(包括唤醒逻辑和独立看门狗)。同时VDD也是VDDA,向模拟量外设供电,VREF+是外部参考电压,为ADC或DAC提供参考电压。
! M6 p# y8 k) j5 \' {9 x/ a+ U. FVDD的电源经过稳压器后,就变成了VCore,这个是给内部的外设、Flash控制器、SRAM等供电。
( _, x# D9 R$ v" U. AVBAT是电池供电,这一部分是为备份域供电,备份域包括了RTC和备份寄存器等。
7 o/ z4 O( K+ `  k/ M# \5 @4 b  A3 z' m8 j4 R
0.正常运行模式Range1
3 b% y( v+ Q' J2 l  m* S. z这可能是绝大部分MCU所采用的模式:5 t! ?* A" {2 b) [& h* T
2.png
0 A3 r6 f2 q& B
在此模式下,且系统时钟为64MHz,所有外设都能被供电。
  p* w6 J6 e0 L* Y5 e) E$ P( N  Z0.正常运行模式Range2
$ ]3 [) B- f7 m5 s这个模式其实和正常运行模式没太多差别:2 H- v3 k3 g' c; a* j/ z
3.png
6 f7 G7 _) h( u$ @8 v
虽然差别不多,但是还是很显著的:此模式下,系统主频为16MHz,Flash不能被擦除或编程。 $ [5 D% i" {" o& d


; r7 w. @( H$ R$ I7 ?" Z, V2 F1. 低功耗运行模式
. C0 R  ^8 q* r1 w8 a2 ~) {- k3 l
4.png
9 M% M' o) [4 Q( o0 E6 ]
此模式下,主频被限制在2MHz,主稳压器被关闭,由低压稳压器供电,所有的外设可被供电,但是,不能通过PLL倍频(都2MHz了……)$ y0 o0 [9 E9 E+ D* V) v
# A  i7 Z; W$ R/ Q, R2 _# i" P! Z

2.睡眠模式
4 c- G2 @* \, h- k: j) [- I睡眠模式同样包括了Range1和Range2:9 `, J, `+ r' W& O0 W, k; A" I9 n
5.png

( i' D' p2 u& R# L' `/ c) `
' X" V( U3 T1 {) m
6.png

$ B8 M9 l& Z& N* k0 BRange1和Range2的主要区别与正常模式下Range1和Range2之间差别类似,即主频、Flash能否被擦除/编程。
4 N7 z+ n( b& S3 ^睡眠模式主要指的是ARM CortexM0+的内核进入Sleep了。
  }& L9 M6 @! x- M* `! X6 _

  b! q5 u. }) g3.低功耗睡眠模式
( Q1 o' ]' |: F! `( R, ~
低功耗睡眠模式.png

! q' n% ?9 i$ V) }/ B" X' \6 b此模式下,主频被限制在2MHz,ARM CortexM0+的内核进入Sleep,Flash也被断电,但外设都可以被供电。
$ i: o% u- A1 Z4 X9 _
* Q+ {4 p, k( s! L
4.停止模式00 }7 s+ c: V/ U# a
STOP0.png

1 O# j' a+ e2 n5 F以此模式为分界线,外设和时钟源已经不再是都可以全功能运行,因此也要留意能唤醒事件有哪些了。
0 O; d1 n  A1 Y) p- L- y
/ a; n# @7 U) [0 [1 A- s
5.停止模式1
. I2 H& p* w1 B
STOP1.png
7 }( ?+ l/ @. \4 e5 a
停止模式1和停止模式0很类似,但是稳压器用的是低压稳压器,虽然功耗比停止模式0低,但是唤醒时间也会长一些。
8 @* X7 @% J( P0 e+ O- N0 E

; z; O5 q7 R9 D# B% r6.待机模式5 G& S2 X$ a% |; D/ z3 q
STANDBY.png

* @% S. m& M5 n' y6 d6 N$ K4 M$ S6 m8 w: z- i# m# V
ssss.png

8 |; x% M8 z. d停止模式可以保持SRAM或不保持SRAM,不保持SRAM的话,SRAM的时钟就被关闭了,肯定功耗低。 . K, q, v: ^! I3 m

+ I+ e0 M# f0 T( h  C  d
7.关机模式1 Q! w, m: B' @
Shutdown.png
6 w+ _$ J- _9 p% `$ N
这个最省电了,所有外设全都没电了,内核,Flash、SRAM也没电,可以说,除了备份域,其他都没戏了,所以也只能靠备份域唤醒。
; g" M* z3 L# B: G
4 f& M( ]7 i1 w  g" D% O; ^$ o- N8 \' {
测试
/ g( k) x9 F1 I$ O+ s( N3 y7 O最后,talk is cheap,废话了这么多,直接上代码:
- o+ e; m9 m- M
  1. int main(void)
    / a% f3 D9 o4 i' s0 a  N) [
  2. {. P" z1 q2 U6 s: r3 g) I# t6 S
  3.   HAL_Init();1 ]+ \) y$ v; ~) E( h, v
  4.   SystemClock_Config();9 V* G- j2 F$ p$ d' Y7 E) O
  5.   __HAL_RCC_PWR_CLK_ENABLE();
    5 C2 X! T+ l. j" i
  6. 3 s, N7 n) V8 o3 ^- H; G
  7.   BSP_LED_Init(LED4);
    7 U, ~5 d' K4 Q( f6 y, x& |5 X: s  T- b8 ^
  8.     BSP_PB_Init(BUTTON_USER, BUTTON_MODE_EXTI);
    # ^2 M6 r" s' ^1 F& j$ T
  9.   __HAL_FLASH_PREFETCH_BUFFER_DISABLE();
    7 e1 C6 Z' `. B, I0 Y* t( R" F
  10.   RCC->IOPSMENR  = 0x00u;6 w$ }4 N2 ~2 H* j, f7 R
  11.   RCC->AHBSMENR  = 0x00u;8 ?8 }8 p' t- G
  12.   RCC->APBSMENR1 = 0x00u;
    ) M. @& e" ~4 R8 ^9 f
  13.   RCC->APBSMENR2 = 0x00u;/ b* Y( i0 D, R" ?3 b5 m& o
  14.   while (1)
    + {; S) Z! n( R3 C$ Z1 K
  15.   {1 D; f6 C1 x  }" W0 ~
  16.     HAL_Delay(5000);- s7 I  u& b, E8 s# x
  17.     HAL_SuspendTick();    2 I( P" ]. Q+ A5 |/ f6 c) i- `
  18.     HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON,PWR_STOPENTRY_WFI);4 {* j0 Z% Y7 _: f( D3 k
  19.     HAL_ResumeTick();
    . w# X$ [9 d% z/ m$ b
  20.     BSP_LED_Init(LED4);+ _! p0 k7 e* s' g5 N
  21.   }
    ( P$ C$ Q! P, _# V4 t
  22. }
复制代码
可以通过ST-Link Utility看效果,记得把实时更新打开:( G& ~% H: o' n& [/ _
33.png
5 O5 c5 t: K# K9 |# ]9 S0 O
进入了Halted模式,应该就是Stop模式了。(上面配图有误,更正一下). q# t5 r, z7 S' B4 _: I1 S! w
按一下蓝色小按钮,唤醒:/ s3 ]7 K' Z+ Z: Z6 Y4 u
66.png
6 I0 C7 E2 t, U# Z. V6 G( m
嗯,又跑起来了,灯也一闪一闪的了,不过似乎要比第一次慢(不信就把Reset按一下)?, Y& `" k) D2 _/ H) r: j0 ?, h
慢就对了,因为现在用的是低压稳压器,主频被限制在了16MHz。# Y+ B6 u% L6 m/ n: p1 C- `

/ V! b, r7 {. k- V2 |) I/ `, [祝大家周末愉快~
收藏 1 评论1 发布时间:2019-1-18 16:57

举报

1个回答
slotg 回答时间:2019-1-19 15:31:43
很不错的分享
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版