EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
在功耗要求比较高的场景,需要尽可能的降低板级功耗。此时需要主控mcu进入低功耗模式。本文以 STM32 单片机为例,聊一聊低功耗。[color=rgba(0, 0, 0, 0.9)]聊一聊 STM32F10xx 的低功耗模式有三种:- 睡眠模式
- 停止模式
- 待机模式
+ Z0 n5 z5 J& H" v7 ~7 G* n 此外,在运行模式下,可以通过以下方式中的一种降低功耗:- 降低系统时钟
- 关闭APB和AHB总线上未被使用的外设时钟。& W! u. y1 L6 s) \0 n0 ]# o6 i* N# @9 W. f
低功耗模式一览表
接下来,我们逐个介绍一下各个降低功耗的模式。 (1)降低系统时钟 在运行模式下,通过对预分频寄存器进行编程,可以降低任意一个系统时钟(SYSCLK、HCLK、 PCLK1、 PCLK2)的速度。进入睡眠模式前,也可以利用预分频器来降低外设的时钟。 (2)外部时钟控制 在运行模式下,任何时候都可以通过停止为外设和内存提供时钟(HCLK和PCLKx)来减少功耗。 为了在睡眠模式下更多地减少功耗,可在执行 WFI 或 WFE 指令前关闭所有外设的时钟。 (3)睡眠模式 此模式下,Corte-M3内核停止,所有外设包括 Cortex-M3 核心的外设,如 NVIC、系统时钟(SysTick)等仍在运行) ,所有的 I/O 引脚都保持它们在运行模式时的状态。 该模式唤醒所需的时间最短,因为没有时间损失在中断的进入或退出上。 通过执行 WFI 或 WFE 指令进入睡眠状态。根据Cortex™-M3系统控制寄存器中的 SLEEPONEXIT位的值,有两种选项可用于选择睡眠模式进入机制: (2)停止模式 停止模式是在 Cortex-M3 的深睡眠模式基础上结合了外设的时钟控制机制,所有的时钟都已停止。在停止模式下电压调节器可运行在正常或低功耗模式。 此时在 1.8V 供电区域的的所有时钟都被停止, PLL、 HSI 和 HSE RC振荡器的功能被禁止, SRAM 和寄存器内容被保留下来。 在停止模式下,所有的I/O引脚都保持它们在运行模式时的状态。 在停止模式下,通过设置电源控制寄存器(PWR_CR)的 LPDS 位使内部调节器进入低功耗模式,能够降低更多的功耗。 如果正在进行闪存编程或对APB访问,直到访问操作完成,系统才进入停止模式。 当一个中断或唤醒事件导致退出停止模式时, HSI RC 振荡器被选为系统时钟。 (3)待机模式 待机模式可实现系统的最低功耗。 该模式是在Cortex-M3深睡眠模式时关闭电压调节器。整个 1.8V 供电区域被断电。PLL、 HSI和HSE振荡器也被断电。SRAM 和寄 存器内容丢失。 只有备份的寄存器和待机电路维持供电。 可以通过设置独立的控制位,选择以下待机模式的功能: 独立看门狗(IWDG):可通过写入看门狗的键寄存器或硬件选择来启动IWDG。一旦启动了独立看门狗,除了系统复位,它不能再被停止。 实时时钟(RTC):通过备用区域控制寄存器(RCC_BDCR)的RTCEN位来设置。 内部RC振荡器(LSI RC):通过控制/状态寄存器(RCC_CSR)的LSION位来设置。 外部32.768kHz振荡器(LSE):通过备用区域控制寄存器(RCC_BDCR)的LSEON位设置
, j7 |+ n/ o. \. H$ D1 [8 z. z; g
外部复位(NRST引脚)、 IWDG复位、 WKUP引脚上的上升沿或RTC闹钟事件的上升沿,可以使微控制器从待机模式退出。 从待机唤醒后,除了电源控制/状态寄存器(PWR_CSR),所有寄存器被复位。代码执行等同于复位后的执行。 6 _, W1 V, J* J4 }( U& N, ]
|