藍牙BLE4.0的LL層數據和L2CAP層數據的區分與理解


一直搞不太清楚藍牙BLE協議,不知道LL層和L2CAP層是如何划分的,后來博士給我講了講就理解了,寫下來,做個記錄:

1. 我們知道,除了藍牙5.1新出的CTE,所有的BLE都是如下類型的包:

image

對於連接后的通訊包,PDU的最前面兩個字節為header,header的最前兩個bit為LLID,藍牙BLE就是通過LLID來區分LL層數據和L2CAP層數據的。

2. LL層的包如下:

image

其中LLID這兩個bit就是用於區分LL層數據和L2CAP層數據的。

當LLID為3時,該數據包為LL控制層數據,如下所示:

image

3. L2CAP層的包如下:

當LLID為2時,該數據包為L2CAP層數據包的起始包,起始包后續會有L2CAP層的長度和L2CAP層的channel ID,

當LLID為1時,該數據包為L2CAP層數據包的延續包,延續包后續沒有L2CAP層的長度和L2CAP層的channel ID,但這種情況只有當

MTU的值大於data length時才會出現這樣的包,但一般我們不這樣用。

如下圖為L2CAP層數據包格式:

image

4. L2CAP層的數據,根據channel ID不同,又分為三種不同的L2CAP指令,如下圖所示:

image

上圖可看出L2CAP包括三種指令:ATT指令,信令指令,SMP指令。

其中,

ATT指令用於傳輸應用通訊數據;

信令指令用於更新連接間隔的指令,和拒絕錯誤操作碼時使用此信令指令;如下圖:

image

SMP指令用於配對過程;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM