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

STM32G071评测:PWR

[复制链接]
STM1024 发布时间:2019-1-18 16:57
本帖最后由 stm1024 于 2019-1-19 20:58 编辑
6 u9 a" _; |! a2 b0 w& K- n( K" x- w: ]! g4 X
花了点时间走马观花的学习了一下STM32G0系列的电源管理,把要点拎出来和大家交流一下。. ]! P: D7 x- D/ K, \  E5 o# W
G0提供了7种低功耗的方式,具有灵活的电源管理机制,有效降低了电源能耗,这7种低功耗方式分别是:$ c/ u5 E) c, M5 V, l+ |6 x
  • Low-power run(低功耗运行模式)
  • Sleep(睡眠模式)
  • Low-power sleep(低功耗睡眠模式)
  • Stop 0(停止模式0)
  • Stop 1(停止模式1)
  • Standby(待机模式)
  • Shutdown(关机模式)1 q" k# e' D6 M
(如果翻译不对,还望指正)0 `* u; z8 O# `/ ~% f
G0的电源模型如下:) a8 W6 y9 I4 c  l- j
1.png
* i6 O. ^3 ?  [4 J! [- l, M
VDD是主电源,向除VBAT供电之外的所有IO供电,包括Flash、复位、内部温度传感器和内部时钟源等,甚至还有待机电路(包括唤醒逻辑和独立看门狗)。同时VDD也是VDDA,向模拟量外设供电,VREF+是外部参考电压,为ADC或DAC提供参考电压。* J9 }$ Y( e; g' {" s* t# j, f9 H
VDD的电源经过稳压器后,就变成了VCore,这个是给内部的外设、Flash控制器、SRAM等供电。
, |( S" w; E- V: fVBAT是电池供电,这一部分是为备份域供电,备份域包括了RTC和备份寄存器等。
6 q$ s* a: y5 b- I  i# ~: U) P8 t
$ a0 E) X0 y  u% c9 `) ?3 t0 \, J! U: a0.正常运行模式Range1+ I- _' _4 r& c0 P! p" t
这可能是绝大部分MCU所采用的模式:4 y2 W) G: i6 D) `7 j9 H1 r
2.png
* E  L& S% i% ]3 H& R2 M$ g' g2 ~
在此模式下,且系统时钟为64MHz,所有外设都能被供电。
, m" a2 e& Z! a/ A9 v: m0.正常运行模式Range20 i3 f9 C( o  j( @4 S9 C, B, m
这个模式其实和正常运行模式没太多差别:
+ G0 O5 u( U4 s
3.png
* W9 O# x1 K$ @2 ]1 o8 Q$ }; Y) P
虽然差别不多,但是还是很显著的:此模式下,系统主频为16MHz,Flash不能被擦除或编程。
6 o) u+ ?$ K( }$ b$ x* d: J  U

2 ?) u7 S3 @8 D( |( t6 W2 }- T1. 低功耗运行模式
3 j! ^) }' \  `& v5 z3 r$ {
4.png
" W: t7 l5 O9 r* B; c8 n
此模式下,主频被限制在2MHz,主稳压器被关闭,由低压稳压器供电,所有的外设可被供电,但是,不能通过PLL倍频(都2MHz了……)
4 F% R9 c: S- K; D/ m$ d
6 e( @4 t4 w3 f- j& z! l
2.睡眠模式% @+ q1 ~, R& h& p! `& L$ F+ a' Q
睡眠模式同样包括了Range1和Range2:8 S2 M/ b/ N% s0 N+ y: O
5.png
$ q/ K; c5 G  p4 C3 y7 J" T

+ L; B/ D  q- y  n9 u% r
6.png

( t) l# ?$ p- a2 c# fRange1和Range2的主要区别与正常模式下Range1和Range2之间差别类似,即主频、Flash能否被擦除/编程。
1 v( Y, s8 A9 o+ c1 Q/ u睡眠模式主要指的是ARM CortexM0+的内核进入Sleep了。
* H* U$ z& z6 h# g+ q1 D# B' H

( T* w( _9 l5 j4 ]3.低功耗睡眠模式
; h4 J% s$ }9 h5 r$ b; ?1 T
低功耗睡眠模式.png
" k( g  M; t/ M; c5 c' G& H
此模式下,主频被限制在2MHz,ARM CortexM0+的内核进入Sleep,Flash也被断电,但外设都可以被供电。
9 P+ ~' W4 G2 X- Z; Z% X
8 q9 `4 I6 H  V8 ~+ g1 p+ o8 s. G$ g
4.停止模式0
5 M. u4 w2 S  g5 t; Y
STOP0.png
+ [% y* ]' @  t( z' M& A
以此模式为分界线,外设和时钟源已经不再是都可以全功能运行,因此也要留意能唤醒事件有哪些了。
( Y( X9 e! P: |* ?
8 l. |: V) B+ ~" s% n8 B
5.停止模式1) i! G4 _* B% P5 A% Q2 a
STOP1.png
+ W: l: v5 p8 T8 q
停止模式1和停止模式0很类似,但是稳压器用的是低压稳压器,虽然功耗比停止模式0低,但是唤醒时间也会长一些。
& e/ d  p* m9 ?# z2 f: y% O" e
2 Z" ~  H$ ]3 a+ O
6.待机模式' X8 R0 I# h- |
STANDBY.png

" w( v) x; e% v1 T
8 W! T! p* {9 \9 B
ssss.png

( v; M. t& U. i; L3 V停止模式可以保持SRAM或不保持SRAM,不保持SRAM的话,SRAM的时钟就被关闭了,肯定功耗低。 * E- j/ C- X7 G* l8 [% E) G+ x- e; O


! a, ?. |' |4 V9 i  D4 s7.关机模式
0 X9 U1 G1 w- u, W% Q- Q
Shutdown.png
# c! D$ k; z6 |: ?% v$ a
这个最省电了,所有外设全都没电了,内核,Flash、SRAM也没电,可以说,除了备份域,其他都没戏了,所以也只能靠备份域唤醒。
2 N# l; Y* A: X+ C# r
+ r6 A+ `$ _: ]) P
测试
, L1 Y$ x& V3 E7 L. T# Q: O9 T* R最后,talk is cheap,废话了这么多,直接上代码:
$ ]/ S: d5 ?% ?4 r& C1 f
  1. int main(void)8 `1 u3 Q, R+ a1 q- d
  2. {
    ! h* k- m2 n9 r; _: i! g
  3.   HAL_Init();5 S2 \# l- g3 C: V3 j
  4.   SystemClock_Config();- I. E: o8 ^& u  v8 \8 v
  5.   __HAL_RCC_PWR_CLK_ENABLE(); 3 u) z( N  A8 p( j6 u$ O7 T
  6. 5 W) S, n; J3 L$ m* U& G* U0 n
  7.   BSP_LED_Init(LED4);
    - D; y) t7 X0 W0 `& Y2 q
  8.     BSP_PB_Init(BUTTON_USER, BUTTON_MODE_EXTI);; [7 V) _- n9 V: f5 R
  9.   __HAL_FLASH_PREFETCH_BUFFER_DISABLE();
    % w( I: t6 p- O0 |
  10.   RCC->IOPSMENR  = 0x00u;$ Q! _8 j: ^' |1 z$ C! ?/ P
  11.   RCC->AHBSMENR  = 0x00u;6 n7 [- c) m. _$ {
  12.   RCC->APBSMENR1 = 0x00u;) a% x+ N0 s: s- ^
  13.   RCC->APBSMENR2 = 0x00u;1 E- n6 s$ |6 f) x  {9 D
  14.   while (1)0 b: q8 {0 n/ u# @+ Z0 e
  15.   {
    & v( m, [* q4 S* t6 d
  16.     HAL_Delay(5000);2 E/ Y$ p7 l9 f, B% H- e; e# W' i
  17.     HAL_SuspendTick();    7 U" x2 W/ y/ L( I
  18.     HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON,PWR_STOPENTRY_WFI);- D) G5 y* B3 P. B; }
  19.     HAL_ResumeTick();; |# m; G2 E" q
  20.     BSP_LED_Init(LED4);7 T& R4 V+ o9 v- y3 _! J
  21.   }1 ?  h' X- a- [$ Q  ]+ n
  22. }
复制代码
可以通过ST-Link Utility看效果,记得把实时更新打开:6 V4 v) D  m% }5 }6 X) Z
33.png
2 s. K' F, @" e
进入了Halted模式,应该就是Stop模式了。(上面配图有误,更正一下)
, D. Z$ _( J2 F" {按一下蓝色小按钮,唤醒:# p3 P, F( v$ p) m5 t  e
66.png
' o$ x- E% A3 Y0 r. n
嗯,又跑起来了,灯也一闪一闪的了,不过似乎要比第一次慢(不信就把Reset按一下)?. x- q$ m* c# ^. g$ Q# e/ R2 c
慢就对了,因为现在用的是低压稳压器,主频被限制在了16MHz。7 U2 c& X. Z& C) ^' N

+ a  ]! q" y! J5 c3 ]8 x9 ?祝大家周末愉快~
赞 收藏 1 评论1 发布时间:2019-1-18 16:57

举报

1个回答
slotg 回答时间:2019-1-19 15:31:43
很不错的分享

所属标签

相似技术帖

官网相关资源

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