1. 低功耗需求分析:项目功耗指标定义、电池选型与续航计算、系统工作模式划分
各位同学,咱们开始第一讲。做低功耗项目,最忌讳什么?上来就画板子、写代码,最后发现电池撑不过半天。我见过太多这样的案例了。
所以,第一步必须是需求分析。说白了,就是搞清楚三个问题:你到底要多省电?用什么电池?系统怎么跑?
1.1 项目功耗指标定义
先定指标。没有指标,优化就是瞎忙活。我个人习惯,先列一个功耗预算表。
| 工作模式 | 典型电流 | 持续时间 | 占比 |
|---|---|---|---|
| 运行模式(全速) | ~80 mA | 10 ms | 0.01% |
| 睡眠模式(唤醒) | ~5 mA | 50 ms | 0.05% |
| 深度睡眠(Stop 2) | ~3 μA | 99.94% | 几乎全部 |
这张表看着简单,但里面的坑不少。比如运行模式的80mA,你以为是平均值?其实峰值可能冲到150mA。我在项目中遇到过,传感器启动瞬间电流直接拉垮了电池电压,导致MCU复位。所以,峰值电流也要标出来。
核心指标定义清单:
- 平均电流 (I_avg):决定总续航,单位 μA 或 mA。
- 峰值电流 (I_peak):决定电池内阻和电压跌落,单位 mA。
- 休眠电流 (I_sleep):决定待机时长,单位 μA。
- 工作周期 (Duty Cycle):运行时间 vs 总时间。
为什么要定义这么细?你想想看,一个产品标称“待机一年”,结果用户一用,三天就没电了。这就是工作周期没算清楚。
1.2 电池选型与续航计算
指标定好了,下一步就是选电池。这里我给大家一个经验公式:
续航时间 (小时) = 电池容量 (mAh) / 平均电流 (mA) × 0.8
那个0.8是放电效率系数。为什么打折?因为电池实际放不出标称容量,尤其低温下。我记得有一次做户外设备,用的CR2032,标称225mAh,结果在-10°C下只放出不到一半。从那以后,我选电池必看放电曲线。
常见电池对比
| 电池类型 | 标称电压 | 典型容量 | 适用场景 |
|---|---|---|---|
| CR2032 (锂锰) | 3.0V | 225 mAh | 超低功耗、小体积 |
| AA 碱性 | 1.5V | 2000 mAh | 中等功耗、易更换 |
| 锂聚合物 | 3.7V | 500-2000 mAh | 可充电、大电流 |
| ER14505 (锂亚) | 3.6V | 2700 mAh | 长寿命、工业级 |
选型小技巧:
如果平均电流在10μA以下,CR2032是性价比之王。但如果需要间歇性发射射频,峰值电流超过50mA,锂亚电池更靠谱。我一般会留30%的余量,别卡着理论值选。
1.3 系统工作模式划分
电池选好了,接下来要设计系统怎么跑。STM32L4支持多种低功耗模式,但你不能指望一个模式打天下。我习惯把系统分成3~4个明确的工作模式。
- 模式1:运行模式 (Run) — 全速处理数据,外设全开。电流最大,时间最短。
- 模式2:睡眠模式 (Sleep) — CPU暂停,外设保持。适合等待外设事件。
- 模式3:停止模式 (Stop 2) — 大部分外设关闭,SRAM保持。这是主力低功耗模式。
- 模式4:待机模式 (Standby) — 几乎全部关闭,仅RTC和唤醒引脚工作。电流最低,但唤醒最慢。
为什么要分这么细?我举个例子。一个温湿度传感器,每10分钟采集一次数据,通过蓝牙发送。如果全程用Stop 2,采集时唤醒,发送时切到Run,发送完再睡回去。这样平均电流可以控制在10μA以下。但如果全程用Standby,每次唤醒都要重新初始化,反而更费电。
避坑指南:
我曾经犯过一个错误:在Stop 2模式下,忘了关闭某个GPIO的上拉电阻,结果休眠电流从3μA飙到了30μA。排查了整整两天。所以,每个模式都要实测电流,不要只看数据手册。
1.4 知识结构图:低功耗需求分析框架
下面这张图,是我自己总结的低功耗需求分析流程。做项目前,先按这个框架走一遍,能避免80%的坑。
这张图的核心逻辑是自上而下、逐步细化。先定大指标,再选电池,然后划分模式,最后实测验证。如果实测不达标,就回到前面迭代。我做过一个项目,前三轮实测电流都超标,最后发现是模式切换时有个外设没关干净。嗯,这种问题,光靠理论分析是发现不了的。
1.5 本章小结
这一章我们讲了三个核心点:
- 功耗指标:平均电流、峰值电流、休眠电流、工作周期,一个都不能少。
- 电池选型:别只看容量,要看放电曲线和峰值能力。留30%余量是底线。
- 模式划分:STM32L4的多种低功耗模式要组合使用,单一模式解决不了所有问题。