功耗是物联网应用当中非常关键的因素,在开发的早期都会对功耗进行评估和测试。那么,如何使用ST提供的工具对动态功耗进行测量呢?针对BLE应用应当如何进行低功耗的设计呢?本篇跟大家一起聊聊该话题。& _% J9 `: v) h2 r, ~/ G # Q; `! [! W4 e' p! r+ l 测量工具 在本文中使用CubeMonitor-Power + Power Shield的组合工具对STM32Nucleo开发板的动态功耗进行测量。! a I* O) g5 F$ u) h1 D& a CubeMonitor-Power是ST提供的上位机软件,主要帮助用户动态的测量功耗。用户可以设定采样频率,采样时间,输入电压等。其界面如下: X-NUCLEO-LPM01A是ST提供的一块功耗测量的评估板,它可以配合CubeMonitor-Power上位机软件,对目标板的动态功耗进行测量,方便开发者对功耗进行评估。 其特性如下: 可编程电压源范围:1.8v~3.3v 静态测量: 电流范围:1nA~200mA5 x4 [+ Q, y: Q' }# z 动态测量:5 p& D+ |0 W/ x) R 电流范围:100nA~50mA5 A3 G# `, |% O9 J) c# O% U( E6 w 100KHz带宽,3.2Msps采样率: r7 S' f! _) F/ n+ ~. Z0 w 功耗测量范围:180nW~165mW. [9 t% {, K) q# I) U* q X-NUCLEO-LPM01A与STM32WB Nucleo板的连接如下所示,完成连接后就可以通过上位机控制和测量Nucleo的功耗了。# L2 [7 V$ P1 {) v1 x8 Y( s % E4 P8 g: o1 K# e9 n6 p; e& J + V! N3 P5 }8 h* S 低功耗模式1 l) H3 i2 d8 p 8 M. |$ }3 \" l4 W4 D 不同低功耗模式的区别主要如下: STM32WB支持的低功耗模式非常多,首先需要根据应用情况选择一个适合的低功耗模式,能保持BLE连接的低功耗模式主要有Sleep和STOP,所以选择Sleep模式和STOP2模式进行测量后结果如下: / t3 p1 f3 A j( _ 图中红色脉冲代表的是设备的周期性广播,从测试结果来看STOP2模式比Sleep模式功耗低很多,所以应用在不在乎唤醒时间的情况下,应当尽可能进入Stop2模式。7 ~0 Z$ Y& v) J( c* N6 t0 S ' G) d2 N6 J& h, e1 ^' n SMPS. V% p' Z5 \: q7 h; l- e3 K6 u 5 m$ {! _2 a/ ]; N$ V& c LDO是一种线性电源,它的优势在于结构简单,电流纹波比较低,但电源效率偏低。 SMPS是一种开关电源,它的优势在于电源效率高,损耗小,但由于频率较高会对周围设备造成一定的干扰,需要注意。 ( }7 N+ C5 ?+ a% i; r$ ]# a 通过修改Nucleo板子上的SB31可以控制LDO还是SMPS供电: SB31打开:SMPS打开 SB31关闭:SMPS关闭2 q' \6 g3 }6 J& T, } 软件侧,打开SMPS,修改app_conf.h代码如下:! K5 M* U, C2 h# V& J, u #define CFG_USE_SMPS 1 功耗测量结果如下: [. ~9 c3 [, h* T9 F4 I 关闭SMPS,使用LDO,修改app_conf.h代码: #define CFG_USE_SMPS 04 z$ i' b) [4 o: H 功耗测量结果如下: 7 t# O" d/ z+ N8 `* Q* J 从以上图片可以看出,使用SMPS无论是平均电流还是低功耗状态下的电流都要更小,所以应当尽可能使用SMPS。3 s6 N, j. p% G* l* n ! I3 [1 x9 F8 W+ C 广播参数 使用BLE_HeartRate Demo不需要做任何修改就可以测试不同的广播参数,该demo默认会先进行一段时间快速广播,然后再进入慢速广播。9 t5 y, S, C4 U- H7 O+ R1 Q 从图中可以看出,广播间隔不同,平均功耗不同。 左侧图片的广播间隔为80ms~100ms,平均电流为282.914 uA。右侧图片的广播间隔为1s~2.5s,平均电流为16.443 uA。* Q" i7 B# [8 Q6 M0 s ^9 `$ P 可以看出广播间隔的长短对功耗影响很大,所以在设计BLE应用的时候,应当考虑适当降低广播间隔。 Y/ ?3 k- a% o* T9 h+ I 为了保证尽快被对方设备发现,可以如ST 心率Demo中的做法类似,首先先进入一段时间的快速广播,然后使用慢速广播,这样既可以保证开机时被发现的速度,又可以降低平均功耗。 连接参数 ( W- v4 W* F( P `" G; y9 W 测试修改连接参数,可以使用ST提供的P2P Demo。注意:只有主机才能修改连接参数。8 h1 S A3 E2 s* {% ` 通过Button SW2按键,切换并测试不同的连接参数,代码修改如下图: 打开Button SW2的中断: 关闭trace后,可以使能低功耗: ! n1 M6 g7 N s8 W0 c# [6 h! S 连接dongle后,按下Button后,切换不同的连接参数:( y# O4 L* L3 G; u6 m, N. N+ I! H 功耗测量结果如下:8 [0 B0 S) d* }# B* y( u! ~ * `+ R. @4 g: g' ]- e9 v * F- O; }& _5 _; a 由于BLE在没有数据传输时,也会发送空包,所以降低连接间隔,可以降低平均功耗。 * H v2 O5 Q% W& X, s! G. V" p+ } 如图所示,左边是使用125ms连接间隔测试的结果,右边是使用1250ms连接间隔的测试结果,左边比右边的平均电流要高近 140uA。所以在应用中可以根据具体的应用使用合适的连接间隔来降低平均功耗。 7 {9 \8 c1 M3 X; N: h! m 总结 d! k: q, |1 H- t$ B# [# |' @& H 0 {% K* m# i o 本文介绍了使用STM32WB设计BLE应用时,影响功耗的各方面的内容。低功耗设计的好坏,直接关系到产品的使用时长,往往是优秀产品的必备要素,需要认真掌握。3 A6 g. O$ O0 m% E5 @' p( W7 a |
学习下,感谢分享 |
学习 |
这个挺好,挺实用的3 v# D4 W! W& U; _, k k |
使用STM32WB系列微控制器构建无线应用
STM32WB基于Custom Template实现客户定制BLE私有协议
STM32 生态系统|基于STM32WB的低功耗蓝牙应用(一)
【NUCLEO-WB09KE评测】BLE创建服务和写特征控制LED
【NUCLEO-WB09KE评测】+使用STM32CubeMX新建蓝牙工程
【NUCLEO-WB09KE评测】创建BLE工程和开启调试信息
【NUCLEO-WB09KE评测】BLE例程HeartRate及工具探索
【NUCLEO-WB09KE评测】使用I2C点亮一个OLED
【NUCLEO-WB09KE评测】STM32WB09KE的内部BootLoader使用
【NUCLEO-WB09KE评测】USART的printf和GPIO的使用