[STM32WB] STM32WB BLE 应用低功耗设计

[复制链接]
862|4
 楼主| 黑心单片机 发表于 2021-12-29 20:11 | 显示全部楼层 |阅读模式
前言
功耗是物联网应用当中非常关键的因素,在开发的早期都会对功耗进行评估和测试。那么,如何
使用 ST 提供的工具对动态功耗进行测量呢?针对 BLE 应用应当如何进行低功耗的设计呢?本篇
跟大家一起聊聊该话题。

 楼主| 黑心单片机 发表于 2021-12-29 20:13 | 显示全部楼层
测量工具
在本文中使用 CubeMonitor-Power + Power Shield 的组合工具对 STM32Nucleo 开发板的动态功
耗进行测量。
CubeMonitor-Power 是 ST 提供的上位机软件,主要帮助用户动态的测量功耗。用户可以设定采
样频率,采样时间,输入电压等。其界面如下:
4589461cc50763e866.png
X-NUCLEO-LPM01A 是 ST 提供的一块功耗测量的评估板,它可以配合 CubeMonitor-Power 上
位机软件,对目标板的动态功耗进行测量,方便开发者对功耗进行评估。其特性如下:
• 可编程电压源范围:1.8v~3.3v
• 静态测量

电流范围:1nA~200mA

• 动态测量:

电流范围:100nA~50mA
• 100KHz 带宽,3.2Msps 采样率
• 功耗测量范围:180nW~165mW

1981761cc509460315.png
X-NUCLEO-LPM01A 与 STM32WB Nucleo 板的连接如下所示,完成连接后就可以通过上位机控
制和测量 Nucleo 的功耗了。

2628161cc50a914540.png
低功耗模式


5238461cc50ba78380.png
不同低功耗模式的区别主要如下:

3408161cc50d1a2770.png
STM32WB 支持的低功耗模式非常多,首先需要根据应用情况选择一个适合的低功耗模式,能保
持 BLE 连接的低功耗模式主要有 Sleep 和 STOP,所以选择 Sleep 模式和 STOP2 模式进行测量
后结果如下:

9180961cc50e027881.png
5055561cc50eaee5e8.png
图中红色脉冲代表的是设备的周期性广播,从测试结果来看 STOP2 模式比 Sleep 模式功耗低很
多,所以应用在不在乎唤醒时间的情况下,应当尽可能进入 Stop2 模式。


 楼主| 黑心单片机 发表于 2021-12-29 20:14 | 显示全部楼层
SMPS
LDO 是一种线性电源,它的优势在于结构简单,电流纹波比较低,但电源效率偏低。
SMPS 是一种开关电源,它的优势在于电源效率高,损耗小,但由于频率较高会对周围设备造成
一定的干扰,需要注意。
4550361cc5103a7d02.png
通过修改 Nucleo 板子上的 SB31 可以控制 LDO 还是 SMPS 供电:
SB31 打开:SMPS 打开
SB31 关闭:SMPS 关闭
软件侧,打开 SMPS,修改 app_conf.h 代码如下:
#define CFG_USE_SMPS 1
功耗测量结果如下:
5696461cc511a5a760.png
关闭 SMPS,使用 LDO,修改 app_conf.h 代码:
#define CFG_USE_SMPS 0
功耗测量结果如下:
3122161cc5132602ea.png
从以上图片可以看出,使用 SMPS 无论是平均电流还是低功耗状态下的电流都要更小,所以应当
尽可能使用 SMPS。
 楼主| 黑心单片机 发表于 2021-12-29 20:15 | 显示全部楼层
广播参数
使用 BLE_HeartRate Demo 不需要做任何修改就可以测试不同的广播参数,该 demo 默认会先
进行一段时间快速广播,然后再进入慢速广播。
8574261cc51503a622.png
从图中可以看出,广播间隔不同,平均功耗不同。
左侧图片的广播间隔为 80ms~100ms,平均电流为 282.914 uA。 右侧图片的广播间隔为
1s~2.5s,平均电流为 16.443 uA。
可以看出广播间隔的长短对功耗影响很大,所以在设计 BLE 应用的时候,应当考虑适当降低广
播间隔。
为了保证尽快被对方设备发现,可以如 ST 心率 Demo 中的做法类似,首先先进入一段时间的快
速广播,然后使用慢速广播,这样既可以保证开机时被发现的速度,又可以降低平均功耗。
 楼主| 黑心单片机 发表于 2021-12-29 20:17 | 显示全部楼层
连接参数
测试修改连接参数,可以使用 ST 提供的 P2P Demo。注意:只有主机才能修改连接参数。
1968961cc51814fcd5.png
通过 Button SW2 按键,切换并测试不同的连接参数,代码修改如下图:
打开 Button SW2 的中断:
8114361cc519287fe1.png
关闭 trace 后,可以使能低功耗:
9686361cc51a44f236.png
连接 dongle 后,按下 Button 后,切换不同的连接参数:
6581961cc51b4351ec.png
功耗测量结果如下:
7729561cc51c70d3e6.png
由于 BLE 在没有数据传输时,也会发送空包,所以降低连接间隔,可以降低平均功耗。
如图所示,左边是使用 125ms 连接间隔测试的结果,右边是使用 1250ms 连接间隔的测试结
果,左边比右边的平均电流要高近 140uA。所以在应用中可以根据具体的应用使用合适的连接间
隔来降低平均功耗。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

72

主题

514

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部