BLE4.0 ATT_MTU Configurable(BLE4.0每帧传最大的数据量)

在ble4.0协议规范中用户数据最大可以传20字节,为什么?

1、LL层数据包的格式:

BLE4.0 ATT_MTU Configurable(BLE4.0每帧传最大的数据量)_第1张图片

规定了Protocol Data Unit(PDU)长度:2~39Bytes。

PDU分两种数据包:广播通道和数据通道。

①、广播通道的PDU数据包:

BLE4.0 ATT_MTU Configurable(BLE4.0每帧传最大的数据量)_第2张图片

BLE4.0 ATT_MTU Configurable(BLE4.0每帧传最大的数据量)_第3张图片

BLE4.0 ATT_MTU Configurable(BLE4.0每帧传最大的数据量)_第4张图片

广播通道的PDU数据包:2Bytes头信息,6Bytes广播地址,31广播数据,2+6+31=39;

②、数据通道PDU数据包:

BLE4.0 ATT_MTU Configurable(BLE4.0每帧传最大的数据量)_第5张图片

BLE4.0 ATT_MTU Configurable(BLE4.0每帧传最大的数据量)_第6张图片

 

BLE4.0 ATT_MTU Configurable(BLE4.0每帧传最大的数据量)_第7张图片

数据通道的PDU数据包:2Bytes头信息,6Bytes广播地址,2Bytes长度,2Bytes通道ID,4Bytes的MIC。39 -(2+6+2+2+4)=23(ATT_MTU)

2、ATT层数据包通过配置改变用户最大数据传输量(写请求和写回应):

BLE4.0 ATT_MTU Configurable(BLE4.0每帧传最大的数据量)_第8张图片

①数据写读的格式:

BLE4.0 ATT_MTU Configurable(BLE4.0每帧传最大的数据量)_第9张图片

ATT层数据传输的格式:1Bytes 的Opcode,2Bytes的 Handle,(ATT_MTU-3)Bytes的数据;

Opcode用来指示write、notify或者indication等等ATT层传输的操作码。即主机通过write将数据传给从机,从机通过notify或者indication的方式将数据传给主机。

handle为具体哪个特征值的句柄。

value为真正有效的数据。

结论:在ble4.0协议规范中用户数据最大可以传20字节:ATT_MTU-(1+2) = 20;

你可能感兴趣的:(ble,协议栈)