4. LowPower 低功耗评估¶
4.1. 简介¶
博流系列芯片拥有丰富的低功耗特性,以适配不同的低功耗应用场合。为了方便用户快速的评测使用 bl 系列 MCU 低功耗性能 bl_mcu_sdk 提供了一套抽象的低功耗接口,将低功耗等级分为四个等级,分别为
Running : Running 为 CPU 正常运行时的功耗,由客户应用代码执行的功能决定功耗。
WFI :WFI 模式,CPU 的 clock 处于被 Gating 状态,CPU 停止运行,当用户退出WFI模式的时候程序将会继续运行。
PDS : PDS 模式,关闭了芯片上大多数电源域,同时关闭了 CPU,和 CPU 处于同一个电源域的 ITCM,DTCM 等 RAM 不可使用,只有 64K 的 OCTAM 可以保存数据,可以通过内部 RTC 进行唤醒,或者使用 GPIO 引脚(在 GPIO 电源域没有关闭的情况下)唤醒。
HBN : HBN 模式,关闭了芯片上绝大多数电源域,关闭了 CPU 以及 64K OCRAM,只有位于 AON 域的 4K RAM 可以保存数据,可以通过内部 RTC 进行唤醒,或者使用特定的唤醒引脚(位于 AON 域的引脚)唤醒。
bl_mcu_sdk 提供了一个简单的低功耗参考示例(bl_mcu_sdk examples/power/lowpower_test/),旨在帮助用户快速评估低功耗功能,如果需要进一步适配自身的低功耗场景,采取不同的低功耗策略,请查阅相关 datasheet 或者寻找 Boufflao Lab 的技术支持。 在该示例中,外设及 CPU 的时钟选择均是晶振 32M。基于该示例的功耗测量结果如下表所示:
模式
参考电流
对应基础模式
唤醒源
备注
Running
5.68 mA
Run
所有外设时钟都打开
WFI
3.14 mA
WFI
任意中断
除串口外,其它外设时钟关闭
PDS
10 uA
PDS 31
内部RTC/引脚中断
64K OCRAM保存数据
HBN
1 uA
HBN 1
内部RTC/引脚中断
4K AON RAM保存数据
上表中的参考电流是通过示例固件测试得出的。符合 bl70x 系列 MCU 的 spec 的描述,run wfi pds hbn 四种等级的定义简化了原先的 hbn level 以及 pds level 的设定。
见 bl702_bl704_bl706_DS_EN_Combo_1.9.pdf page 28

4.2. 低功耗示例测试方法¶
4.2.1. 编译低功耗示例代码¶
在工程目录下键入 make APP=lowpower_test SUPPORT_SHELL=y BOARD=bl706_lp
完成低功耗示例 bl706 的编译。或者直接使用 CDK 工程,完成编译下载
您可以参考本文档《快速开发指南》来获取更多编译烧写的信息。
当编译并烧写成功后,连接串口到电脑端,并复位芯片,Xshell 会出现如下图所示的页面。

4.2.2. 准备低功耗测试所需的硬件环境¶
可以串联电流表到电源端的电路板
电流表
一台 PC 主机(运行 Windows 或者 Linux 系统)
TTL 转 USB
如下图所示,将电流表串联进入 bl706 模组的供电线路,通过 PC 端的串口调试助手软件,下发不同的低功耗指令,使得 bl706 进入对应的低功耗模式 观察电流表示值,完成评估。

4.2.3. 使用 Xshell 开始评估低功耗性能¶
用户可以通过在 Xshell 输入下述指令,进入对应的低功耗模式。
run
复位芯片之后,默认进入 run 模式,没有进入任何低功耗模式,芯片实际在运行 while(1); 语句。
wfi
进入 wfi 模式,后面不加任何参数,进入之后,CPU 处于 clock gating 状态,降低功耗
进入 wfi 模式后,任何中断会唤醒,例如 uart 中断。在 Xshell 中敲击回车会触发 BL706 UART RX 中断,因此可以通过此方法唤醒 wfi 低功耗模式。
pds sleeptime
pds 可以选择带一个 sleeptime 的参数,决定其内部 RTC 唤醒时间。如果指令不带此参数,那么默认不使用 RTC 内部唤醒,目前的固件仅支持上电复位唤醒。
如果指令包含 sleeptime 参数,pds 将会在``sleeptime * clock_period`` 的时刻被唤醒,表现为复位芯片,重新打印起始报文。
进入低功耗模式后,RTC 的时钟是 32K,因此 sleeptime 为 32768 时,表现为睡眠 1S 后唤醒。
hbn sleeptime
hbn 可以选择带一个 sleeptime 的参数,决定其内部 RTC 唤醒时间。如果指令不带此参数,那么默认不使用 RTC 内部唤醒,目前的固件仅支持上电复位唤醒。
如果指令包含 sleeptime 参数,hbn 将会在``sleeptime * clock_period`` 的时刻被唤醒,表现为复位芯片,重新打印起始报文。
进入低功耗模式后,RTC 的时钟是 32K,因此 sleeptime 为 32768 时,表现为睡眠 1S 后唤醒。