3. 智能家居终端电源管理与低功耗设计
电池供电的智能家居终端,例如门磁、温湿度传感器、人体红外探测器,通常要求单节 CR2032 或两节 AAA 电池工作 1~3 年。这类产品没有持续供电条件,功耗设计不是“优化项”,而是决定产品能否成立的核心指标。本节围绕 nRF 系列 SoC 的电源模式、外设功耗构成、低功耗定时器与 RTC 唤醒机制,以及续航估算方法展开。
一、电源模式与系统 OFF/ON 的边界
nRF52/nRF53 系列提供多种电源状态,理解它们的关键是区分“CPU 停止”和“系统真正断电”。运行模式(Run)下 CPU 与高速时钟全开,电流通常在 mA 级;空闲模式(Idle)停止 CPU 但保留外设与 RAM,电流降到 µA 级;System OFF 则关闭大部分电源域,仅保留唤醒源和极少量寄存器,电流可低至 0.3~1 µA 量级(具体以芯片数据手册为准)。
需要特别注意的是,System OFF 与“外设关闭”不是一回事。进入 System OFF 后,RAM 内容丢失,程序从复位重新开始;而 Idle 模式下 RAM 保持,唤醒后从断点继续。因此,对于需要保存传感器状态或配对信息的终端,应优先使用 Idle + 低功耗外设,而不是频繁进出 System OFF。
二、外设功耗分析与取舍
终端功耗由多个外设叠加而成,常见构成如下表(数值为典型量级示例,实际以具体型号手册为准):
| 外设/模块 | 典型工作电流 | 典型空闲/关闭电流 | 说明 |
|---|---|---|---|
| CPU(64MHz) | 约 3~5 mA | — | 运行时间越短越好 |
| BLE 广播 | 峰值约 5~8 mA | — | 广播间隔决定平均功耗 |
| BLE 连接(从机) | 峰值约 5~8 mA | — | 连接间隔与从机延迟影响大 |
| RTC | — | 约 0.1~0.5 µA | 常开,用于定时唤醒 |
| 温度传感器 | 约 0.5~1 mA | <1 µA | 采样时间短 |
| GPIO 上拉/下拉 | — | 可达数十 µA | 易被忽视的漏电点 |
从表中可以看出,真正决定平均功耗的不是峰值电流,而是“峰值电流 × 持续时间”的积分。例如 BLE 广播峰值 6 mA,但每次广播事件仅持续约 1~2 ms,若广播间隔为 1 s,则平均电流约为 6 mA × 2 ms / 1000 ms = 12 µA。相比之下,一个未关闭的 GPIO 上拉电阻在 3 V 下若为 100 kΩ,就会持续消耗 30 µA,比广播本身还高。因此,外设功耗分析的第一步是找出“常开且不必要”的电流路径。
三、低功耗定时器与 RTC 唤醒
nRF 系列的低功耗定时器(RTC0/RTC1/RTC2)可在 CPU 休眠时继续计数,并在比较匹配时产生中断唤醒 CPU。典型用法是:配置 RTC 为 1 Hz 或更低频率,设置 CC 比较值,进入 Idle 模式,RTC 溢出时触发中断,CPU 醒来执行采样或广播,然后再次休眠。
// 示例:使用 RTC1 实现 1 秒周期唤醒(nRF5 SDK 风格)
nrf_drv_rtc_config_t rtc_cfg = NRF_DRV_RTC_DEFAULT_CONFIG;
rtc_cfg.prescaler = 32767; // 32.768kHz / (32767+1) = 1Hz
nrf_drv_rtc_init(&rtc1, &rtc_cfg, rtc_handler);
nrf_drv_rtc_cc_set(&rtc1, 0, 1, true); // 比较值 1,即 1 秒
nrf_drv_rtc_enable(&rtc1);
// 主循环中进入低功耗等待
while (1) {
__WFE(); // 等待事件,CPU 休眠
}
这里的关键点是:RTC 本身功耗极低,但唤醒后 CPU 的运行时间必须尽量短。如果每次唤醒都执行 10 ms 的 CPU 运算,按 4 mA 计算,平均电流就是 4 mA × 10 ms / 1000 ms = 40 µA,远高于 RTC 本身。因此,唤醒后的处理应遵循“快进快出”原则:只做必要的采样、打包和发送,其余逻辑放到事件驱动中。
四、续航估算与优化
续航估算的基本公式是:电池容量(mAh)÷ 平均电流(mA)= 理论续航(h)。以 CR2032 为例,标称容量约 220 mAh,但实际可用容量受放电电流、温度、截止电压影响,工程上常按 70%~80% 折算,即约 160~180 mAh。
假设某门磁终端平均电流为 15 µA,则理论续航 = 180 mAh ÷ 0.015 mA = 12000 h ≈ 500 天,约 1.4 年。如果平均电流降到 8 µA,续航可提升到约 2.5 年。这说明低功耗设计的收益是非线性的:每降低 1 µA,续航就延长数十天。
优化路径通常按收益排序:第一,消除 GPIO 漏电和未使用外设的常开电流,这往往能省下几十 µA;第二,降低 BLE 广播频率或使用连接模式下的从机延迟;第三,缩短 CPU 唤醒后的处理时间;第四,在允许的场景下使用 System OFF 替代 Idle。实际项目中,建议先用电流表或 Nordic Power Profiler Kit 测量各状态电流,再针对性优化,而不是凭经验猜测。
最后需要强调的是,低功耗设计是一个“测量—优化—再测量”的闭环过程。任何未经测量的功耗估算都只能作为初始参考,真正的续航数据必须在目标硬件和实际工作场景下验证。