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

123

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值