低功耗模式
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 唤醒 ... */
/* 重新初始化外设和射频 */