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增大数据吞吐量的主要内容,如果未能解决你的问题,请参考以下文章

nrf52832扫描停止

nRF52832之硬件I2C

nRF52832之硬件I2C

nRF52832 开发记录 - 入门及相关小问题的处理

nrf52832 学习笔记蓝牙主机发现服务

nrf52832 学习笔记蓝牙主机发现服务