1. STM32L4 低功耗模式概述:从睡眠到待机,你该怎么选?
做嵌入式久了,你会发现一个真理:功耗是设计出来的,不是测出来的。STM32L4 系列之所以在物联网和可穿戴领域这么火,说白了就是它在「省电」这件事上做到了极致。今天我们就来聊聊它的三种低功耗模式——睡眠、停止、待机,以及每种模式下的唤醒源。
我个人习惯把低功耗设计比作「睡觉」:
- 睡眠模式 = 打盹,随时能醒
- 停止模式 = 深睡,需要闹钟叫醒
- 待机模式 = 关机,只能按电源键重启
嗯,这个比喻虽然糙,但道理不糙。下面我们一个一个拆开看。
1.1 睡眠模式(Sleep Mode)—— 最浅的睡眠
睡眠模式是功耗最低的「清醒」状态。CPU 停了,但外设还在跑。什么意思呢?就是 CPU 不干活了,但定时器、串口、ADC 这些外设依然在工作。
- CPU 时钟关闭,但外设时钟保持
- SRAM 和寄存器内容全部保留
- 唤醒延迟极短(几个时钟周期)
- 典型电流:约 100 µA/MHz(取决于外设开启数量)
唤醒源有哪些?
- 任何中断(EXTI、定时器、UART、SPI、I2C 等)
- 任何事件(Event)
- WFI(等待中断)或 WFE(等待事件)指令触发
我在项目中遇到过这样一个场景:一个温湿度传感器需要每 10 秒采集一次数据。如果每次都从停止模式唤醒,那 10 秒的周期里大部分时间都在「启动-采集-休眠」的切换中浪费了。后来我改用睡眠模式 + RTC 定时中断,CPU 在采集间隙几乎不耗电,唤醒也快,整体功耗降了 40%。
1.2 停止模式(Stop Mode)—— 深度睡眠,但保留记忆
停止模式才是真正意义上的「低功耗」。CPU 停了,大部分外设也停了,只有少数几个模块还在工作——比如 RTC、LPTIM(低功耗定时器)、LPUART(低功耗串口)。
你想想看,这就像你晚上睡觉,手机放在床头柜上,屏幕关了,Wi-Fi 关了,但闹钟还在走。这就是停止模式。
- CPU 和外设时钟全部关闭
- SRAM 和寄存器内容保留(取决于是否关闭 SRAM 供电)
- 唤醒延迟:约 5 µs(从 Stop 0 模式)到 50 µs(从 Stop 2 模式)
- 典型电流:Stop 0 约 100 µA,Stop 1 约 30 µA,Stop 2 约 3 µA
唤醒源有哪些?
- 任何 EXTI 线(外部中断)
- RTC 闹钟/唤醒定时器
- LPTIM 比较匹配
- LPUART 接收中断
- I2C 地址匹配(Stop 1/Stop 2 模式)
- USB 唤醒(仅 Stop 0 模式)
| 停止子模式 | SRAM 供电 | 典型电流 | 唤醒延迟 | 适用场景 |
|---|---|---|---|---|
| Stop 0 | 全部保留 | ~100 µA | ~5 µs | 需要快速响应的场景 |
| Stop 1 | 全部保留 | ~30 µA | ~10 µs | 平衡功耗与响应 |
| Stop 2 | 部分保留 | ~3 µA | ~50 µs | 电池供电、长周期采集 |
1.3 待机模式(Standby Mode)—— 最低功耗,但一切归零
待机模式是 STM32L4 的「终极省电方案」。说白了,就是除了 RTC 和备份域(Backup Domain)之外,整个芯片几乎都断电了。SRAM 内容丢失,寄存器复位,只有 RTC 和几个唤醒引脚还能工作。
这就像你出差前把家里的总闸拉了,只留一个智能门锁还在工作。功耗极低,但回来之后所有东西都要重新初始化。
- CPU、外设、SRAM 全部断电
- 备份域(RTC、备份寄存器)保留
- 唤醒后相当于复位(从 Reset Handler 开始执行)
- 典型电流:约 100 nA(仅 RTC 运行)
唤醒源有哪些?
- WKUP 引脚上升沿(PA0、PC13、PE6 等)
- RTC 闹钟/唤醒定时器
- RTC 入侵检测(TAMPER)
- RTC 时间戳事件
- NRST 引脚复位
1.4 三种模式对比:一张图看懂
为了让你更直观地理解这三种模式的区别,我画了一张对比图。你可以把它当作选型时的「速查表」。
1.5 如何选择?我的经验法则
说了这么多,你可能会问:那我到底该用哪种模式?
我的经验是,先回答三个问题:
- 唤醒频率有多高? 如果每秒唤醒几十次,用睡眠模式。如果几分钟甚至几小时才唤醒一次,用待机模式。
- 唤醒后需要保留什么? 如果数据不能丢,用停止模式(SRAM 保留)。如果数据可以重新采集,用待机模式。
- 唤醒延迟能接受吗? 如果要求 µs 级响应,用睡眠模式。如果 ms 级响应就够了,停止模式完全 OK。
1.6 本章小结
这一章我们聊了 STM32L4 的三种低功耗模式:
- 睡眠模式:CPU 停,外设跑,唤醒快,适合高频唤醒场景
- 停止模式:CPU 和外设都停,SRAM 保留,适合中等频率唤醒
- 待机模式:全芯片断电,功耗最低,适合超低频唤醒