一. 为什么要用超低功耗

在接触到嵌入式的时候,首先就是熟悉各个时钟线。每次拿到一个新的 STM32 板子都会用 CUBEMX 去把时钟配置到支持的最高频率,当然在最高频率下运行会得到最强的性能。最强的性能带来的也就是最高的功耗,在某些场景下,只能使用电池供电,就对功耗要求比较高了,比如智能穿戴,安装在野外的设备,我们不是时刻都需要让 MCU 运行在最高频率,这个时候就需要通过 MCU 来控制整个产品的功耗。

本系列文章以 STM32L4 系列来讲解。L0 比 L4 少两种停机模式。 STM32L1 没有 LPUART 和 LPTIM。L5 太高端没有板子。

二. 认识低功耗

本文资料全部来源于 ST 提供的资料

1. STM32L4 支持的最低功耗

参考手册:DS11449

stm32cubemx 低功耗模式 stm32 超低功耗_stm32

2. STM32L4 支持低功耗模式

参考手册 :RM0394

支持的低功耗模式:

  • Sleep mode : 睡眠模式
  • Low-power run mode :低功耗运行模式
  • Low-power sleep mode :低功耗睡眠模式
  • Stop 0, Stop 1 and Stop 2 modes :3 种停止模式
  • Standby mode :待机模式
  • Shutdown mode :停机模式

再加上运行模式,则 STM32L4 支持的运行模式就是:9 种

三. 不同低功耗的区别

参考手册:RM0394

先看官方手册的说明

stm32cubemx 低功耗模式 stm32 超低功耗_stm32_02

这个表格非常详尽的说明了各种模式下的 进入唤醒 方式,这里对几个不是经常看到的专业单词做以 简单 说明:

本解释尽可能的简介,难免存在解释不到位的情况,如需更详细的了解,请自行查阅资料。

名词

解释

WFI(Wait for interrupt)

ARM 指令,等待中断,下一次中断发生前 MCU 停止不工作

WFE(Wait for event)

ARM 指令,等待事件,下一次事件发生前 MCU 停止不工作

LPR(low-power regulator)

在 MCU 进入低功耗模式之后继续给 MCU 核心供电

MR(main regulator)

给 MCU 核心供电

LPMS(Low-power mode selection)

PWR_CR1_LPMS 用来确定 MCU 进入哪种低功耗模式

MSI(Multispeedinternal RC oscillator)

功耗系列独有的时钟.精度不高,官方提供的例程中多以MSI作为时钟源

不同低功耗模式下的对比,参考 DS11449

stm32cubemx 低功耗模式 stm32 超低功耗_低功耗_03


stm32cubemx 低功耗模式 stm32 超低功耗_stm32cubemx 低功耗模式_04


stm32cubemx 低功耗模式 stm32 超低功耗_stm32_05


不同的工作模式下,选择的电压调节器不一样也会导致功耗的不一样,这里以 sleep 模式来说明:

参考文档:RM0394

  1. MR range 1 :
  2. stm32cubemx 低功耗模式 stm32 超低功耗_stm32cubemx 低功耗模式_06

  3. MCU 核心的供电电压是 1.2V ,最高可运行到 80MHZ
  4. MR range 2
  5. stm32cubemx 低功耗模式 stm32 超低功耗_stm32_07

  6. MCU 核心的供电电压是 1.0 V ,最高可运行到 26MHZ,通过 PWR_CR1 寄存器来配置
  7. SMPS range 2 High
  8. stm32cubemx 低功耗模式 stm32 超低功耗_超低功耗_08

  9. MCU 核心的供电电压高于是 1.08 V
  10. SMPS range 2 Low
    参考上图 :MCU 核心的供电电压高于是 1.05 V

SMPS模式,就是指芯片支持外接SMPS(Switching Mode Power Supply,开关电源)的给内核供电的意思。即

目前只是部分芯片封装支持可以关闭内部LDO而外接SMPS给内核供电。

注意事项参考:AN4978.

stm32cubemx 低功耗模式 stm32 超低功耗_stm32cubemx 低功耗模式_09

各种运行模式的切换,参考 RM0394

stm32cubemx 低功耗模式 stm32 超低功耗_stm32_10


例如低功耗睡眠模式,唤醒之后不能立刻切换到,运行模式,唤醒之后运行在低功耗运行模式。所以低功耗睡眠模式 唤醒之后进入低功耗低功耗运行模式,然后再切换到运行模式。

四. 总结

  1. 熟悉上面的资料对 STM32 超低功耗就有一个基本的认识。
  2. 超低功耗是一个细活要一点一点扣,本文仅仅对 MCU 部分做了介绍
  3. 超低功耗是一个软硬件结合的工作,软件的逻辑,硬件的供电都会导致功耗的差异