nrf52832增大数据吞吐量
Posted xiaoshideyuxiang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nrf52832增大数据吞吐量相关的知识,希望对你有一定的参考价值。
随着蓝牙性能的提升,BLE的应用领域不再局限于微数据传输,在BLE 4.2上已经突破20字节的限制。
现在nrf52832 SDK13.0上实验Extended MTU 功能,理论上可以使得蓝牙传输速率达到80KByte/s(我没有实际测试速率,如果有人试验了欢迎交流)。
**SDK版本:SDK13.0.0 协议栈S132 V4.0.2
在example/ancs工程上修改,添加了nus服务用于测试**
在主机和从机建立链接时,会发起一个交换MTU_SIZE的请求来使得两者的通信能采用一个最适合的MTU,具体的过程及各个场景可以研究这里exchange MTU_SIZE配合nrf_ble_gatt.c里的代码理解整个过程
总的来说就是主机发起请求,双方交换意见,最终取一个双方都能接受的最大数值
修改分为三步,我是在官方论坛上找到的方法DLE and extended MTU
在sdk_config.h 中修改NRF_BLE_GATT_MAX_MTU_SIZE为247
在ble_stack_init 中修改
在广播中加上标签
完成以上修改后会发现系统启动不了,这是因为修改了MAX_MTU后需要调整RAM的位置
最好是根据打开RTT打印信息,根据提示来修改
我的修改是:
接下来就可以测试:通过notify发送一个较大的数据作为一包数据传给手机端
void test_extendedMTU(void)
uint8_t testbuf[247-3]=0;
for(uint8_t cnt=0;cnt<sizeof(testbuf);cnt++)
testbuf[cnt]=cnt;
send_notify(testbuf,sizeof(testbuf));
send_notify是以ble_nus_string_send为原型做了一层封装,作用是发送一个notify给client端。
测试结果: 如果client端是iphone7 ,结果在lightblue上收到了244个字节
如果client端是iphone6s,结果在lightblue上收到181个字节
原因是iphone6s 支持的最大MTU是185byte
以上是关于nrf52832增大数据吞吐量的主要内容,如果未能解决你的问题,请参考以下文章