nRF52840/nRF52832 低功耗的测试工程
nRF52840/nRF52832 低功耗的测试工程
文章目录
- nRF52840/nRF52832 低功耗的测试工程
- 项目的硬件说明
- PM132A主要功能:
- BLE Beacon 项目(nRF52840)
- 官方工程的功耗
- Beacon 关Log
- Beacon 广播间隔
- Beacon的发射功率
- 8dBm
- 4dBm
- 0dBm
- 发射功率总结:
- DCDC
- 32.768K 晶体功耗
- BLE Uart 工程 (nRF52832)
- 官方工程广播功耗
- 官方工程连接功耗
- 串口功耗优化
- 广播间隔与关闭Log的优化
- 连接间隔的设置
- 3个广播通道的广播电流
欢迎加群讨论QQ群:1037177913
项目的硬件说明
此工程 SDK的版本为 nRF5_SDK_17.0.2_d674dde
以下工程都是以IAR for arm V8.32.1
以下的电流分析仪为:PM132A
仪器链接为:https://shop221754637.taobao.com
PM132A主要功能:
- 10K 采样率
- 1uA-3A 自动量程测试
- 简单的上位机操作
测试工程 | ||
---|---|---|
ble_app_beacon | ||
ble_app_uart | ||
BLE Beacon 项目(nRF52840)
- 工程在\examples\ble_peripheral\ble_app_beacon
官方工程的功耗
重要参数 | 备注 | |
---|---|---|
广播间隔 | 100mS | |
平均电流 | 185uA | |
广播峰值电流 | 10mA | 由于板内有大电容,此峰值并非芯片的发射电流 |
底电流 | 14uA | |
Beacon 关Log
- 修改sdk_config.h 如下
测试项目 | ||
---|---|---|
底电流 | 3uA | |
平均电流 | 173uA | |
广播间隔 | 100mS | |
广播峰值电流 | 10mA | 由于板内有大电容,此峰值并非芯片的发射电流 |
Beacon 广播间隔
- 在main.c文件修改广播间隔。一般500mS - 1S Beacon 也可以满足实际的需求。
//#define NON_CONNECTABLE_ADV_INTERVAL MSEC_TO_UNITS(100, UNIT_0_625_MS) /**< The advertising interval for non-connectable advertisement (100 ms). This value can vary between 100ms to 10.24s). */
#define NON_CONNECTABLE_ADV_INTERVAL MSEC_TO_UNITS(500, UNIT_0_625_MS) /**< The advertising interval for non-connectable advertisement (500 ms). This value can vary between 100ms to 10.24s). */
测试项目 | ||
---|---|---|
广播间隔 | 500mS | |
底电流 | 3uA | |
平均电流 | 38.86uA | |
广播峰值电流 | 10mA | 由于板内有大电容,此峰值并非芯片的发射电流 |
Beacon的发射功率
static void advertising_init(void)
{...err_code = sd_ble_gap_adv_set_configure(&m_adv_handle, &m_adv_data, &m_adv_params);APP_ERROR_CHECK(err_code);//设置 tx dberr_code = sd_ble_gap_tx_power_set(BLE_GAP_TX_POWER_ROLE_ADV, 0,8);APP_ERROR_CHECK(err_code);
}
8dBm
测试项目 | ||
---|---|---|
广播间隔 | 500mS | |
底电流 | 3uA | |
平均电流 | 83.68uA | |
广播峰值电流 | 22mA | 增加了发射功率,电流就增大了 |
4dBm
测试项目 | ||
---|---|---|
广播间隔 | 500mS | |
底电流 | 3uA | |
平均电流 | 59.62uA | |
广播峰值电流 | 24.68mA | 增加了发射功率,电流就增大了 |
0dBm
测试项目 | ||
---|---|---|
广播间隔 | 500mS | |
底电流 | 3uA | |
平均电流 | 39.54uA | |
广播峰值电流 | 8.3mA | 增加了发射功率,电流就增大了 |
发射功率总结:
- 以我的经验测试发现,4dbm与0dbm的距离增远不了多少,但功耗增加了不少。调整天线,更有利于增加距离。
- 官方代码默认是0dbm
DCDC
要硬件支持DCDC才支持这个功能。
但Beacon打开下图,并不会打开DCDC的功能
ble_stack_init();//在 stack 的 初始化后,立马打开。sd_power_dcdc_mode_set(NRF_POWER_DCDC_ENABLE);sd_power_dcdc0_mode_set(NRF_POWER_DCDC_ENABLE);
测试项目 | ||
---|---|---|
广播间隔 | 500mS | |
底电流 | 3uA | |
平均电流 | 21.87uA | 平均电流可以降低 |
广播峰值电流 | 4mA | 增加了发射功率,电流就增大了 |
32.768K 晶体功耗
nRF52 可以省32.768K晶体,但不能省32M晶体。
- 功耗会相应的增加
- RTC时钟不准。
BLE Uart 工程 (nRF52832)
官方工程广播功耗
测试项目 | ||
---|---|---|
广播间隔 | 40mS | |
底电流 | 1.8mA | |
平均电流 | 2.71mA | 平均电流可以降低 |
广播峰值电流 | 11.8mA | 增加了发射功率,电流就增大了 |
官方工程连接功耗
测试项目 | ||
---|---|---|
连接间隔 | 75mS | |
底电流 | 1.84mA | |
平均电流 | 2.23mA | 平均电流可以降低 |
广播峰值电流 | 8.4mA | 增加了发射功率,电流就增大了 |
串口功耗优化
nRF52 串口电流 是非常大的,建议使用时候把它关闭。
- 现在为了简单起见,直接把串口关闭做测试。
int main(void)
{bool erase_bonds;// Initialize.//uart_init(); //注释了uartlog_init();timers_init();buttons_leds_init(&erase_bonds);power_management_init();ble_stack_init();gap_params_init();gatt_init();services_init();advertising_init();conn_params_init();// Start execution.// printf("\r\nUART started.\r\n");//注释串口打印NRF_LOG_INFO("Debug logging for UART over RTT started.");advertising_start();// Enter main loop.for (;;){idle_state_handle();}
}
//BLE 接收
static void nus_data_handler(ble_nus_evt_t * p_evt)
{if (p_evt->type == BLE_NUS_EVT_RX_DATA){uint32_t err_code;NRF_LOG_DEBUG("Received data from BLE NUS. Writing data on UART.");NRF_LOG_HEXDUMP_DEBUG(p_evt->params.rx_data.p_data, p_evt->params.rx_data.length);
#if 0 //关闭BLE接口转串口的代码for (uint32_t i = 0; i < p_evt->params.rx_data.length; i++){do{err_code = app_uart_put(p_evt->params.rx_data.p_data[i]);if ((err_code != NRF_SUCCESS) && (err_code != NRF_ERROR_BUSY)){NRF_LOG_ERROR("Failed receiving NUS message. Error 0x%x. ", err_code);APP_ERROR_CHECK(err_code);}} while (err_code == NRF_ERROR_BUSY);}if (p_evt->params.rx_data.p_data[p_evt->params.rx_data.length - 1] == '\r'){while (app_uart_put('\n') == NRF_ERROR_BUSY);}
#endif}}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FcMWfjgZ-1613732764505)(picture/image-20210216141124915.png)]
广播间隔与关闭Log的优化
一般带连接的广播间隔设置为200ms-500ms,具体要看项目的功耗需求。现在设置了300ms测试
#define APP_ADV_INTERVAL MSEC_TO_UNITS(300, UNIT_0_625_MS) //广播间隔300ms
power_management_init();ble_stack_init();//sd_power_dcdc_mode_set(NRF_POWER_DCDC_ENABLE); //由于硬件无法支持DCDC,所以无法打开进行测试。
测试项目 | ||
---|---|---|
广播间隔 | 300mS | |
底电流 | 0.2uA | |
平均电流 | 76uA | 平均电流可以降低 |
广播峰值电流 | 11.69mA | 增加了发射功率,电流就增大了 |
连接间隔的设置
连接间隔主要看数据量大不大,如果数据不大,尽量控制在200ms左右,如果在大量的突发数据,可以动态改变连接间隔,从而降低功耗,如果是BLE4.2+,把长包打开,并设置长一些间隔。
#define MIN_CONN_INTERVAL MSEC_TO_UNITS(200, UNIT_1_25_MS) /**< Minimum acceptable connection interval (200 ms), Connection interval uses 1.25 ms units. */
#define MAX_CONN_INTERVAL MSEC_TO_UNITS(500, UNIT_1_25_MS) /**< Maximum acceptable connection interval (500 ms), Connection interval uses 1.25 ms units. */
3个广播通道的广播电流
nRF52840/nRF52832 低功耗的测试工程相关推荐
- RadASM的测试工程!
RadASM已经安装完毕了,是否可以正常工作了呢?我们通过创建一个工程来测试一下,下面就是创建这个测试工程的过程: 1, 2, 3, 4, 5, 6, 7, 8, 9, 至此,我们通过RadASM的模 ...
- 创建 Robotium 测试工程
前面学习了instrumentation框架,现在来学习robotium了解怎么使用不就是一个晚上的事吗,robotium也是基于Instrumentation框架的.一般用于app的功能性测试,不能 ...
- Maven 创建、测试工程
创建工程 Maven 使用原型(archetype)插件创建工程. cd d: cd eclipse-workspace mvn archetype:generate -DgroupId=com.wj ...
- 开源按键组件Multi_Button的使用,含测试工程
之前的文章中介绍过按键的处理方法<多功能(单击.双击.长按)按键设计>,今天再来分享另外一种方式:MultiButton. 1.Multi_Button简介 MultiButton 是Gi ...
- 基于uni-app的BLE低功耗蓝牙测试工具
基于uni-app的BLE低功耗蓝牙测试工具 前言 开发环境:HBuilder X2.8.11,运行环境:微信小程序 本项目是从网上收集他人的源代码,经过测试.修改后的版本,在微信小程序上表现比较稳定 ...
- 紫光信息港 软件测试,紫光同创PGL22G开发平台试用连载(3)---以太网测试工程二...
原标题:紫光同创PGL22G开发平台试用连载(3)---以太网测试工程二 续前一篇博文,经过多次对PANGO工具的参数进行修改的尝试,在资源占用率为(LUT-70.02%,Register-36.34 ...
- Modbus RTU 51单片机从机工程源码与昆仑通泰触摸屏测试工程文件。支持485和232串口通信
Modbus RTU 51单片机从机工程源码与昆仑通泰触摸屏测试工程文件.支持485和232串口通信,该从机源码支持51系列和STC12系列单片机,支持功能码01,02,03,04,05,06,15, ...
- Modbus RTU 51单片机从机工程源码与昆仑通泰触摸屏测试工程文件
Modbus RTU 51单片机从机工程源码与昆仑通泰触摸屏测试工程文件. 支持485和232串口通信,该从机源码支持51系列和STC12系列单片机,支持功能码01,02,03,04,05,06,15 ...
- 痞子衡嵌入式:介绍i.MXRT定时器PIT的多通道链接模式及其在coremark测试工程里的应用...
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT定时器PIT的多通道链接模式及其在coremark测试里的应用. 早在 2018 年 i.MXRT 系列跨界处理器刚推出的时 ...
最新文章
- JS中编写函数去除HTML标签,js函数获取html中className所在的内容并去除标签
- php m 报错,PHP框架ThinkPHP入参m报错
- SPCAMLEditor–灵活实用的CAML编辑工具(上)
- mysql压缩表语句_MYSQL静态表、动态表、压缩表总结
- java streaming编程_Spark Streaming编程实战(开发实例)
- linux log4j 空文件,log4j在linux上不生成日誌文件
- ios app证书申请基本流程
- 白话Elasticsearch61-进阶篇之基于Term Vectors深入探查数据的情况
- 一个备份MySQL数据库的简单Shell脚本(转)
- java 菜单快捷键_Java 菜单快捷键
- java12/6作业1
- 用户需求说明书_「软件项目管理入门」(21) 需求调研和需求分析怎么做?
- 请不要再用那种态度把我搞火了!
- 腾讯同事要跳槽,问我背包问题具体咋回事,我直接甩给他这篇!
- sphinx系列之中文分词LibMMSeg安装(三)
- 中国历代更改重复地名及其现实意义
- 数学函数模块math
- 打印小册子中断了怎么办
- Python3的unichr()消失了?不,升级了!
- 【PdgCntEditor】解决PDF的目录页码和PDF实际页码不一致的问题,书签页码偏移页面偏移功能,PDF页面标签的添加