1. 课程导入与功耗优化全景

在电池供电的物联网产品中,续航往往不是“顺便优化一下”的指标,而是决定产品能否成立的核心约束。Nordic nRF 系列(如 nRF52832、nRF52840、nRF5340)之所以被大量用于蓝牙低功耗、Thread、Zigbee 与私有 2.4 GHz 产品,正是因为它在射频、MCU 内核、外设与电源管理上为低功耗做了系统性设计。但“芯片低功耗”不等于“产品低功耗”——同一颗 nRF52840,做成每秒广播一次的温湿度传感器可能跑两年,做成持续连接的音频设备可能只撑几小时。本课程要解决的,就是把芯片的省电能力真正转化为产品续航。

nRF 系列的低功耗特性概览

理解 nRF 的功耗,先要理解它的电源域与工作状态。以 nRF52840 为例,芯片内部大致分为几个可独立控制的区域:CPU 与内存(核心域)、射频收发器、外设(UART/SPI/TWI/PWM/ADC 等)、以及始终供电的电源与时钟管理单元。功耗优化的本质,就是让每个区域“只在需要时上电,其余时间进入最低功耗状态”。

nRF 提供的主要功耗状态包括:

  • System ON 运行态:CPU 全速运行,典型电流约 3~6 mA(视主频与缓存命中而定)。
  • System ON Idle:CPU 睡眠但外设与 RAM 保持,唤醒极快,典型约 1~2 mA。
  • System OFF:仅保留唤醒源,RAM 内容丢失,典型约 0.3~1 µA。
  • 射频收发:BLE 发射峰值可达数 mA 至十几 mA,但持续时间极短,通常以“平均电流”衡量影响。

关键认知是:续航由平均电流决定,而不是峰值电流。一个 10 mA 的峰值如果只持续 1 ms、每 10 s 出现一次,其平均贡献仅约 1 µA。因此优化的主战场是“占空比”和“睡眠底电流”,而不是单纯压低峰值。

续航估算的基本公式:
平均电流 I_avg = Σ(各状态电流 × 该状态时间占比)
续航时间 T ≈ 电池容量(mAh) ÷ I_avg(mA)

例如使用 1000 mAh 的 CR2477 纽扣电池,若系统平均电流为 20 µA,理论续航约 1000 ÷ 0.02 = 50000 小时 ≈ 5.7 年;若平均电流升到 200 µA,则只剩约 0.57 年。可见平均电流每降一个数量级,续航就提升一个数量级。

续航优化的核心指标

在工程实践中,我们通常围绕以下指标展开工作:

指标含义典型关注值
睡眠底电流System OFF / Idle 下的静态电流µA 级,越低越好
平均工作电流一个完整工作周期内的平均电流由占空比决定
唤醒频率单位时间内唤醒次数直接影响平均电流
射频占空比射频开启时间占比连接间隔、广播间隔决定
外设漏电未关闭外设/GPIO 的额外消耗常被忽视的“隐形杀手”

其中“外设漏电”和“GPIO 悬空”是初学者最容易踩的坑:一个未配置的浮空引脚、一个忘记关闭的 UART、一个常亮的 LED,都可能让底电流从 2 µA 变成 200 µA,直接毁掉整个续航设计。

课程实战项目与开发环境

本课程围绕一个贯穿始终的实战项目展开:基于 nRF52840 的低功耗环境监测节点。该节点周期性采集温度与湿度,通过 BLE 广播或连接上报数据,其余时间进入深度睡眠。我们会从零搭建工程,逐步测量、分析并优化它的功耗,最终把平均电流从“能跑但费电”的初始版本压到 µA 级。

开发环境建议如下:

  • 硬件:nRF52840 DK 开发板 + 外接传感器(如 SHT30)+ 可调电源或 Nordic Power Profiler Kit II(PPK2)。
  • 软件:nRF Connect SDK(基于 Zephyr)或 nRF5 SDK,配合 SEGGER Embedded Studio / VS Code。
  • 测量工具:PPK2 可直接在 nRF Connect for Desktop 中实时查看电流曲线,是分析占空比与睡眠底电流的利器。

搭建时先确认工具链能编译并烧录一个最小工程,再用 PPK2 观察其运行电流,建立“代码行为—电流波形”的对应直觉。这一步看似简单,却是后续所有优化的基准。

nRF 低功耗系统:状态、电流与续航关系 功耗状态 System ON 运行 (3~6 mA) Idle 睡眠 (1~2 mA) System OFF (0.3~1 µA) 典型周期电流波形(示意) mA t 射频/采集 睡眠底电流 续航核心关系 I_avg = Σ(状态电流 × 时间占比) → T ≈ 电池容量 ÷ I_avg 平均电流每降 10 倍,续航提升 10 倍 优化手段与影响 降低唤醒频率 ↓ 平均电流 关闭闲置外设 ↓ 底电流 缩短射频时间 ↓ 占空比 GPIO/引脚管理 ↓ 漏电