1. 低功耗概述:为什么需要低功耗?

各位同学,咱们开始这门课之前,先聊一个最根本的问题——为什么要低功耗?

我入行那会儿,做第一个电池供电的项目,选了个普通STM32F1。产品做出来,两节AA电池撑了不到三天。客户直接退货。嗯,从那以后,我对功耗这件事就再也不敢马虎了。

1.1 低功耗的驱动力

说白了,低功耗不是锦上添花,而是很多产品的生死线。你想想看,下面这些场景,哪个离得开低功耗?

  • 电池供电设备:智能手表、传感器节点、医疗贴片。换电池?不现实。
  • 能量采集系统:靠太阳能、振动发电。功耗高了直接罢工。
  • 热管理敏感产品:密闭空间里的设备,功耗高=发热高=死机。
  • 长期待机设备:烟雾报警器、门锁。一待就是几年。

核心观点:低功耗设计,本质是在性能和能耗之间找平衡。不是越省电越好,而是“够用且省电”。

1.2 STM32L4系列低功耗特性概览

STM32L4系列,是ST专门为低功耗场景打造的。我最早用L4做一款工业传感器,待机电流做到1.6µA,配合一个500mAh的电池,理论待机超过35年。当然,实际还要考虑自放电和温度,但已经很惊人了。

L4系列的核心低功耗特性,我整理了一张表:

特性 说明 典型数值
多种低功耗模式 Sleep、Low-power Run、Stop 0/1/2、Standby、Shutdown 从mA级到nA级
FlexPowerControl 独立控制每个外设的时钟和电源 按需供电
SMPS降压转换器 内置DC-DC,效率比LDO高 效率可达90%+
LPUART / LPTIM 低功耗串口和定时器,可在Stop模式下工作 µA级运行
RTC + 备份寄存器 VBAT引脚独立供电,保存时间和数据 ~1µA
快速唤醒 从Stop模式唤醒只需几个微秒 ~5µs

个人经验:L4的Stop 2模式是我最常用的。它保留了SRAM和大部分寄存器,唤醒快,功耗又低。做间歇性采样的项目,这个模式是首选。

1.3 低功耗设计的基本原则

这部分是我这些年踩坑踩出来的。你记住这几条,至少能少走一半弯路。

原则一:从系统层面规划功耗

别一上来就盯着单片机。先算清楚:整个系统的功耗预算。传感器、无线模块、电源转换效率,这些往往比MCU本身更耗电。

  • 先列清单:每个器件的工作电流和休眠电流
  • 算占空比:设备工作多久,休眠多久
  • 定电池:根据平均电流选电池容量

原则二:时钟和电压能降就降

功耗和频率成正比,和电压的平方成正比。这是物理定律。

  • 不需要高速时,降频。L4可以动态调整HCLK。
  • 能跑1.8V就别跑3.3V。L4的Vcore有多个范围。
  • 用内部低速时钟(LSI/LSE)代替高速时钟(HSE/HSI)。

避坑指南:我曾经在一个项目里,为了省事把所有外设时钟都开着。结果休眠电流多了200µA。排查了两天才发现,是SPI的时钟没关。记住:不用就关。

原则三:外设按需供电

L4的每个GPIO和外设都可以独立控制时钟和电源。别偷懒。

  • GPIO设为模拟模式最省电,因为数字输入缓冲器被关闭。
  • 不用的外设,调用HAL_xxx_DeInit()彻底关闭。
  • 使用DMA代替CPU搬运数据,CPU可以睡大觉。

原则四:选择合适的低功耗模式

L4提供了7种低功耗模式。别一上来就上Shutdown,要根据唤醒源和唤醒时间选。

模式 典型电流 唤醒时间 适用场景
Sleep ~mA级 ~ns CPU空闲,外设继续工作
Low-power Run ~500µA — 低速持续处理
Stop 0/1/2 ~10µA ~5µs 间歇性采样,保留SRAM
Standby ~0.3µA ~50µs 长时间待机,仅RTC运行
Shutdown ~10nA ~200µs 极低功耗,复位唤醒

我的习惯:做原型时,先跑一个功耗基线测试。把所有外设关掉,只留MCU,测一下各个模式的电流。这样后面加外设,功耗多了多少一目了然。

1.4 本章知识体系

下面这张图,把本章的核心逻辑串起来了。你保存好,后面每章都会用到。

低功耗设计知识体系 低功耗设计知识体系 为什么需要低功耗? 驱动力 电池供电 / 能量采集 热管理 / 长期待机 STM32L4 特性 7种低功耗模式 FlexPowerControl / SMPS LPUART / LPTIM / 快速唤醒 设计原则 系统级功耗预算 降频降压 / 按需供电 模式匹配 / 基线测试 目标:性能与能耗的最佳平衡 够用且省电

这张图把本章三个核心模块串起来了:驱动力告诉你为什么做,L4特性告诉你有什么工具,设计原则告诉你怎么做。后面每一章,都会围绕这张图展开。