你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

工程师笔记 | STM32WB BLE应用低功耗设计

[复制链接]
STMCU-管管 发布时间:2021-6-16 17:57
功耗是物联网应用当中非常关键的因素,在开发的早期都会对功耗进行评估和测试。那么,如何使用ST提供的工具对动态功耗进行测量呢?针对BLE应用应当如何进行低功耗的设计呢?本篇跟大家一起聊聊该话题。
9 O0 K% f& D1 m9 m9 L1 L
( \& d( M, K' }5 x测量工具- ^# z$ P" U7 ?) b0 I" o1 V

7 e: I1 k( h  F在本文中使用CubeMonitor-Power + Power Shield的组合工具对STM32Nucleo开发板的动态功耗进行测量。' I: o5 [; e# M
5 ]& H7 T$ ]" x+ A  j- n
CubeMonitor-Power是ST提供的上位机软件,主要帮助用户动态的测量功耗。用户可以设定采样频率,采样时间,输入电压等。其界面如下:$ g3 `/ k# p6 Z4 O. p1 N5 i
11.png
" U1 U: K0 S" ?% ~/ F  h. ZX-NUCLEO-LPM01A是ST提供的一块功耗测量的评估板,它可以配合CubeMonitor-Power上位机软件,对目标板的动态功耗进行测量,方便开发者对功耗进行评估。
( x. y' X) V5 J0 u. n
5 K! E+ a# G- m% E' ^6 o5 C  t其特性如下:
' l  h5 _* w2 c; P可编程电压源范围:1.8v~3.3v
" C& Z8 b2 {5 B( y
& p6 a$ j' I0 A; b$ Q8 e1 l( R静态测量:8 d3 j# W5 Z- l. u7 Z) z
电流范围:1nA~200mA8 [2 n) T: K/ C; f$ w
3 T# X( M) O9 x) l- t
动态测量:
3 F3 h) o0 y3 I; Y电流范围:100nA~50mA
8 f" t6 `! B  I1 M6 Q2 p
$ R; M# q! Q' b  w" M& S100KHz带宽,3.2Msps采样率
) ^9 H7 Q% Y3 w功耗测量范围:180nW~165mW4 W" k) M5 t1 W8 x8 r/ n0 s
12.png
3 T6 U6 [/ }- x" I* TX-NUCLEO-LPM01A与STM32WB Nucleo板的连接如下所示,完成连接后就可以通过上位机控制和测量Nucleo的功耗了。5 z" ]( R% |+ X! \; Y" C7 n! T4 w# E; G
* b0 ?. ~: r$ A9 C* j
13.png ) B6 y* S2 S5 i: n6 L9 {+ T

- h* @, R1 Y  p  B' z- o3 e低功耗模式
0 [, D# H  L! C! [, u" T! ?8 W9 M( ?

9 o0 M( Z" Z6 g  d8 \+ k7 @ 14.png ! E3 `! S8 D7 _/ C
不同低功耗模式的区别主要如下:5 F- r9 n/ S9 y6 O( n
15.png
) n( W8 K/ P$ ^$ n* bSTM32WB支持的低功耗模式非常多,首先需要根据应用情况选择一个适合的低功耗模式,能保持BLE连接的低功耗模式主要有Sleep和STOP,所以选择Sleep模式和STOP2模式进行测量后结果如下:# I& s+ Q# _4 w4 l9 }
16.png
* L- f5 j) H. b
) g" u6 C; F5 ^4 f  ^0 \5 `

* `% D/ ^4 Z# W: o: i: T$ A4 J图中红色脉冲代表的是设备的周期性广播,从测试结果来看STOP2模式比Sleep模式功耗低很多,所以应用在不在乎唤醒时间的情况下,应当尽可能进入Stop2模式。
3 n  k( `/ [! x3 d& d
5 E' }5 \# L; T, kSMPS$ ?9 h8 ?' M& \7 m( L
0 Z% [5 k1 w1 _- Z( A" x
LDO是一种线性电源,它的优势在于结构简单,电流纹波比较低,但电源效率偏低。/ l; c% E+ J" p1 M* O. o4 a
SMPS是一种开关电源,它的优势在于电源效率高,损耗小,但由于频率较高会对周围设备造成一定的干扰,需要注意。7 ^; z" ?" u4 [
$ n/ |9 z* `" S
17.png . s1 u  A' b. s/ G9 U. q
通过修改Nucleo板子上的SB31可以控制LDO还是SMPS供电:
: a" G& K1 i! A. A9 k$ oSB31打开:SMPS打开
0 j% n* k: R  U# Z$ Q3 t* ^0 \SB31关闭:SMPS关闭
3 D9 |3 i5 K5 c) k" p9 ?6 I软件侧,打开SMPS,修改app_conf.h代码如下:  T5 g' j4 K! z7 y) H
#define CFG_USE_SMPS    1: a* T# {. U( n0 x; p8 M& U% ~4 E: j
功耗测量结果如下:
% {+ E# m  a% z# N 18.png ' ^" x3 _! v! t; f8 F" @

+ F, [. _4 y3 J. k. n* h关闭SMPS,使用LDO,修改app_conf.h代码:
; b* g; B( z$ n! H7 ^8 x, W% Q  c#define CFG_USE_SMPS    0
% z0 E: r& A/ s3 M7 o- O3 W9 h" ]功耗测量结果如下:' l) ?" [" k* W+ M4 O) l
  L  r4 C4 d# i2 v  ?) ~5 e' P  k
19.png # |% c) e9 Z2 L  ?
' o4 a- o* ]& |, ^9 E" F# l3 Y/ |
从以上图片可以看出,使用SMPS无论是平均电流还是低功耗状态下的电流都要更小,所以应当尽可能使用SMPS。
" G) R1 g+ T0 P# f

# b$ x; z& x9 G* C5 _3 L, b广播参数
! i8 q* e7 ^% v: S. \" t+ u
1 W& V4 S& W! S! G( d$ r使用BLE_HeartRate Demo不需要做任何修改就可以测试不同的广播参数,该demo默认会先进行一段时间快速广播,然后再进入慢速广播。4 }! k3 a) R3 f8 K0 Q, I# ~
20.png
' ]. z3 m" V% D% H  [; d7 B& {/ A0 i' [/ _7 D; c( x, ^3 l
从图中可以看出,广播间隔不同,平均功耗不同。  K: d  O' F7 e0 n
& G1 L' N! L4 i4 L( M, U+ T0 {  Y+ t; x
左侧图片的广播间隔为80ms~100ms,平均电流为282.914 uA。右侧图片的广播间隔为1s~2.5s,平均电流为16.443 uA。
7 o' `& B/ T9 X
, y- E. G5 Z) a$ Z- L- h# O$ B6 B可以看出广播间隔的长短对功耗影响很大,所以在设计BLE应用的时候,应当考虑适当降低广播间隔。% e4 `/ D* d$ ^
, V7 s2 p2 P( J
为了保证尽快被对方设备发现,可以如ST 心率Demo中的做法类似,首先先进入一段时间的快速广播,然后使用慢速广播,这样既可以保证开机时被发现的速度,又可以降低平均功耗。
( j+ B4 F- [/ _" k. R
( ~$ C' x1 o1 u. S9 }3 C连接参数/ t% i- Y7 T7 e+ R

3 J1 E: q8 f) c/ u# ^测试修改连接参数,可以使用ST提供的P2P Demo。注意:只有主机才能修改连接参数。  v! e3 _7 A2 E% R+ ]6 J* Z
21.png 9 d! x, u# j& F: O- C% d# |  _& l8 ~
通过Button SW2按键,切换并测试不同的连接参数,代码修改如下图:* Q. |) G6 D# _$ |
打开Button SW2的中断:
/ V+ h$ I4 i( k9 ^% Q/ S$ E! F. d  u1 H7 V( c9 t. m. Q
22.png
' w0 R+ R* y9 P. k关闭trace后,可以使能低功耗:
, N" N5 T: `2 |" p6 \8 F2 W2 Q& j
0 C$ z1 B8 A  q$ C
23.png
4 L3 {- Q) Q! f5 p  W# D. K0 L连接dongle后,按下Button后,切换不同的连接参数:3 Z5 b5 G4 o! ]; j

' r; b5 Y: s8 A 24.png 0 G- K6 `  u# l: g1 l' j
功耗测量结果如下:
1 F/ }/ S$ l6 j! W! z4 _
1 h$ ~1 U4 E  \- v% _ 25.png # Q9 @& }; J+ O* ^: M8 E
4 O& J& \# H1 X: D6 J* O! M8 K
由于BLE在没有数据传输时,也会发送空包,所以降低连接间隔,可以降低平均功耗。: N& w" W. S1 O9 u2 n2 ~/ w' {- \

+ E8 l4 Z4 W9 i; o$ I/ l. `9 C如图所示,左边是使用125ms连接间隔测试的结果,右边是使用1250ms连接间隔的测试结果,左边比右边的平均电流要高近 140uA。所以在应用中可以根据具体的应用使用合适的连接间隔来降低平均功耗。
+ F$ h" S9 C" ~  s- A* l) S3 B  V0 Z! O1 U
总结
+ W  i# M! k6 @- f, \0 o: q3 W6 H  r4 g6 [$ u) Y
本文介绍了使用STM32WB设计BLE应用时,影响功耗的各方面的内容。低功耗设计的好坏,直接关系到产品的使用时长,往往是优秀产品的必备要素,需要认真掌握。* h5 h- ^$ ?" v3 F( V, Q2 D

8 O2 u0 P! D  P
1 收藏 1 评论3 发布时间:2021-6-16 17:57

举报

3个回答
andey 回答时间:2021-6-17 12:14:06
学习下,感谢分享+ T3 t4 {$ t4 ~4 P
BEEE 回答时间:2021-9-14 21:06:14
学习2 \, j( E0 [' j8 \
奇迹 回答时间:2021-9-19 15:20:13
这个挺好,挺实用的
# j  N3 ~, T* X" b- B

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版