跳转至

低功耗模式

LPM(Low Power Management)、睡眠/唤醒

学习目标

  • 理解 WS63 的低功耗模式——Idle / Sleep / Deep Sleep 的功耗和唤醒延迟差异
  • 掌握系统级睡眠使能/唤醒源配置
  • 理解各子系统功耗对整体的影响

基本概念

低功耗三级模式

模式 CPU RAM 射频 功耗 唤醒延迟
Idle 空转 保持 工作 ~5mA 0
Sleep 保持 ~1mA ~1ms
Deep Sleep 部分保持 ~50μA ~10ms

系统级功耗 = 各子系统之和

设备总功耗是各子系统的叠加:

子系统 省电措施
WiFi wifi_sta_set_pm(1) 使能省电模式
SLE 增大广播间隔(如 25ms → 100ms)
BLE 增大广播间隔
外设 不用时关闭时钟门控(Clock Gating)

唤醒源配置

GPIO 按键 / RTC 闹钟 / UART 数据 / WiFi Beacon——选择合适的唤醒源避免误唤醒。

涉及 API

API 用途
uapi_lpm_set_sleep_mode(mode) 设置睡眠模式
uapi_lpm_set_wakeup_source(source) 配置唤醒源
uapi_lpm_enter_sleep() 进入睡眠模式
wifi_sta_set_pm(1) WiFi 省电模式

案例说明

做什么

电池供电的传感器设备——空闲时 Deep Sleep(50μA),RTC 每 60 秒唤醒采集上报(5mA,持续 2 秒),平均功耗 ~200μA。

sequenceDiagram
    participant S as 传感器设备
    participant R as RTC

    loop 每 60 秒
        R->>S: 唤醒
        S->>S: 采集 + 上报 2 秒 5mA
        S->>S: uapi_lpm_enter_sleep
        Note over S: Deep Sleep ~50μA
    end

关键配置

参数 说明
Deep Sleep 唤醒源 RTC 定时 + GPIO 按键
睡眠前操作 关闭所有外设时钟和射频(唤醒后重新初始化)
Deep Sleep 唤醒延迟 ~10ms(晶振起振 + 系统初始化)

代码详解

概念性代码:

/* 配置 RTC 唤醒源 */
uapi_lpm_set_wakeup_source(LPM_WAKEUP_RTC);

/* 配置 GPIO 按键唤醒 */
uapi_lpm_set_wakeup_source(LPM_WAKEUP_GPIO);

/* 进入 Deep Sleep */
uapi_lpm_set_sleep_mode(LPM_MODE_DEEP_SLEEP);

/* 关闭射频和外设时钟... */
wifi_sta_disconnect();
uapi_clock_clken_config(CLOCK_MODULE_UART0, false);

/* 进入睡眠 */
uapi_lpm_enter_sleep();
/* ... 60 秒后 RTC 唤醒 ... */
/* 重新初始化外设和射频 */