项目篇:ble透传速率抓包分析

本文探讨了BLE4.0与BLE4.2在数据传输效率上的差异。BLE4.2通过引入数据包扩展特性显著提高了传输速率,同时对比了写有回应与写无回应两种模式在实际应用中的效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文章目录

        1 未扩展数据包

        2 扩展数据包

        3 写有回应

        4 写无回应

1 未扩展数据包

可以看到ble4.0时,LL_PDU支持33字节长度的数据,前2个字节为帧头,后4个字节用于MIC,就算不加密,LL能容忍来自L2CAP长度也只有27字节。

抓包结果:

假设用户想通过BLE发送1KB数据,将连接间隔7.5ms,每个连接事件执行两次Tx,理论上需花费(1024/54)*7.5=142.5ms,这还不算上重传等因素,因此非常耗时。

2 扩展数据包

在ble4.2之后引入新的特性,即LE data length extension(数据包扩展),LL最大容纳来自L2CAP的251(257-2-4)字节的数据。

 抓包结果: 

 假设用户想通过BLE发送1KB数据,将连接间隔依然7.5ms,每个连接事件执行1次Tx(MaxTxTime=2120us),由于MTU限制,L2CAP最大支持509字节数据,因此应用层分包,执行过程251+251+14,执行两次,理论上需花费6*7.5=45ms,因此花费时间大大提升了。

3 写有回应

抓包结果:

 若用户每次发送一条命令给从设备需得到对方回应,那必须采用带回应的方式。若只是数据透传需求,能免则面吧,此外若主从设备都在互发数据,采用此方式发包严重影响速率甚至丢包

 4 写无回应

 抓包结果:

试想一下,对比write和write_no_response。

write:data_packet(主)->empty packet(从)-> empty packet(主)->data_packet(从)

write_no_response:data_packet(主)->empty packet(从)

哪个更省时呢?

若只是数据透传需求,无需在应用层得到回复,直接采用写无回应方式,每次来SRAM中有数据发完即可。若主从设备互相灌包压测速率,建议采用write_no_response和notify方式。

欢迎指导!!!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值