蓝牙低耗能标准在开发过程中就考虑到了长电池寿命,可支持器件依靠单节纽扣电池运行数年。
本文采用 SimpleBLEPeripheral 示例程序进行功耗测量,并使用 TI 的 CC2640R2F LaunchPad 开发板和我公司的 CC2640R2F Evaluation Board 开发板进行对比。请注意,文档的测试结果仅供参考,各种各样的因素都将影响蓝牙产品的低功耗。
协议栈和 IAR 安装参考 CC2640R2 BLE 开发环境搭建。本例程需要使用 Btool,有关 BTool 使用介绍请参考: BTool。 本文所有工具可以在 CC2640R2开发工具集介绍里获得。
包含在 BLE-Stack 中的通用样例应用 simple_peripheral 非常适合用于分析单独运行在无线 MCU 上的蓝牙低耗能协议的功耗。有关 simple_peripheral 的编译运行说明请参考编译第一个工程( simple_peripheral )和 运行第一个例程( simple_peripheral )。
要获取纯粹的蓝牙低耗能协议分析,需要按照表 5 中所述在 simple_peripheral 样例应用中进行一些修改。之所以修改是因为测量 BLE 堆栈单独产生的电流消耗必须关闭额外的应用处理。
功能 | 说明 |
---|---|
周期性事件 | 发生的唯一应用处理是在建立连接后开始的周期性事件。要从应用中清除周期性事件,只需注释掉 simple_peripheral.c 文件中 SimpleBLEPeripheral_processStateChangeEvt 函数的 GAPROLE_CONNECTED 的以下源代码行:// Util_startClock( & periodicClock ) ;注释掉该行之后, 就绝不会再设置第一个周期性事件的 RTOS 计时器。 |
LCD | 通过在预定义的符号中添加 Display_DISABLE_ALL 来禁用所有屏幕。在 CCS 中,转到“ Project Properties ”→“ Build ”→“ ARM Compile ”→“ Advanced Options ”→“ Predefined Symbols ”→“ Pre-define NAME ”。 在 IAR 中, 转到“ Project Options ”→“ C/C++ Compiler ”→“ Preprocessor ”→“ Defined symbols ”。 |
连接参数更新 | 在建立连接后不久, 会从外围器件发出自动连接参数请求。 它使用 simple_peripheral.c 中定义的参数。 在执行测量任务时, 删除该功能并通过对等器件直接控制连接参数会更加便利。在 simple_peripheral.c 中,将 DEFAULT_ENABLE_UPDATE_REQUEST define 更改为 GAPROLE_LINK_PARAM_UPDATE_WAIT_REMOTE_PARAMS ,如下所示: #defineDEFAULT_ENABLE_UPDATE_REQUESTGAPROLE_LINK_PARAM_UPDATE_WAIT_REMOTE_PARAMS |
添加 ExtFlash.c 和 ExtFlash.h | ExtFlash.c 和 ExtFlash.h 位于 TI-RTOS 中间件中。通过转到“ Project ”→“ Add Files ”将其添加到 SBP 应用项目中。此外,使用以下命令将其包含在 simple_peripheral.c 中: #include <ti/mw/extflash/ExtFlash.h> |
关闭外部闪存 | 通过调用 ExtFlash_open() 、 ExtFlash_close() 打开和关闭外部闪存。(在 SimpleBLEPeripheral_init() 中) |
睡眠时进入 standby 模式 | 通过在预定义符号中添加 POWER_SAVING 。转到“ Project Options ”→“ C/C++ Compiler ”→“ Preprocessor ”→“ Defined symbols “ |
为了获取不受干扰的电流测量结果,应拆除 CC2640R2F Evaluation Board 开发板上的跳线。
下图是已拆除所有跳线的开发板。请注意:拆除 JTAG 跳线后,芯片的编程和调试功能将变得不可用。外置电源连接 3.3V 供电接口和 GND 进行供电,连接下图中蓝色方框部分的供电接口。
如下图所示,在形成连接之前应使用正确的连接参数。可以根据您的应用选择合适的参数,这里设置的是 1 秒的连接间隔和 0 秒的从机延迟。确保输入这些值后选择" Set "按钮。
外设以通电并且成功连接之后,您可以在 BTool 界面的" Device Information "字段中看到已连接的外围设备,如下图所示。
设置以下几个广播间隔进行功率测试:100 ms、500 ms、1000 ms。
蓝牙状态 | 广播间隔 | TI LaunchPad 平均电流值 | CC2640R2F Evaluation Board 平均电流值 |
---|---|---|---|
广播 | 100 ms | 81.3 uA | 77.2 uA |
广播 | 500 ms | 10.6 uA | 13.1 uA |
广播 | 1000 ms | 6.9 uA | 7.0 uA |
如下图所示,这是在广播周期为 100 ms 使用示波器和万用表获取平均电流信息。示波器两端探头并联一个 10 欧电阻,测量的平均电压值(平均电流值 = 平均电压/ 10 )。其中左边示波器打印 TI CC2640R2F LaunchPad 的数据,右边示波器打印 CC2640R2F Evaluation Board 的数据。
下图中还展示了使用万用表显示的平均电流值,同样左边为 TI CC2640R2F LaunchPad 的平均电流值。右边为 CC2640R2F Evaluation Board 的平均电流值。
如下图所示,这是在广播周期为 500 ms 使用示波器和万用表获取平均电流信息。示波器参数与之前保持一致,左边示波器打印TI CC2640R2F LaunchPad 的数据,右边示波器打印 CC2640R2F Evaluation Board 的数据。
下图中同样对比了两块开发板的平均电流值。
如下图所示,这是在广播周期为 1000 ms使用示波器和万用表获取平均电流信息。示波器参数与之前保持一致,左边示波器打印 TI CC2640R2F LaunchPad 的数据,右边示波器打印 CC2640R2F Evaluation Board 的数据。
下图中同样对比了两块开发板的平均电流值。
设置以下几个连接间隔进行功率测试:20 ms、100 ms、500 ms、1000 ms。
蓝牙状态 | 连接间隔 | TI LaunchPad 平均电流值 | CC2640R2F Evaluation Board 平均电流值 |
---|---|---|---|
连接 | 20 ms | 269.6 uA | 259.8 uA |
连接 | 100 ms | 61.2 uA | 58.3 uA |
连接 | 500 ms | 7.1 uA | 7.0 uA |
连接 | 1000 ms | 6.9 uA | 7.0 uA |
如下图所示,这是在连接间隔为 20ms 使用示波器和万用表获取平均电流信息。示波器两端探头并联一个10 欧电阻,测量的平均电压值(平均电流值 = 平均电压/ 10 )。左边示波器打印 TI CC2640R2F LaunchPad 的数据,右边示波器打印 CC2640R2F Evaluation Board 的数据。
下图中还展示了使用万用表显示的平均电流值,同样左边为 TI CC2640R2F LaunchPad 的平均电流值。右边为 CC2640R2F Evaluation Board 的平均电流值。
如下图所示,这是在连接间隔为 100ms 使用示波器和万用表获取平均电流信息。左边示波器打印 TI CC2640R2F LaunchPad 的数据,右边示波器打印 CC2640R2F Evaluation Board 的数据。
下图中同样对比了平均电流值。
如下图所示,这是在连接间隔为 500ms 使用示波器和万用表获取平均电流信息。左边示波器打印 TI CC2640R2F LaunchPad 的数据,右边示波器打印 CC2640R2F Evaluation Board 打印的数据。
下图中同样对比了平均电流值。
如下图所示,这是在连接间隔为 1000ms 使用示波器和万用表获取平均电流信息。左边示波器打印 TI CC2640R2F LaunchPad 的数据,右边示波器打印 CC2640R2F Evaluation Board 的数据。
下图同样对比了平均电流值。
文章所有代码、工具、文档开源。加入我们QQ群 591679055获取更多支持,共同研究CC2640R2F&BLE5.0。