在蓝牙低功耗 IoT 终端设计中,续航能力是决定产品实用性的核心指标之一。意法半导体推出的 BlueNRG-LP 与 BlueNRG-LPS 作为面向 BLE 场景的单模 SoC,基于 Cortex-M0 + 内核构建,通过分层硬件省电架构与配套软件管理机制,在保证射频性能的前提下实现了极致低功耗,广泛适配传感器节点、可穿戴设备、智能开关等电池供电场景。本文基于官方应用笔记 AN5466,系统拆解两款芯片的硬件省电模式、软件功耗管理逻辑、开发配置要点与实测功耗表现,为嵌入式开发者提供可落地的低功耗设计参考。
资料获取:【应用笔记】BlueNRG-LP、BlueNRG-LPS 省电模式
1. 硬件级核心省电模式
BlueNRG-LP/LPS 在硬件层面定义了两类深度省电模式,通过关闭不同层级的时钟、电源域与外设,在唤醒响应速度、可用唤醒源与功耗之间形成梯度差异,开发者可根据产品待机场景灵活选择。
1.1 Deepstop 深度停止模式
Deepstop 是日常低功耗待机的主流模式,核心特征是系统总线与高速时钟完全停止,仅保留必要的数字电源域以 1.0V 供电,维持基础唤醒检测能力。
该模式下,RAM0 区域默认保持数据保留,其余 RAM 区块可通过软件配置选择保留或断电,在功耗与数据保存之间做权衡。低速时钟源(LSE 或 LSI)可独立配置开启或关闭,对应不同的唤醒能力:
- 低速时钟开启时,RTC、独立看门狗 IWDG 保持运行,BlueNRG-LPS 还额外支持 LPUART 唤醒,同时射频唤醒模块与硬件虚拟定时器均可触发唤醒。
- 低速时钟关闭时,仅 GPIO 引脚可作为唤醒源,其中 BlueNRG-LP 支持 PA0-PA15、PB0-PB11 引脚唤醒,BlueNRG-LPS 支持全部 GPIO 引脚唤醒。
从 Deepstop 模式唤醒后,系统恢复运行模式,应用需等待高速晶振稳定后再执行业务逻辑。得益于软件层的上下文保存机制,外设配置与运行状态可自动恢复,对上层应用透明。
1.2 Shutdown 关断模式
Shutdown 是芯片功耗最低的工作模式,此时内部所有稳压器、时钟源与射频接口全部关闭,芯片处于接近完全断电的状态。
进入该模式需要通过专用软件序列触发,退出方式唯一:仅能通过 RESET 引脚施加复位脉冲唤醒,唤醒过程等同于上电复位(POR),所有外设配置与运行上下文都会丢失,复位原因可通过 PORRSTF 标志位识别。模式下可选择开启或关闭欠压检测(BOR)功能,适配不同的电源稳定性场景。
2. 软件省电管理机制
硬件省电模式的切换并非直接操作寄存器,而是通过官方提供的功耗管理中间件统一调度,核心是实现应用层需求与射频模块状态的协商,避免低功耗操作导致蓝牙数据丢失。
2.1 四级软件省电等级
功耗管理软件将硬件能力抽象为四级可申请的省电等级,由HAL_PWR_MNGR_Request()函数统一入口调用,函数会结合当前射频工作状态自动协商,最终返回实际生效的功耗等级:
- POWER_SAVE_LEVEL_RUNNING:全速运行模式,所有模块保持激活,不属于真正的省电模式,仅作为状态基准存在。
- POWER_SAVE_LEVEL_CPU_HALT:CPU 暂停模式,仅停止内核运行,所有外设保持工作,任意外设中断均可唤醒 CPU,响应速度最快,适合需要外设持续监测、CPU 间歇工作的场景。
- POWER_SAVE_LEVEL_STOP_WITH_TIMER:带定时器深度停止模式,对应硬件 Deepstop 且开启低速时钟,CPU 与绝大多数外设关闭,仅定时模块与唤醒源工作,是蓝牙连接、周期性广播场景的常用低功耗模式。
- POWER_SAVE_LEVEL_STOP_NOTIMER:无定时器深度停止模式,对应硬件 Deepstop 且关闭低速时钟,仅 GPIO 可唤醒,功耗更低,适合纯事件触发、无定时需求的超长待机场景。
2.2 核心 API 与关键机制
HAL_PWR_MNGR_Request()是功耗管理的核心入口,入参包含目标省电等级、唤醒源配置,出参返回协商后的实际等级。唤醒源配置支持独立设置高电平触发 GPIO、低电平触发 GPIO,以及 RTC、LPUART(仅 BlueNRG-LPS)的使能开关。
为保证低功耗切换的可靠性,软件框架提供了两个重要的辅助机制:
- 上下文自动保存恢复:进入省电模式前自动保存所有外设配置与应用运行上下文,唤醒后自动恢复,从应用视角看仅相当于执行了一次函数调用,无需额外处理复位与重配置逻辑。
- 二次校验回调:提供
App_PowerSaveLevel_Check()回调函数,在关中断、正式进入低功耗前二次校验目标省电等级是否仍然合理,避免 “计算功耗等级到正式进入低功耗” 的窗口中发生中断、导致系统状态变化却进入了错误功耗模式的问题。
若需要进入最低功耗的 Shutdown 模式,需调用专用函数HAL_PWR_MNGR_ShutdownRequest(),调用前需确保射频模块已进入睡眠、CPU 配置好深度睡眠标志,唤醒后等同于上电重启。
2.3 GPIO 唤醒的中断处理注意事项
Deepstop 模式下 GPIO 外设本身处于断电状态,因此引脚触发唤醒时,对应的硬件中断标志会丢失,无法直接通过常规 GPIO 中断服务函数处理事件。
针对该场景,官方框架提供了HAL_PWR_MNGR_WakeupIOCallback()回调机制:开发者需要在回调中根据唤醒源标志,执行对应引脚的中断业务逻辑,与正常 GPIO 中断处理函数保持一致的动作,确保无论是运行中还是休眠中触发的 IO 事件,都能得到正确响应。
3. 典型场景配置示例
不同应用场景对应不同的省电策略,以下为四类典型配置的实现逻辑与适用场景,可直接基于官方 SDK 工程修改适配。
3.1 CPU 暂停模式
该模式下所有外设保持运行,仅 CPU 空闲时暂停,适用于需要持续采集传感器数据、串口通信,仅利用 CPU 空闲降功耗的场景。配置时无需指定唤醒源,所有外设中断均可唤醒 CPU,射频忙碌时也不会降级,兼容性最高。
3.2 带定时唤醒的深度停止
这是 BLE 产品最常用的低功耗方案,配置低速时钟保持运行,搭配 GPIO 唤醒与虚拟定时器,既可以满足蓝牙广播、连接的定时唤醒需求,也能响应外部按键等 IO 事件。
例如配置 PA8 低电平唤醒,同时启动 2 秒超时的虚拟定时器,系统会在定时器到期或引脚触发时唤醒。若当前处于蓝牙连接或广播状态,协议栈会自动适配连接间隔 / 广播间隔,在必要时刻提前唤醒,保证射频通信不中断。
3.3 无定时深度停止
适用于纯事件驱动的待机场景,比如智能门锁、无源开关类产品,平时完全关闭时钟,仅靠外部 IO 事件唤醒,功耗达到 Deepstop 下的最低水平。
需要注意的是,若申请该模式时射频处于连接状态,软件协商后会自动降级为带定时器模式,避免因时钟关闭导致蓝牙连接断开,这也是功耗管理框架的核心保护机制。
3.4 关断模式
适用于超长待机、触发频率极低的场景,比如一次性传感标签、应急设备。进入后仅复位引脚可唤醒,唤醒后重新初始化所有外设与协议栈,适合对功耗要求极致、不介意启动延迟的产品。
4. 实测功耗参考
基于 STEVAL-IDB011V1 开发套件,在 3.3V 供电、0dBm 发射功率、全 64KB RAM 保留的条件下,官方测试得到典型 BLE 场景的平均电流数据,可作为产品功耗预估的基准:
| BLE 工作场景 | 平均电流 |
|---|---|
| 广播间隔 100ms | 137.898 µA |
| 广播间隔 1000ms | 15.412 µA |
| 连接间隔 100ms | 69.546 µA |
| 连接间隔 1000ms | 8.816 µA |
可以看出,随着广播 / 连接间隔拉长,平均功耗呈数量级下降,这也是 BLE 低功耗设计的核心优化方向:在满足业务响应延迟的前提下,尽可能拉长通信间隔,让芯片更长时间处于深度睡眠状态。
BlueNRG-LP/LPS 的低功耗体系设计兼顾了硬件极致功耗与软件开发便捷性,开发者无需深入底层寄存器操作,通过标准化功耗管理 API 即可实现分级省电,同时依靠内置的射频协商机制避免通信异常。实际开发中,建议先基于业务场景确定唤醒源与定时需求,选择对应基础省电等级,再通过调整蓝牙通信参数、RAM 保留范围进一步精细化优化,即可在保证功能稳定的前提下实现最优续航表现。
192