1. 课程导入与续航目标定义

在电池供电的无线传感终端里,"能跑多久"几乎决定了产品能否成立。Silicon Labs 的低功耗方案(EFR32 系列 SoC、EFP01 能量管理、Series 2 射频子系统)之所以被广泛用于传感终端,核心原因不是单点指标有多极端,而是它把 MCU、射频、外设、时钟与电源域组织成了一套可以按需开关、按需唤醒的功耗结构。要优化续航,第一步不是写代码,而是把"终端由哪些功耗单元组成、电流从哪里漏掉、目标如何量化"这三件事讲清楚。

典型架构:四个功耗域与一条唤醒链

一个典型的 Silicon Labs 低功耗传感终端,可以拆成四个功耗域:

  • 感知域:传感器及其模拟前端,例如温湿度、加速度、气体或电流检测。它可能是 I²C/SPI 数字器件,也可能是需要激励电流的模拟桥路。
  • 计算域:EFR32 的 Cortex-M33 内核、内存与外设总线。它决定"醒着处理多久"。
  • 通信域:Sub-GHz 或 2.4 GHz 射频、PA、匹配网络与天线。它决定"每次发送花多少能量"。
  • 电源与时钟域:DC-DC、LDO、EFP01、低频晶振(LFXO)、高频晶振(HFXO)与 RTC。它决定"睡着时还剩多少静态电流"。

这四个域不是并列关系,而是被一条唤醒链串起来:RTC 或外部中断唤醒内核 → 内核上电传感器并采集 → 处理与打包 → 启动射频发送 → 等待确认或重传 → 关闭外设、切回 EM2/EM4 睡眠。续航优化的本质,就是让这条链上每一段的"电流 × 时间"尽可能小,同时不牺牲数据完整性。

Silicon Labs 低功耗传感终端:功耗域与唤醒链 电源与时钟域 EFP01 / DC-DC / LDO | LFXO 32.768 kHz | HFXO 38.4 MHz | RTC | EM2 / EM4 睡眠态 静态电流主战场 RTC / 外部中断唤醒 计算域 Cortex-M33 内核 内存 / DMA / 外设总线 运行态电流 ≈ 数 mA 决定"醒着处理多久" 感知域 I²C / SPI 数字传感器 模拟前端 / 桥路激励 采样电流与稳定时间 决定"采一次花多少" 通信域 Sub-GHz / 2.4 GHz 射频 PA / 匹配网络 / 天线 发射电流 ≈ 数十 mA 决定"发一次花多少" 采集 打包 发送完成 / 等待 ACK → 关闭外设 → 切回 EM2 / EM4 睡眠 续航量化核心:I_avg = D × I_active + (1 − D) × I_sleep D = T_active / T_period(占空比)| 续航 ≈ 电池容量(mAh) ÷ I_avg(mA) ÷ 24(天) 优化方向:降低 I_sleep、压缩 T_active、拉长 T_period,三者互相制约

续航瓶颈从哪里来

很多终端"标称能跑五年",实测却只有几个月,问题通常集中在四类瓶颈上。

第一类是睡眠电流被低估。EM2 下 EFR32 内核电流可低至微安级,但整机睡眠电流往往由外部器件决定:传感器未断电、上拉电阻持续灌流、LDO 静态电流偏大、未使用的 GPIO 悬空导致漏电、调试接口未关闭。一个 10 kΩ 上拉在 3.3 V 下就是 330 µA,足以让"五年"变成"几个月"。

第二类是唤醒时间被忽略。每次唤醒都要经历 HFXO 起振、DC-DC 稳定、传感器上电与转换、射频校准。这些时间虽然只有几百微秒到几毫秒,但乘以每天成千上万次唤醒,就变成可观的电荷消耗。例如每次唤醒多花 2 ms、电流 5 mA,每天 1000 次,就是 10 mC/天,约 2.8 µAh/天。

第三类是射频能量占比过高。发射电流可达数十毫安,若重传频繁、ACK 等待过长、发射功率过高,通信域会迅速吃掉大部分预算。链路预算与重传率必须和功耗一起设计。

第四类是占空比设计不合理。采样周期过短会让 T_active 频繁出现;周期过长又可能丢失事件。占空比不是越小越好,而是要与被测量的变化速率、上报时延要求匹配。

判断瓶颈的实用方法:先用电流探头或 Energy Profiler 抓一段完整工作周期的电流波形,把电荷量按"睡眠、唤醒、采集、处理、发射"分段积分,占比最大的那一段就是当前首要优化对象。

把续航目标写成可计算的指标

续航目标不能只写"尽量省电",要落到平均电流与占空比上。定义如下:

  • I_sleep:睡眠态整机电流,单位 µA。
  • I_active:唤醒后采集、处理、发射期间的平均电流,单位 mA。
  • T_active:单次唤醒的活动时间,单位 ms。
  • T_period:唤醒周期,单位 s。
  • D:占空比,D = T_active / T_period。

平均电流近似为 I_avg = D × I_active + (1 − D) × I_sleep。若电池容量为 C(mAh),则理论续航天数 ≈ C / I_avg / 24。

举一个教学示例(以下为合理假设的示例参数,非实测结果):某温湿度终端使用 EFR32,睡眠电流 2 µA,每次唤醒活动 8 ms、活动平均电流 6 mA,每 60 s 上报一次。则 D = 0.008 / 60 ≈ 1.33×10⁻⁴,I_avg ≈ 1.33×10⁻⁴ × 6 mA + 2 µA ≈ 0.8 µA + 2 µA ≈ 2.8 µA。若用 1000 mAh 电池,理论续航 ≈ 1000 / 0.0028 / 24 ≈ 14880 天,显然这个数字被理想化,实际还要扣除自放电、温度影响与重传。但它说明了一个关键结论:当睡眠电流降到微安级后,平均电流主要由睡眠电流和活动电荷共同决定,二者必须同时优化。

反过来看,如果睡眠电流是 50 µA,同样条件下 I_avg ≈ 50.8 µA,续航骤降到约 820 天。可见睡眠电流是续航的"地板",活动电荷是"台阶"。

设计目标如何拆解到各功耗域

把总目标拆成可执行的分项指标,才能指导后续选型与配置。一个可参考的拆解方式如下:

功耗域关键指标示例目标主要手段
电源与时钟I_sleep≤ 3 µA关闭未用外设、断开上拉、选用低静态 LDO/DC-DC、EM2/EM4 切换
感知域单次采样电荷≤ 0.5 µC传感器间歇供电、降低采样率、缩短稳定时间
计算域T_active≤ 5 msDMA 搬运、减少浮点、提高主频缩短运行时间
通信域单次发射电荷≤ 30 µC降低发射功率、缩短前导、减少重传、批量上报

这些数字不是硬性标准,而是示例性的设计锚点。实际项目中应根据传感器特性、协议要求与电池容量重新标定。重要的是:每个域都要有可测量、可验证的指标,而不是笼统地说"低功耗"。

常见误区:只关注 MCU 数据手册里的 EM2 电流,却忽略传感器、上拉、LDO 和调试接口的漏电。整机睡眠电流必须实测,不能靠数据手册相加。

从目标到验证的闭环

定义完目标后,需要一条可验证的路径:先用 Energy Profiler 或电流探头测量整机一个完整周期的电流波形,按睡眠、唤醒、采集、处理、发射分段积分得到电荷量;再与目标表逐项对比,找出超标项;然后针对超标项做单点优化并复测。只有形成"测量—对比—优化—复测"的闭环,续航目标才不是纸面数字。

本节的核心结论可以概括为三句话:终端由感知、计算、通信、电源时钟四个功耗域组成,续航瓶颈通常来自睡眠漏电、唤醒开销、射频能量和占空比设计;续航目标必须量化为平均电流与占空比;优化顺序应先压睡眠电流这个"地板",再压缩活动电荷这个"台阶"。