STM32L051 的低功耗等级(功耗模式)

[复制链接]
keer_zu 发表于 2025-8-12 09:31 | 显示全部楼层 |阅读模式

STM32L051 的低功耗等级(功耗模式)及其对应的状态机模型。STM32L051 属于 STM32L0 系列,是 STMicroelectronics 专为超低功耗应用设计的微控制器,其功耗模式设计非常精细,以满足不同应用场景对功耗和唤醒速度/状态保持的需求。

核心低功耗模式概览:

STM32L051 主要提供以下功耗模式,按功耗从高到低排列:

  1. 运行模式 (Run Mode)
  2. 低功耗运行模式 (Low-Power Run Mode - LPRun)
  3. 睡眠模式 (Sleep Mode)
  4. 低功耗睡眠模式 (Low-Power Sleep Mode - LPSleep)
  5. 停机模式 (Stop Mode)
  6. 待机模式 (Standby Mode)
  7. 关机模式 (Shutdown Mode)

状态机模型:

下图描述了这些模式之间的转换关系以及主要的进入/退出条件:

+-----------------------------------------------------------------------+
|                               运行模式 (Run)                          |
|  (Core: On, Periph: On, Clocks: HSI/MSI/HSE/PLL, Regs/RAM: Keep)     |
|  (Highest Power Consumption)                                         |
+-----------------------------------------------------------------------+
       | WFI/WFE/SLEEPONEXIT
       | OR LPR bit set & MSI as sysclk & Vcore Range 2
       v
+----------------------+       +----------------------+
|     睡眠模式 (Sleep)  |<----->| 低功耗睡眠模式 (LPSleep) |
| (Core: Off,          |       | (Core: Off,          |
|  Periph: On,         |       |  Periph: On,         |
|  Clocks: SysClk On,  |       |  Clocks: SysClk Off, |
|  Regs/RAM: Keep)     |       |  LSE/LSI/MSI On*,    |
|                      |       |  Regs/RAM: Keep)     |
+----------------------+       +----------------------+
       | WFI/WFE/SLEEPONEXIT
       | OR Enter Stop via PWR_CR
       v
+-----------------------------------------------------------------------+
|                               停机模式 (Stop)                         |
|  (Core: Off, Periph: Off (SRAM/Regs Keep), Clocks: Off (LSE/LSI/MSI*) |
|  (Low Power Consumption, Fast Wakeup, Full Context Retention)         |
+-----------------------------------------------------------------------+
       | WFI/WFE/SLEEPONEXIT
       | OR Enter Standby via PWR_CR
       v
+-----------------------------------------------------------------------+
|                               待机模式 (Standby)                      |
|  (Core: Off, Periph: Off, Clocks: Off (LSI/LSE On* for RTC/WKUP),     |
|   SRAM/Regs: Lost (Except Backup Domain), IOs: High-Z or Analog)      |
|  (Very Low Power Consumption, Reset-like Wakeup)                      |
+-----------------------------------------------------------------------+
       | Enter Shutdown via PWR_CR
       v
+-----------------------------------------------------------------------+
|                               关机模式 (Shutdown)                     |
|  (Core: Off, Periph: Off, Clocks: Off (LSE On* for RTC if used),      |
|   SRAM/Regs: Lost (Except Backup Domain), IOs: High-Z or Analog)      |
|  (Lowest Power Consumption, Reset-like Wakeup)                        |
+-----------------------------------------------------------------------+

箭头说明:

  • 垂直向下箭头 (->): 表示从高功耗模式进入低功耗模式的主要路径。通常通过执行 WFI (Wait For Interrupt) 或 WFE (Wait For Event) 指令、设置 SLEEPONEXIT 位、或直接配置电源控制寄存器 (PWR_CR) 中的相关位 (LPMS, FWU, ULP, LPSDSR, PDDS, CWUF) 来实现。
  • 水平双向箭头 (<->): 表示 睡眠模式低功耗睡眠模式 之间可以根据配置(主要是系统时钟源是否关闭)直接切换。
  • 唤醒事件/中断: 所有低功耗模式都可以被特定的唤醒源(外部中断、RTC 闹钟、IWDG、特定外设事件等)唤醒。唤醒后,微控制器会返回到进入低功耗模式之前的运行状态(运行模式低功耗运行模式),除了
    • 待机模式关机模式 唤醒后相当于进行一次复位(从复位向量重新开始执行),SRAM 和寄存器内容丢失(备份域寄存器内容保留)。
    • 停机模式 唤醒后,程序会从进入停机模式指令 (WFI/WFE) 之后的下一条指令开始执行(或响应唤醒事件的中断服务程序),所有寄存器和 SRAM 内容保留。

各低功耗模式详细说明:

  1. 运行模式 (Run Mode)

    • 状态: CPU 内核运行,外设可以开启(取决于配置),所有时钟(HSI, MSI, HSE, PLL)都可以使用。
    • 功耗: 最高。典型值取决于主频、开启的外设数量和电压调节器范围 (Range)。例如,在 16MHz (Range 1) 下运行 CoreMark 时约为 1.5mA,在 2MHz (Range 2) 下运行约为 230μA。
    • 唤醒源: 不适用(本身是活动状态)。
    • 唤醒时间: 不适用。
    • 状态保持: 所有寄存器和 SRAM 内容保持。
    • 进入方式: 上电复位、从任何低功耗模式唤醒(除了待机/关机唤醒相当于复位)。
    • 退出方式: 执行 WFI/WFE 进入睡眠;配置进入更低功耗模式;或通过软件切换时钟/电压调节器进入 低功耗运行模式
  2. 低功耗运行模式 (Low-Power Run Mode - LPRun)

    • 状态: CPU 内核运行,外设可以开启(但只能使用低功耗时钟源:MSI (典型 131kHz, 262kHz 等低速档位) 或 HSI16 (在分频后低频运行),不能使用 HSE 或 PLL。电压调节器必须切换到 低功耗范围 (Range 2)
    • 功耗: 显著低于普通运行模式。典型值在 MSI 131kHz + Range 2 下约为 30μA (仅内核运行)。
    • 唤醒源: 不适用(本身是活动状态)。
    • 唤醒时间: 不适用。
    • 状态保持: 所有寄存器和 SRAM 内容保持。
    • 进入方式:运行模式 下,将系统时钟切换到 MSI (低速档) 或分频后的 HSI16,并将电压调节器设置为 Range 2 (PWR_CRVOS 位和 LPR 位)。
    • 退出方式: 将电压调节器切换回 Range 1 (LPR=0),并将系统时钟切换到 HSI/HSE/PLL 以返回普通 运行模式;也可以执行 WFI/WFE 进入 低功耗睡眠模式
  3. 睡眠模式 (Sleep Mode)

    • 状态: CPU 内核停止运行,但系统时钟 (SYSCLK) 仍然运行。开启的外设继续工作并可以产生中断/事件来唤醒内核。
    • 功耗: 高于 停机模式 但低于 运行模式。取决于开启的外设数量和时钟频率。典型值在 2MHz 下约为 100μA (仅内核停止)。
    • 唤醒源: 任何使能的中断或事件(来自 NVIC 或外设)。
    • 唤醒时间: 非常快 (几个时钟周期)。CPU 从中断/事件发生点立即恢复执行(或响应中断)。
    • 状态保持: 所有寄存器和 SRAM 内容保持。
    • 进入方式: 执行 WFIWFE 汇编指令;或设置内核寄存器 (SCR) 的 SLEEPONEXIT 位,在退出最低优先级中断后自动进入睡眠。
    • 退出方式: 发生使能的中断或事件。
  4. 低功耗睡眠模式 (Low-Power Sleep Mode - LPSleep)

    • 状态: CPU 内核停止运行系统时钟 (SYSCLK) 被关闭只有低功耗时钟源保持运行:LSE (32.768kHz 外部晶振), LSI (~37kHz 内部 RC), 或者 MSI (在低速档位,如 65.5kHz, 131kHz)。开启的外设如果依赖 SYSCLK 则停止工作,但依赖 LSE/LSI/MSI 的外设(如 LPUART, LPTIM, RTC, IWDG)可以继续工作并产生唤醒事件。
    • 功耗: 显著低于普通睡眠模式。典型值在仅 LSI 或 LSE 运行 + SRAM 保持下约为 1.5μA - 2μA。
    • 唤醒源: 来自运行中的低功耗外设的事件(如 LPUART 接收、LPTIM 比较匹配、RTC 闹钟)、外部中断 (EXTI)、IWDG 复位(如果使能)等。不能响应需要 SYSCLK 的外设中断
    • 唤醒时间: 较快。需要重新使能系统时钟,但比 停机模式 唤醒可能稍快一点(因为电压调节器保持运行)。通常在微秒级。
    • 状态保持: 所有寄存器和 SRAM 内容保持。
    • 进入方式:
      • 睡眠模式 下,关闭系统时钟 (SYS_CFGR 寄存器配置)。
      • 低功耗运行模式 下执行 WFIWFE
    • 退出方式: 发生支持的唤醒事件。系统时钟根据配置重新启动,CPU 恢复执行。
  5. 停机模式 (Stop Mode)

    • 状态: CPU 内核停止运行所有高速时钟关闭 (HSI, HSE, PLL, MSI, SYSCLK)核心电压调节器可以配置为保持运行 (Regulator ON) 或进入低功耗状态 (Low-Power Regulator)只有 LSE 和 LSI 可以保持运行 (可选),用于驱动 RTC, IWDG, LPUART, LPTIM 或作为唤醒源。所有外设时钟停止。I/O 引脚状态保持。
    • 功耗: 非常低。典型值:
      • Regulator ON + SRAM 保持 + LSI/LSE 关闭:约 1.1μA
      • Low-Power Regulator + SRAM 保持 + LSI/LSE 关闭:约 0.4μA
      • 开启 RTC/LSE:额外增加 ~1μA
    • 唤醒源: 外部中断 (EXTI - 包括 RTC 闹钟事件、Tamper 事件)、特定引脚上升沿、LPTIM 异步事件、IWDG 复位(如果使能)等(依赖于保持运行的 LSE/LSI)。
    • 唤醒时间: (微秒级)。因为电压调节器状态可配置为保持运行或快速恢复。程序从进入停机模式的指令 (WFI/WFE) 之后继续执行(或响应唤醒事件的中断)。
    • 状态保持: 所有寄存器和 SRAM 内容保持。这是 停机模式 的关键优势之一。
    • 进入方式: 配置电源控制寄存器 (PWR_CR) 中的 LPMS 位选择 Stop 模式,设置 LPSDSR (选择 Regulator 模式),FWU (快速唤醒),ULP (超低功耗 - 关闭 Flash 电源) 等选项,然后执行 WFIWFE
    • 退出方式: 发生支持的唤醒事件。系统时钟根据配置重新启动(通常是 MSI),CPU 恢复执行。
  6. 待机模式 (Standby Mode)

    • 状态: 电压调节器关闭 (核心电源域断电)所有高速和低速时钟关闭 (HSI, HSE, PLL, MSI, SYSCLK, LSI, LSE - 但 LSE 可以 被独立配置为保持运行以驱动 RTC)SRAM 和寄存器内容丢失 (除了备份域寄存器)大部分 I/O 引脚进入高阻态或模拟状态 (具体取决于配置)只有备份域 (Backup Domain) 和待机电路保持供电
    • 功耗: 极低。典型值:
      • LSE 关闭:约 0.27μA
      • LSE 开启 (RTC 运行):约 0.95μA
    • 唤醒源: 有限
      • 特定的唤醒引脚 (WKUPx) 上升沿。
      • RTC 闹钟事件 (如果 LSE/LSI 配置为保持运行)。
      • IWDG 复位 (如果使能)。
      • NRST 引脚外部复位。
    • 唤醒时间: (毫秒级)。唤醒过程相当于一次复位(冷启动)。程序从复位向量 (0x0000_0004) 重新开始执行。
    • 状态保持: 仅备份域寄存器 (RTC, Backup SRAM, Tamper 配置等) 内容保持。主 SRAM 和所有通用寄存器内容丢失。
    • 进入方式: 配置 PWR_CR 中的 PDDS 位选择 Standby 模式,设置 CWUF (清除唤醒标志),配置 PWR_CSR 中的 EWUPx 位使能唤醒引脚,然后执行 WFIWFE;或设置 SLEEPDEEP 位 + PDDS + WFI/WFE
    • 退出方式: 发生支持的唤醒事件或复位。系统执行完整的复位初始化流程。
  7. 关机模式 (Shutdown Mode)

    • 状态: 电压调节器关闭 (核心电源域断电)所有时钟关闭 (包括 LSE 和 LSI - 但 LSE 可以 被独立配置为保持运行以驱动 RTC)SRAM 和寄存器内容丢失 (除了备份域寄存器)大部分 I/O 引脚进入高阻态或模拟状态只有备份域 (Backup Domain) 和极低功耗的唤醒逻辑保持供电。这是 最低功耗 的模式。
    • 功耗: 最低。典型值:
      • LSE 关闭:约 0.03μA
      • LSE 开启 (RTC 运行):约 0.7μA
    • 唤醒源: 非常有限
      • 特定的唤醒引脚 (WKUPx) 上升沿。
      • RTC 闹钟事件 (如果 LSE 配置为保持运行 - LSI 在关机模式下不能运行)。
      • NRST 引脚外部复位。
    • 唤醒时间: (毫秒级)。唤醒过程相当于一次复位(冷启动)。程序从复位向量 (0x0000_0004) 重新开始执行。
    • 状态保持: 仅备份域寄存器 (RTC, Backup SRAM, Tamper 配置等) 内容保持。主 SRAM 和所有通用寄存器内容丢失。
    • 进入方式: 配置 PWR_CR 中的 LPMS 位选择 Shutdown 模式,设置 CWUF,配置 PWR_CSR 中的 EWUPx 位使能唤醒引脚,然后执行 WFIWFE
    • 退出方式: 发生支持的唤醒事件或复位。系统执行完整的复位初始化流程。

关键选择因素总结:

  • 需要多快唤醒? 睡眠/低功耗睡眠/停机 (快) vs 待机/关机 (慢/复位)。
  • 需要保存 RAM 和寄存器状态吗? 睡眠/低功耗睡眠/停机 (保存) vs 待机/关机 (丢失,仅备份域保留)。
  • 需要多低的功耗? 运行 (最高) -> LPRun -> 睡眠 -> LPSleep -> 停机 -> 待机 -> 关机 (最低)。
  • 唤醒源是什么? 不同模式支持的唤醒源不同 (例如,待机/关机 只能用 WKUP 引脚或 RTC 闹钟唤醒)。
  • 需要外设在低功耗下工作吗? 睡眠/LPRun (外设可用) -> LPSleep/停机 (仅低功耗外设可用) -> 待机/关机 (外设完全关闭)。

重要提示:

  1. 实际功耗: 上述功耗值是典型值,在特定条件下测得(通常是 25°C, VDD=3.0V, 无负载)。实际功耗受温度、供电电压、PCB 设计、未用引脚配置(推荐配置为模拟输入或输出低)、GPIO 外部电路漏电流、开启的外设数量和频率等因素显著影响。务必根据实际电路进行测量。
  2. 配置细节: 进入和退出每种模式,以及配置唤醒源、时钟、电压调节器、I/O 状态等,都需要仔细配置相关的寄存器 (PWR, RCC, SYSCFG, GPIO, EXTI, NVIC 等)。请务必参考 STM32L051 参考手册 (RM)电源控制 (PWR)复位和时钟控制 (RCC) 章节。
  3. 调试: 调试器连接通常会阻止微控制器进入深度睡眠模式(如停机、待机、关机)。进行低功耗测试时,可能需要断开调试器,使用 GPIO 翻转或串口输出等方式辅助调试。
  4. BOR/PVD: 欠压复位 (BOR) 和可编程电压检测器 (PVD) 在低功耗模式下仍然工作,以保护芯片。
  5. Flash 存储器: 在进入某些深度睡眠模式前(尤其是 待机/关机),确保没有正在进行的关键 Flash 操作(擦除/编程)。

理解这些功耗模式及其状态转换是成功设计基于 STM32L051 的超低功耗应用的关键。根据你的应用需求(唤醒频率、唤醒速度、状态保持要求、目标功耗)选择合适的模式组合。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:qq群:49734243 Email:zukeqiang@gmail.com

1477

主题

12909

帖子

55

粉丝
快速回复 在线客服 返回列表 返回顶部