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

STM32G071评测:PWR

[复制链接]
STM1024 发布时间:2019-1-18 16:57
本帖最后由 stm1024 于 2019-1-19 20:58 编辑
$ u7 e5 B' o4 C. }- H- s& A
, }2 Y4 u2 g& d1 ]$ ]/ }花了点时间走马观花的学习了一下STM32G0系列的电源管理,把要点拎出来和大家交流一下。" T! e) o- i+ d/ ~6 e
G0提供了7种低功耗的方式,具有灵活的电源管理机制,有效降低了电源能耗,这7种低功耗方式分别是:
6 j: h6 _. v# G
  • Low-power run(低功耗运行模式)
  • Sleep(睡眠模式)
  • Low-power sleep(低功耗睡眠模式)
  • Stop 0(停止模式0)
  • Stop 1(停止模式1)
  • Standby(待机模式)
  • Shutdown(关机模式)
    * Z2 H+ i, \+ e
(如果翻译不对,还望指正)
0 V' |/ A# u- Y3 Z, j6 Z: ~G0的电源模型如下:7 U+ L. Q; C. i+ D, `5 w
1.png

9 V7 `) v  A, r$ S9 q* M" d' cVDD是主电源,向除VBAT供电之外的所有IO供电,包括Flash、复位、内部温度传感器和内部时钟源等,甚至还有待机电路(包括唤醒逻辑和独立看门狗)。同时VDD也是VDDA,向模拟量外设供电,VREF+是外部参考电压,为ADC或DAC提供参考电压。
' Q0 N4 A. v; j  kVDD的电源经过稳压器后,就变成了VCore,这个是给内部的外设、Flash控制器、SRAM等供电。. r6 _. x% t+ l: s( ^( e
VBAT是电池供电,这一部分是为备份域供电,备份域包括了RTC和备份寄存器等。4 x2 N- ^0 i  C
' t$ c: ~) P: a: Y
0.正常运行模式Range1& \: p/ }& e2 ?
这可能是绝大部分MCU所采用的模式:: ^+ [6 s0 a% W" j0 o
2.png
+ V: g/ T. I& l
在此模式下,且系统时钟为64MHz,所有外设都能被供电。/ o# E9 s' S8 G2 j7 ~: ]
0.正常运行模式Range2- X% o0 w( `$ s# O& ]. {
这个模式其实和正常运行模式没太多差别:+ L  x3 h+ C8 G
3.png

% n' v9 p1 n/ e虽然差别不多,但是还是很显著的:此模式下,系统主频为16MHz,Flash不能被擦除或编程。
. `+ b1 r- x$ ~
5 |  q% v" Y# k8 C. Z& [0 r
1. 低功耗运行模式
' g. `! L4 Z$ p
4.png

. I1 n' e9 v2 [, O+ N  B: g此模式下,主频被限制在2MHz,主稳压器被关闭,由低压稳压器供电,所有的外设可被供电,但是,不能通过PLL倍频(都2MHz了……)! p3 |! C9 u2 d' w  i/ Q& O4 V( Z
" c+ y  t9 _7 U7 i3 L5 {

2.睡眠模式
- u3 |7 n3 D% @/ o% z睡眠模式同样包括了Range1和Range2:
( q& {# ]6 z  |
5.png
( U+ ?7 N) F, ~* m/ ^; M; J
/ i8 Y% g9 l# W4 A/ y+ l$ ?
6.png
$ i2 K' i) m, C4 D! p" ~- F
Range1和Range2的主要区别与正常模式下Range1和Range2之间差别类似,即主频、Flash能否被擦除/编程。# S  G. T$ }4 a# Q! U
睡眠模式主要指的是ARM CortexM0+的内核进入Sleep了。; i4 k5 a+ x/ i  F+ g

* O/ f* x/ I1 S1 }. b
3.低功耗睡眠模式
; K5 Z# ?6 p- k/ I4 n; e
低功耗睡眠模式.png

* m5 Q% @. r6 l3 @/ n3 m! M, a此模式下,主频被限制在2MHz,ARM CortexM0+的内核进入Sleep,Flash也被断电,但外设都可以被供电。
+ {) V) V& b2 M0 t  m( I ' T1 `' C# U- [- i3 h

4.停止模式0
! m( a) }# z* |- G4 W
STOP0.png
3 i' z8 x3 z5 N. M4 v& a; y  z
以此模式为分界线,外设和时钟源已经不再是都可以全功能运行,因此也要留意能唤醒事件有哪些了。 % ], z. q2 |3 v  H* r; t9 q; \8 ?9 C

6 A& y( A  \9 W9 g/ s6 X1 o* k3 R
5.停止模式1
- z- U( k6 G8 ]4 ~' E
STOP1.png

$ q& H9 a# |2 v  a, Z+ \/ B停止模式1和停止模式0很类似,但是稳压器用的是低压稳压器,虽然功耗比停止模式0低,但是唤醒时间也会长一些。
& L# j# X! _9 r8 F/ t
9 G9 U. K" g! B( _' t
6.待机模式+ [# M0 J, ^7 b* \
STANDBY.png
+ P% B! m! X& D/ W) t9 A5 y, t

, ?+ }$ a1 V) _$ K. L, A/ Z
ssss.png

2 |+ s( ~. Q0 N8 ^停止模式可以保持SRAM或不保持SRAM,不保持SRAM的话,SRAM的时钟就被关闭了,肯定功耗低。 1 ~% o" i1 N' S1 Q4 V6 X


  R9 m; c+ ^! F5 B5 W7.关机模式
4 ], y; m1 Y% H: B$ p
Shutdown.png

- s: e2 |2 q6 N这个最省电了,所有外设全都没电了,内核,Flash、SRAM也没电,可以说,除了备份域,其他都没戏了,所以也只能靠备份域唤醒。
. y' M8 S! q: w4 k+ \

* ?3 I: l" U2 \( q7 p8 l8 ?; E2 F测试
2 p, A2 U0 C- m( l8 t! A最后,talk is cheap,废话了这么多,直接上代码:- R% B6 q( d/ _" |
  1. int main(void)2 z, ]. n1 d+ p
  2. {
    3 X* g  [# q; w9 a* Y6 n' K
  3.   HAL_Init();
    9 b  b, T$ b/ U2 [
  4.   SystemClock_Config();
    & n/ ~5 ?- g* ~1 V6 ?$ Q% ~2 O" o
  5.   __HAL_RCC_PWR_CLK_ENABLE();
    ( @# x9 |2 S3 h- Q% Y! x6 P2 P' w
  6. " m4 o( O! u! n9 z* o9 O
  7.   BSP_LED_Init(LED4);; z5 |! z& z9 |# q
  8.     BSP_PB_Init(BUTTON_USER, BUTTON_MODE_EXTI);
    2 J, M( m# h/ |5 `8 }' E4 u! ?3 X2 S
  9.   __HAL_FLASH_PREFETCH_BUFFER_DISABLE();1 Y$ ?4 S5 l# A1 q. [! e
  10.   RCC->IOPSMENR  = 0x00u;
    - h7 m$ N" c2 l+ g. M* }$ S) \
  11.   RCC->AHBSMENR  = 0x00u;+ h6 T7 q# }- P2 P3 D
  12.   RCC->APBSMENR1 = 0x00u;$ B/ P' o3 i3 b% v
  13.   RCC->APBSMENR2 = 0x00u;/ I' l* r' J- Z$ y; S
  14.   while (1)
    9 X( n! _9 i' n$ Q& {3 Z: Y
  15.   {9 K- E$ s$ [3 e
  16.     HAL_Delay(5000);
    1 i; ?' p) |; I+ k5 n% ?6 b
  17.     HAL_SuspendTick();   
    0 ?/ _9 d- p( S8 ]4 D, e
  18.     HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON,PWR_STOPENTRY_WFI);
    6 E4 U# B) h/ H4 l' q: z+ c
  19.     HAL_ResumeTick();
    2 h. N4 v* i- p! q3 e* R( h
  20.     BSP_LED_Init(LED4);
      e; L2 D' w: s1 |1 H
  21.   }% R- D. {6 p6 `
  22. }
复制代码
可以通过ST-Link Utility看效果,记得把实时更新打开:
9 F0 L1 d9 i8 e# D
33.png

( Y% w/ Y2 \5 V2 E( i* ^$ Y进入了Halted模式,应该就是Stop模式了。(上面配图有误,更正一下)- N3 G7 k' g7 P% Z
按一下蓝色小按钮,唤醒:
- }8 I% n% N" a1 [7 `
66.png

/ }! h8 x3 |1 B: I嗯,又跑起来了,灯也一闪一闪的了,不过似乎要比第一次慢(不信就把Reset按一下)?
9 i, M5 v' n7 V) Q; l4 H- m! ?慢就对了,因为现在用的是低压稳压器,主频被限制在了16MHz。
* a: A: P& v# J/ Y; _! K( x. i" [3 `5 Z: [! F5 t' z, h% o
祝大家周末愉快~
收藏 1 评论1 发布时间:2019-1-18 16:57

举报

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