BLE包结构及传输速率
根据Bluetooth 4.0 BLE部分协议:BLE中物理层physical layer的传输速率是1Mbps,除了这个外,数据传输速率与包大小、CPU处理时间相关。
包结构:
1.总体结构:
总体结构{
U1 preamble;//前缀,可以是10101010或01010101
U4 AccessAddress;//0x8e89bedd6 ,Access Address(4字节)
U[x] PDU;//PDU
U3 CRC;
};
2.广播包
广播包{
U2 Header;//0000,0001,0010,0011,0101,0110
//0000 - connected undirected advertising event 可连接非定向广播事件
//0001 - connected directed advertising event 可连接定向广播事件
//0010 - non-connected undirected advertising event 不可连接非定向广播事件
//0011 - response to scan request form scanner扫描请求响应
//0101 - connect request by initiator连接请求
//0110 - connected directed advertising event 可发现非定向广播事件
U[x] Payload;//最大37字节
};
其中Payload结构分为:
非定向广播包:{//Undirected advertising packets
U[6] AdvA;//广播者地址 advertiser‘s public address if TxAdd = 1, or a random address if TxAdd = 0;
U[x<=31] AdvData;//广播数据(advertising data)
};
定向广播包{//Directed advertising packets
U[6] AdvA;//广播者地址 advertiser‘s public address if TxAdd = 1, or a random address if TxAdd = 0;
U[6] InitA;//contains initiator's address if RxAdd = 1, or a random address if RxAdd = 0;
}
3. 扫描请求及扫描响应
扫描请求及扫描响应{
U2 Header;//0011 0100
//0011 - scan request for further information from advertiser 扫描请求
//0100 - response to scan request from scanner 扫描响应
U[x] Payload ;//
};
扫描请求
扫描请求{
U[6] ScanA;//Scanner's public address if TxAdd = 1, or a random address if TxAdd = 0;
U[6] AdvA;//advertiser‘s public address if TxAdd = 1, or a random address if TxAdd = 0;
};
扫描响应
扫描响应{
U[6] AdvA;//advertiser‘s public address if TxAdd = 1, or a random address if TxAdd = 0;
U[0-31] ScanRspData;//ScanRspData data from advertiser’s host;
};
4. 连接请求
连接请求PDU{
U2 Header;//0101 连接请求标志
U[34] Payload{
U[6] InitA;//
U[6] AdvA;//
U[22] LLData;//包含连接信息,详细结构参考bluetooth 4.0 协议。
};
};
5.LL 数据通道及控制包
PDU = Header(2 Bytes)+ Payload(最多27字节)
Header:详细说明参考bluetooth 4.0 协议;
LL 数据通道
Payload = 0~27字节
LL 控制包 Payload = 1~23字节
6.速率
若只考虑蓝牙设备连接之后,评估数据传输速率,
最大包长度=preamble(U1)+Access Address(U4)+PDU(U[29])+CRC(U3)=41字节
射频PHY传输速率 1Mbps;
则传输有效payload 27字节耗时:41*8/1 = 328 us;
一个27字节的传输周期 :328 + 150 + 80 + 150 = 708 us,若能持续传输,即传输速度:38KB/s,这样显然功耗不会低,也不符合BLE协议规范,真正的传输速度受连接事件间隔和间隔内能传输数据包数目相关。
如果连接时间间隔设置到7.5ms(协议规定最小值),一个连接事件传输3个包,则传输速率大约是10.8kB/s,一个连接事件能传输几个包与连接设备密切相关,看到很多CC2540实测数据,时间间隔7.5ms和一个传输时间3个包以上很多都达不到,51内核是其重要原因之一,在 http://processors.wiki.ti.com/index.php/CC2540_Data_Throughput 有5.9KB/s,也有在论坛看到有40ms间隔,2个包,即1.4KB/s成功的案例,以后有时间我再实测下速度。