飞道的博客

BLE设备功耗太高?只需几个参数即可搞定

238人阅读  评论(0)

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

 

        图1就展示了BLE设备发送广播数据的电流(图片来源于信驰达产品实测)。

图1 BLE设备广播电流

 

        影响BLE功耗的参数

 

        本文所说的影响功耗的参数是站在BLE协议栈的基础上来说的,不包括硬件本身带来的功耗,比如当你模块负载着很多LED的时候,BLE模块的功耗降不下来,这就不在讨论范围之内。

 

        影响BLE功耗的参数有如下几个:

 

1.广播间隙(Advertising interval)

2.连接间隙(Connection Interval)

3.从设备延迟(Slave Latency)

4.连接超时(Supervision Timeout)

5.扫描窗口(Scan Window)

6.扫描间隙(Scan Interval)

 

        1.广播间隙(Advertising interval)

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

图2 广播间隙

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

图3 广播间隙范围

        2.连接间隙(Connection Interval)

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

图4 连接间隙

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

图5 连接间隙范围

        3.从设备延迟(Slave Latency)

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

图6 Slave Latency图解

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

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

 

        4.连接超时(Supervision Timeout)

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

图7 连接超时范围

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

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

图8 扫描参数构成

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

图9 Scan Interval 和Scan Window定义

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

 

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

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

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

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

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

        本文基于信驰达nRF52系列的BLE蓝牙模块,来说明如何通过AT指令设置参数来降低BLE模块的功耗。

        1.设置广播间隙

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

 

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

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

 

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

        2.设置广播间隙

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

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

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

 

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

        3.设置从设备延迟和链接超时

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

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

        5000>(1+20)*100*2

 

图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

    

        4.设置扫描参数

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

 

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

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

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

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

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

附:

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

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

 


转载:https://blog.csdn.net/RF_star/article/details/113401613
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场