2、基础知识:低功耗嵌入式系统的基本概念、功耗来源(MCU、传感器、无线模块)与典型功耗指标
TinyML 的核心价值在于让机器学习推理在资源受限的嵌入式设备上运行,而这类设备绝大多数依赖电池或能量采集供电。理解低功耗嵌入式系统的基本概念、功耗来源与典型指标,是设计协同休眠策略的前提。若不清楚功耗从何而来、如何量化,后续的“休眠调度”便无从谈起。本节将系统梳理功耗的物理来源、各模块的耗电特性,以及工程中必须掌握的关键指标。
2.1 低功耗嵌入式系统的核心概念
低功耗嵌入式系统并非单纯追求“低电流”,而是在满足功能性能约束下,最小化系统总能耗(Energy = Power × Time)。工程上需要区分三个层次的概念:功耗(Power)是瞬时功率,单位 mW 或 µW;能耗(Energy)是时间积分,单位 mWh 或 µWh;平均功耗则是在一个工作周期内总能耗除以周期时长。TinyML 设备通常采用“突发工作-长时间休眠”模式,平均功耗往往比峰值功耗低 2~3 个数量级。
低功耗设计遵循“按需供电、按需运行”的基本原则。具体体现在:仅在需要时唤醒 MCU 执行推理;传感器以最低采样率工作;无线模块只在数据准备好后发射。这种时间分片策略要求系统设计者清楚每个模块的状态切换延迟和功耗参数,否则盲目休眠反而可能因频繁唤醒而增加总能耗。
2.2 三大功耗来源:MCU、传感器、无线模块
2.2.1 MCU 的功耗构成
MCU 的功耗分为动态功耗和静态功耗两部分。动态功耗由 CMOS 电路翻转产生,公式为 P_dyn = C·V²·f·α,其中 C 是负载电容,V 是工作电压,f 是时钟频率,α 是信号翻转率。静态功耗则来自晶体管的漏电流,包括亚阈值漏电和栅极漏电,在深睡眠时成为主导。
现代低功耗 MCU(如 STM32L 系列、Nordic nRF52、Ambiq Apollo4)提供多种功耗模式:运行模式(几 mA 到几十 mA)、睡眠模式(CPU 停止,外设可运行,几百 µA)、深度睡眠模式(仅保留 RTC 和少量 RAM,几 µA)、关断模式(几乎全部断电,仅保留唤醒引脚,几百 nA)。选择何种模式取决于唤醒延迟要求——从深度睡眠唤醒通常需要几十 µs 到几百 µs。
2.2.2 传感器的功耗特性
传感器功耗差异极大,从数字温湿度传感器(如 SHT40,待机 0.4µA,测量 180µA/2ms)到高性能惯性测量单元(如 BMI270,正常模式 950µA,低功耗模式 70µA),再到气体传感器(如 SGP40,需要持续加热,功耗高达 3mA)。传感器的功耗策略包括:降低采样率(从 100Hz 降到 1Hz 可减少 99% 功耗)、使用硬件 FIFO(让传感器自行缓存数据,MCU 批量读取)、关断电源(通过 MOSFET 或负载开关彻底断电)。
2.2.3 无线模块的功耗特征
无线通信是系统中最耗电的操作之一。以 BLE 为例,峰值发射电流可达 10~20mA,接收电流 5~10mA,但单次广播或连接事件仅持续 1~3ms。LoRa 模块发射电流可达 40~120mA(取决于发射功率),但传输速率低、单次发送时间短。Wi-Fi 模块功耗最高,峰值可达 200mA 以上。无线模块的功耗优化核心在于:减少发射次数(数据聚合)、缩短发射时间(提高波特率)、利用低功耗监听模式(如 BLE 的广播间隔拉长)。
| 模块类型 | 典型工作电流 | 典型待机/休眠电流 | 状态切换时间 | 关键优化策略 |
|---|---|---|---|---|
| MCU (Cortex-M4F) | 5~50 mA @ 64MHz | 1~5 µA (深度睡眠) | 唤醒 10~100 µs | 降低主频、使用低功耗定时器 |
| IMU 传感器 | 0.5~1 mA (正常) | 2~10 µA (待机) | 启动 1~10 ms | 降低 ODR、使用 FIFO 批量读取 |
| BLE 模块 | 10~20 mA (TX/RX) | 1~3 µA (休眠) | 唤醒 0.5~2 ms | 拉长广播间隔、连接事件聚合 |
| LoRa 模块 | 40~120 mA (TX) | 1~2 µA (休眠) | 唤醒 1~5 ms | 降低发射功率、减少发送频次 |
2.3 典型功耗指标与测量方法
工程中必须掌握以下功耗指标,它们直接决定电池寿命估算的准确性:
- 峰值电流(Peak Current):系统在无线发射或传感器启动瞬间的最大电流,影响电池瞬间放电能力和电源设计。
- 平均电流(Average Current):一个完整工作周期内的电流平均值,是电池寿命计算的主要依据。
- 休眠电流(Sleep Current):系统处于深度睡眠时的电流,通常要求低于 10µA。
- 有效占空比(Duty Cycle):高功耗状态时间占总时间的比例,TinyML 系统通常要求低于 1%。
- 能量/推理(Energy per Inference):完成一次推理所需的总能量,单位 µJ,是衡量 TinyML 效率的核心指标。
测量方法上,使用串联电阻法测量瞬时电流波形,配合示波器观察各状态切换时的电流尖峰;使用库仑计(如 INA219)测量长时间平均电流;使用功耗分析仪(如 Joulescope)可同时获得高时间分辨率和宽动态范围。测量时需注意:在 µA 级休眠电流和 mA 级运行电流之间切换时,普通万用表无法准确捕捉,必须使用对数刻度的功耗分析仪或分段测量。
2.4 案例拆解:智能温湿度传感器的功耗预算分析
以一个典型的 TinyML 应用——电池供电的智能温湿度传感器为例,进行功耗预算分析。该设备每 5 分钟采集一次温湿度数据,在本地运行一个简单的异常检测模型(TinyML 推理),仅在检测到异常时通过 BLE 发送告警。
系统组成与参数:
- MCU:STM32L432KC,运行模式 6mA @ 16MHz,深度睡眠 2.5µA,唤醒时间 50µs
- 传感器:SHT40,测量 180µA/2ms,待机 0.4µA
- BLE 模块:nRF52832,TX 峰值 15mA/3ms,休眠 1.5µA
- 电池:CR2032 纽扣电池,标称容量 220mAh
工作周期分解(每 5 分钟 = 300 秒):
1. 唤醒 MCU + 传感器启动: 2ms @ 6mA = 12µAh
2. 传感器测量: 2ms @ 180µA = 0.36µAh
3. MCU 读取数据 + 推理: 15ms @ 6mA = 90µAh
4. 结果正常,不发送无线: 0µAh
5. 进入深度睡眠: 300s - 19ms ≈ 299.98s @ 2.5µA = 749.95µAh
6. 传感器待机: 299.98s @ 0.4µA = 119.99µAh
7. BLE 休眠: 299.98s @ 1.5µA = 449.97µAh
单周期总能耗 = 12 + 0.36 + 90 + 749.95 + 119.99 + 449.97 ≈ 1422µAh
平均电流 = 1422µAh / 300s = 4.74µA
预计电池寿命 = 220mAh / 4.74µA ≈ 46,400 小时 ≈ 5.3 年
分析判断:从分解数据可见,虽然 MCU 推理只占 15ms,但其能耗占比为 90/1422 ≈ 6.3%;而三个模块的休眠电流合计贡献了 (749.95+119.99+449.97)/1422 ≈ 92.8% 的能耗。这说明休眠电流是电池寿命的决定因素,而非运行功耗。若将 BLE 模块通过负载开关彻底断电(假设关断后漏电 0.1µA),则单周期能耗降至约 972µAh,电池寿命延长至 7.7 年。
优化措施与结果:
- 将 BLE 模块电源用 MOSFET 开关控制,休眠时彻底断电,节省 449.97µAh/周期
- 将传感器采样间隔从 5 分钟延长至 10 分钟(应用允许),总能耗减半
- MCU 推理时降低主频至 8MHz(推理时间增加至 25ms,但电流降至 3.5mA),能耗从 90µAh 降至 87.5µAh,几乎不变但降低了峰值电流
复盘经验:低功耗设计应优先关注“长时间处于的状态”的功耗,而非“短时间高功耗”的状态。对于每 5 分钟才工作一次的 TinyML 设备,休眠电流每降低 1µA,电池寿命可延长约 1.2 年。此外,使用负载开关切断不必要模块的电源,是比依赖模块自身休眠模式更可靠的低功耗手段。
2.5 常见误区与设计要点总结
常见误区一:只关注峰值功耗而忽视平均功耗。有些工程师看到无线发射时 120mA 的峰值电流就急于更换电池,却忽略了该状态仅持续 3ms,对总能耗贡献微乎其微。正确的做法是计算平均电流,并对照电池的容量和放电曲线。
常见误区二:所有外设都使用 MCU 的 GPIO 供电。GPIO 的驱动能力有限(通常 20mA),且无法彻底关断漏电。对于传感器和无线模块,应使用专用的负载开关(如 TPS22860)或 MOSFET 电路,确保休眠时完全断电。
常见误区三:忽略传感器和无线模块的启动时间。某些传感器从待机到稳定输出需要 10ms 以上,若 MCU 唤醒后立即读取数据,可能得到无效值,导致重试而增加功耗。应在固件中设置合理的稳定等待时间,或使用传感器内置的数据就绪中断。