太阳集团tcy8722

当前位置: 首页 >应用方案 >技术应用 >

BLE设备功耗太高?弄懂这几个参数,功耗想不降都难

BLE之所以能做到uA级别的功耗,在使用纽扣电池供电的情况下能工作达半年甚至更久的原因就是BLE特殊的休眠的机制,简单概括就是在特定的时间启动射频,快速地发射完数据后关闭射频进入休眠状态,也就是说在BLE工作期间,其射频大部分时间都是处于关闭状态,所以它的功耗就能非常低。


图1就展示了BLE设备发送广播数据的电流(图片来源于太阳集团tcy8722产品实测)。

图1


图1 BLE设备广播电流



一、影响BLE功耗的参数

本文所说的影响功耗的参数是站在BLE协议栈的基础上来说的,不包括硬件本身带来的功耗,比如当你模块负载着很多LED的时候,你跟我说BLE模块的功耗降不下来,这就是:盲人抬石头——瞎抬杠呢。


言归正传,影响BLE功耗的参数有如下几个:



01 广播间隙(Advertising interval)


BLE设备在每次广播时,都会在三个信道上发送相同的报文,这些报文被称为一个广播事件,两个相邻的广播事件的时间就是广播间隙。关于广播间隙的定义如图2(图片来自Core_v5.0,蓝牙核心协议5.0)

图2


图2 广播间隙


广播间隙是针对从机设备来说的,广播间隙决定了从机设备的广播频率,你说是一秒钟发一次数据的功耗高呢,还是一秒钟发十次数据的功耗高呢?所以将BLE广播间隙调大一些,这样在单位时间中广播次数减少,就能有效的降低功耗。范围如图3所示(图片来自Core_v5.0,蓝牙核心协议5.0)

图3


图3 广播间隙范围


02 连接间隙(Connection Interval)



BLE主机设备和从机设备建立连接后,进行数据交互的间隔称为连接间隙,注意是主从设备建立连接后。关于连接间隙的定义如图4(图片来自Core_v5.0,蓝牙核心协议5.0)

图4


图4 连接间隙


连接间隙就是指主机从机设备之间的交互频率,将连接间隙调大一些即可有效的降低功耗。连接间隙的参数范围也有一个规定值,如图5所示(图片来自Core_v5.0,蓝牙核心协议5.0)

图5


图5 连接间隙范围


03 从设备延迟(Slave Latency)



从设备延迟是指在连接将被终止之前从设备能够处于睡眠状态的BLE连接间隔的数目。为了形象的说明此概念,引用图6来进行解释。

图6


图6 Slave Latency图解


从图中可以看出当从设备延迟关闭(即等于0的时候),每一个主机发起的数据交互从机都必须要响应,当从设备延迟打开(图中等于3的时候),从机可以忽略3次主机发起的数据交互请求,而继续处于休眠状态。


从图6也可以看出当开启从设备延迟时,从机处于休眠的时间就更多,那么设备就可以更省电。


04 连接超时(Supervision Timeout)



连接超时又叫监控超时,是指LE链路的链路监督超时时间,必须是10ms的整数倍。必须满足关系:Timeout >(1 + Latency) * Interval_Max * 2。连接超时范围如图7所示(图片来自Core_v5.0,蓝牙核心协议5.0)

图7


图7 连接超时范围


05 扫描参数: 扫描窗口(Scan Window)、扫描间隙(Scan Interval)



扫描参数是蓝牙主机设备特有的参数,每次扫描时,设备打开接收器去监听广播设备,这称为一个扫描事件。扫描参数有两个:扫描窗口与扫描间隔。如图8所示(图片来自Core_v5.0,蓝牙核心协议5.0)

图8


图8 扫描参数构成


关于扫描间隙和扫描窗口的定义如图9所示(图片来自Core_v5.0,蓝牙核心协议5.0)、

图9


图9 Scan Interval 和Scan Window定义


扫描窗口(Scan Window):扫描窗口是指进行一次扫描的时间宽度,也就是扫描的持续时间。持续时间越短消耗的能源就越少。


扫描间隙(Scan Interval):扫描间隙是指两个连续的扫描窗口的起始时间的间隔。即可以理解为扫描频率,频率越低消耗的能量就越少。


需要注意的是扫描窗口要小于扫描间隙。


参数范围如图10所示(图片来自Core_v5.0,蓝牙核心协议5.0)

图10


图10 扫描间隙扫描窗口范围

二、如何设置参数来降低功耗?


本文基于太阳集团tcy8722E104系列的BLE蓝牙模块,来说明如何通过AT指令设置参数来降低BLE模块的功耗。


01 设置广播间隙



打开串口助手发送指令,如图11所示:AT+ADVINTV=1600(1600*0.625=1000ms),AT+ADVINTV=1600(160*0.625=100ms)

图11


图11 设置广播间隙为1s和100ms


设置成功后通过电流测试工具抓取电流数据如图12所示,可以看到平均值为29.93uA。设置为100ms时的功耗为250uA.

图12


图12  1s和100ms广播间隙的功耗对比


02 设置连接间隙


打开串口助手发送指令如图13所示,设置连接间隙为1s:AT+CONMAXINTV=800(800*1.25=1000ms), AT+CONMININTV=800(800*1.25=1000ms),设置连接间隙为100ms

图13


图13 设置连接间隙为1s和100ms


成功设置连接间隙后使用仪器抓取功耗如图14所示。连接间隙为1s时功耗259uA,连接间隙为100ms时功耗为335uA。

图14


图14 1s连接间隙和100ms连接间隙功耗对比


03 设置从设备延迟和连接超时

在设置从设备延迟和连接超时的时候需要注意参数范围:

设置参数如图15所示:Timeout >(1 + Latency) * Interval_Max * 2

5000>(1+20)*100*2

图15


图15 设置从设备延迟和连接超时


需要注意苹果系统的设备做主机的时候,连接参数更为苛刻,需要满足以下关系,否则连接可能存在异常。

Interval_Max* (Slave Latency + 1) ≤ 2 seconds

Interval_Min≥ 20 ms

Interval_Min+ 20 ms ≤ Interval_Max

SlaveLatency ≤ 4

Timeout ≤6 s

Interval_Max* (Slave Latency + 1) * 3 < Timeout

04 设置扫描参数


设置扫描参数为1s和10ms,如图16所示:



图16


图16 设置扫描参数为1s和10ms


设置成功后,通过仪器观察功耗情况如图17所示:

1s的扫描间隙扫描窗口平均电流:72.4uA

10ms扫描间隙扫描窗口平均电流:3.37mA

图17


图17 1s扫描间隙与10ms扫描间隙功耗对比


附:


太阳集团tcy8722目前的BLE系列产品众多,这里就不对每种型号做示例,可根据自己手里的型号找到对应手册中的指令进行设置。

附

若使用的是别的公司的产品,想要降低功耗亦可设置这些参数来降低功耗。这里附上一些太阳集团tcy8722产品测试的具体数据,就能更直观地看到各个参数对于功耗的影响:





太阳集团tcy8722