1. 课程导入
做嵌入式这些年,我越来越觉得「功耗」是个绕不开的话题。早期做单片机项目,电池能撑一个月就觉得不错了。现在呢?用户期望的是半年、一年,甚至更久。这背后,其实就是低功耗设计的功夫。
这一章,我们先从根上聊聊功耗的来源、为什么值得花精力去优化,以及常用的分析工具有哪些。嗯,内容偏基础,但很重要——后面的章节都会用到这些概念。
1.1 功耗的两大来源:动态功耗与静态功耗
芯片的功耗,说白了就两块:动态功耗和静态功耗。搞懂它们,你才知道该从哪下手省电。
| 功耗类型 | 产生原因 | 典型场景 | 影响因素 |
|---|---|---|---|
| 动态功耗 | 电路翻转、信号跳变时产生的功耗 | CPU 运行、GPIO 翻转、总线通信 | 工作频率、电源电压、负载电容 |
| 静态功耗 | 晶体管漏电流导致的功耗 | 待机、休眠、深度睡眠 | 工艺制程、温度、阈值电压 |
动态功耗:芯片「动起来」才有的开销
动态功耗的公式很简单:P_dynamic = α × C × V² × f。α 是翻转率,C 是负载电容,V 是电压,f 是频率。
你看,电压是平方项,影响最大。所以很多低功耗设计的第一招就是降电压。我在项目中遇到过,把 STM32L4 的内核电压从 1.8V 降到 1.2V,动态功耗直接砍掉一半多。当然,降电压有代价——频率也得跟着降,否则时序跑不过去。
另一个常见手段是关时钟。不用的外设,时钟直接 gate 掉。我记得有个项目,GPS 模块的 SPI 接口在空闲时一直开着,功耗多了 3mA。后来加了个时钟门控,问题就解决了。
静态功耗:芯片「睡着」也在耗电
静态功耗来自晶体管的漏电流。工艺越先进,漏电流越大。28nm 以下的芯片,静态功耗甚至能占到总功耗的 30%~50%。
你想想看,设备休眠了,CPU 停了,外设关了,但电池还在慢慢放电。这就是静态功耗在作怪。
降低静态功耗的方法主要有:
- 电源门控(Power Gating):彻底切断不用的模块的电源
- 多阈值电压(Multi-Vt):关键路径用低阈值(快但漏电大),非关键路径用高阈值(慢但漏电小)
- 反向偏置(Reverse Body Bias):增加阈值电压,减少漏电流
1.2 低功耗设计的意义与挑战
为什么要做低功耗?原因很直接:用户体验和产品竞争力。
- 延长电池寿命:用户不想天天充电。智能手表、TWS 耳机、传感器节点,续航是核心卖点。
- 降低散热成本:功耗高了,散热片、风扇都得跟上。消费电子里,无风扇设计是趋势。
- 满足法规要求:欧盟 ErP 指令、能源之星,都有严格的待机功耗限制。
- 支持新应用:能量采集、无电池设备,功耗必须低到 μW 级别。
但低功耗设计并不容易。我总结了几大挑战:
- 性能与功耗的权衡:降频省电,但响应慢了。用户会抱怨「卡」。怎么平衡?没有标准答案。
- 软件与硬件的协同:硬件支持多种睡眠模式,但软件没用好,等于白搭。我见过太多项目,芯片支持深度睡眠,但驱动里忘了关外设时钟,待机电流多出 50μA。
- 测试与验证的难度:μA 级的电流波动,示波器根本看不准。得用专门的功耗分析仪。
- 温度的影响:静态功耗随温度指数上升。夏天 40°C 和冬天 0°C,待机电流能差好几倍。
1.3 功耗分析工具介绍
做低功耗设计,光靠「感觉」不行。你得有数据。下面是我常用的几类工具:
| 工具类型 | 代表产品 | 适用场景 | 精度 |
|---|---|---|---|
| 万用表 | Fluke 287、Keysight 34461A | 粗略测量平均电流 | μA 级 |
| 示波器 + 电流探头 | Keysight N2820A、Tektronix TCP0030A | 观察电流波形、瞬态事件 | mA 级 |
| 专用功耗分析仪 | Joulescope、Otii Arc、Nordic PPK2 | 精确测量动态电流、能量统计 | nA ~ μA 级 |
| 仿真工具 | SPICE、PrimeTime PX | 芯片级功耗估算 | 取决于模型 |
我个人最常用的是 Joulescope 和 Nordic PPK2。它们能实时显示电流波形,还能统计每个工作阶段的能量消耗。比如,你可以看到蓝牙广播时电流尖峰有多高、持续多久,然后针对性地优化。
下面这张图,是我总结的低功耗设计知识体系。你可以把它当作后续章节的导航图。
这张图把低功耗设计拆成了三个维度:功耗来源(知道问题在哪)、设计方法(知道怎么解决)、分析工具(知道效果如何)。后面的章节,我们会逐一深入每个分支。