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

STM32G071评测:PWR

[复制链接]
STM1024 发布时间:2019-1-18 16:57
本帖最后由 stm1024 于 2019-1-19 20:58 编辑
) K  g4 [/ `/ n  S% I5 @
5 }' D& e6 f" K  F花了点时间走马观花的学习了一下STM32G0系列的电源管理,把要点拎出来和大家交流一下。
$ l. x2 K  m' q' |6 MG0提供了7种低功耗的方式,具有灵活的电源管理机制,有效降低了电源能耗,这7种低功耗方式分别是:
( X  T- B- i* ~" A5 l7 l
  • Low-power run(低功耗运行模式)
  • Sleep(睡眠模式)
  • Low-power sleep(低功耗睡眠模式)
  • Stop 0(停止模式0)
  • Stop 1(停止模式1)
  • Standby(待机模式)
  • Shutdown(关机模式)
    0 x# X0 [$ R2 q; P
(如果翻译不对,还望指正)& g( Z: O# D( a6 b" }$ d9 [
G0的电源模型如下:
7 S. \" E2 m& |( ]1 U0 c
1.png
6 ^8 L/ h2 R6 |
VDD是主电源,向除VBAT供电之外的所有IO供电,包括Flash、复位、内部温度传感器和内部时钟源等,甚至还有待机电路(包括唤醒逻辑和独立看门狗)。同时VDD也是VDDA,向模拟量外设供电,VREF+是外部参考电压,为ADC或DAC提供参考电压。
# {: {& g. V, s2 @( E5 c* k! OVDD的电源经过稳压器后,就变成了VCore,这个是给内部的外设、Flash控制器、SRAM等供电。
* g+ L( T) f3 C$ |3 S, iVBAT是电池供电,这一部分是为备份域供电,备份域包括了RTC和备份寄存器等。  a7 ]  F/ e  K

9 g2 Y, v. c$ Q1 `; p0.正常运行模式Range1$ t" v5 B  l/ W& A* |: s+ C# ^
这可能是绝大部分MCU所采用的模式:' F9 z5 _4 B' q9 u+ q+ c
2.png

: Y! F) T: ]; `  p7 C) r在此模式下,且系统时钟为64MHz,所有外设都能被供电。  i) e7 n: s6 }8 F6 e
0.正常运行模式Range2
4 b* z- {$ @; m5 e0 X) v这个模式其实和正常运行模式没太多差别:* l% M8 V7 L/ ~( ?7 T' ]) a
3.png

8 b5 `  i8 o7 ]4 _$ K3 q虽然差别不多,但是还是很显著的:此模式下,系统主频为16MHz,Flash不能被擦除或编程。
8 e& }5 l: o. |2 k# f
# k5 W0 E4 F# J' \. Y
1. 低功耗运行模式
. C5 n5 t( k2 l. T  X4 p- w
4.png

( X  T' {$ ?8 q: g, c此模式下,主频被限制在2MHz,主稳压器被关闭,由低压稳压器供电,所有的外设可被供电,但是,不能通过PLL倍频(都2MHz了……)& C7 \" Q% m5 [7 D3 K' ?
8 `2 T$ j, ~, r8 k

2.睡眠模式8 [; q$ m4 T% l
睡眠模式同样包括了Range1和Range2:6 Y5 g8 v2 x% w) {/ x1 {2 R$ X
5.png
$ r, w; _# j8 y3 o# ~# z+ {
; X( f' [8 r+ Z' \
6.png
* [; g- o  e( }' Y( \
Range1和Range2的主要区别与正常模式下Range1和Range2之间差别类似,即主频、Flash能否被擦除/编程。# |! i7 s4 w: w3 @* s& O2 m1 ?& S. i
睡眠模式主要指的是ARM CortexM0+的内核进入Sleep了。6 z; l! K/ T: Y


% c! v  y  m. M2 h& d3.低功耗睡眠模式
. Q1 ^- p  |5 i" C% i3 Y3 \
低功耗睡眠模式.png
4 a8 I1 B8 I% N: x+ }
此模式下,主频被限制在2MHz,ARM CortexM0+的内核进入Sleep,Flash也被断电,但外设都可以被供电。
: l5 x! }, N( v/ V7 h7 f5 R! n
0 L: C/ l, Z2 F! ~, d" o
4.停止模式08 b. d4 h+ _* V; Q
STOP0.png

5 l6 c, g2 I2 m+ x! R以此模式为分界线,外设和时钟源已经不再是都可以全功能运行,因此也要留意能唤醒事件有哪些了。
; B; a/ X8 j; F$ O/ m

0 \7 f! t3 G1 t8 T5.停止模式1: _- _* n' P6 e! B/ A& H, [
STOP1.png
: G! K6 s9 v; `5 S8 N
停止模式1和停止模式0很类似,但是稳压器用的是低压稳压器,虽然功耗比停止模式0低,但是唤醒时间也会长一些。 2 P1 P3 c- e& m3 y! M( U& l+ c


. [' n: N: f3 g5 n8 T  _5 K- H, [3 y$ h6.待机模式; g( D6 Q$ i0 j* U
STANDBY.png

0 u8 E! T' U+ d9 C; q; |- N3 i8 x( c# y/ X
ssss.png

4 V* r  `. a! L9 [停止模式可以保持SRAM或不保持SRAM,不保持SRAM的话,SRAM的时钟就被关闭了,肯定功耗低。 - x: C( h$ W* y! `

. h, B: d+ C% a2 f) c
7.关机模式  |( [) E2 T. Z+ F
Shutdown.png
1 Y  b$ W+ i; R# X1 o: {
这个最省电了,所有外设全都没电了,内核,Flash、SRAM也没电,可以说,除了备份域,其他都没戏了,所以也只能靠备份域唤醒。  j/ \! L5 j; d* s, E/ X  Y) W

" o# E9 X( a2 p( [% S2 X
测试
1 b4 f7 M* V# ?' k最后,talk is cheap,废话了这么多,直接上代码:7 @  x9 S, g* H* c
  1. int main(void)
    7 A* a6 \, t, a. D8 X0 ]
  2. {$ l6 e1 D) ~! R
  3.   HAL_Init();: b6 m7 }- |! v, }, t+ O% v
  4.   SystemClock_Config();* ^/ F3 k( D  C- G7 A. I+ O* y
  5.   __HAL_RCC_PWR_CLK_ENABLE(); ! G' D( E: d; R

  6. 9 ?# V! q# b' D3 \& X
  7.   BSP_LED_Init(LED4);% X) j  k+ S: {/ M& d  [+ R4 A2 I8 x
  8.     BSP_PB_Init(BUTTON_USER, BUTTON_MODE_EXTI);
    8 W% ~$ K9 |& @4 s7 B( \
  9.   __HAL_FLASH_PREFETCH_BUFFER_DISABLE();
    2 ^2 g% @; }' ^' W* Y( v
  10.   RCC->IOPSMENR  = 0x00u;6 @1 ~. p8 a/ e5 D; f- X; q$ ?
  11.   RCC->AHBSMENR  = 0x00u;4 x1 R* D& w' f, `
  12.   RCC->APBSMENR1 = 0x00u;
    " B( _6 F/ I. e5 W/ ]3 C! `$ t
  13.   RCC->APBSMENR2 = 0x00u;
    0 H9 a4 s2 r) k
  14.   while (1)$ V, _% ^  t$ T  v2 i# p0 j" t
  15.   {
    7 n5 \! _- A$ h8 B' Z% ]
  16.     HAL_Delay(5000);# \. x* z1 T! T& x; z; Y* K. ]- I
  17.     HAL_SuspendTick();    7 M3 q3 X4 y& f: M. z9 B: d
  18.     HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON,PWR_STOPENTRY_WFI);
    % e, a; F1 o/ I) `
  19.     HAL_ResumeTick();1 e2 h$ y9 j5 S4 v1 [
  20.     BSP_LED_Init(LED4);4 V  o3 l4 h5 N! U5 m
  21.   }0 }$ G' r. G- V9 [3 u
  22. }
复制代码
可以通过ST-Link Utility看效果,记得把实时更新打开:6 e: I1 }5 _+ k
33.png
" y( e& D. b9 E; E+ v; l
进入了Halted模式,应该就是Stop模式了。(上面配图有误,更正一下)5 {/ |+ `3 N* v3 ?' R) b# k% L
按一下蓝色小按钮,唤醒:/ ?( L; }/ w: x/ d$ E
66.png

) v1 q4 u* l( p* Y" |" V- R嗯,又跑起来了,灯也一闪一闪的了,不过似乎要比第一次慢(不信就把Reset按一下)?
' h: ]( G9 g- @慢就对了,因为现在用的是低压稳压器,主频被限制在了16MHz。& ], E' N! G! b: o7 v/ y: J2 }
6 L8 x7 w( G7 g+ c6 q+ N; J* U% ?7 v( q
祝大家周末愉快~
收藏 1 评论1 发布时间:2019-1-18 16:57

举报

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