BLE的通道以及數據包結構


 

 

1. 通道(channel)

 

對於無線通信,數據是在某一頻率上傳輸的,BLE采用頻率是2.4GHz,頻段范圍是2.4000 GHz - 2.4835GHz,在這個范圍內,又為40個通道,其中37,38,39通道是廣播通道。其余37個通道是數據通道,如下圖所示:

 

從圖中可以看到,40個通道並不是線性遞增分布的,3個廣播通道是分散的,BLE數據傳輸過程中采用跳頻技術,而跳頻的計算要就要考慮跳過廣播通道,3個廣播分散的另一個好處就是有利於避開干擾。

如下圖所示,廣播通道避開了部分802.11WIFI信道,其仍然有9個數據通道和802.11不重合。

 

 

 

 

2. BLE設備之間交互的數據

 

在BLE設備建立連接之前,他們之間可以通過廣播通道上(37,38,39 channel)交互數據,例如發送廣播,掃描以及掃描回應,在建立連接之后,BLE設備之間在數據通道上交互數據。

BLE的數據可以概括為廣播通道上傳輸的數據和數據通道上傳輸的數據:

  • 廣播通道PDU:在廣播通道上傳送的數據。

  • 數據通道PDU:在數據通道上傳送的數據。

     

 

3. BLE數據包結構

BLE規范中只有一個固定的包結構:

 

 

每一個包都有四個部分組成:
  • 1-2字節的前導碼preamble

  • 4個字節的接入地址Access Address,

  • 2-257個字節數據包PDU,

  • 3個字節的PDU校驗碼 CRC

 

Preamble:用於頻率的同步,時間估計以及自動增益控制(AGC)等,對於廣播通道的數據,前導碼為:0xAA,對於數據通道,前導碼為0xAA 或者0x55,當接入地址的最低位是1時,前導碼是0x55,否則為0xAA.

當是1M PHY時,preamble是一個字節;

 當是2M PHY時,preamble是兩個字節;

接入地址(Access Address):對於廣播通道的數據,接入地址定義為0x8E89BED6,而對於數據通道的接入地址,每次設備建立連接時都不同,具體需要滿足一定的規則,可以參考Version 4.2 [Vol 6, Part B] 2.1。接入地址和藍牙地址是兩個不同的概念,接入地址是為了同步用的,真正建立連接時使用的地址才是藍牙地址。 PDU: 分為兩類: 廣播類型PDU (在廣播通道上傳送的PDU) 和數據類型PDU (在數據通道上傳輸的PDU) CRC: 是一個針對PDU校驗的24位數據,CRC的算法定義可以參考PACKET FORMAT。

4. BLE的PDU分類

BLE的PDU分為兩類,廣播類型PDU和數據類型PDU,結構如下:

 

 

PDU中前兩個字節的是header,通過header的內容,就可展開PDU類型,分析具體的payload,在后面的章節中逐漸展開,例如,廣播通道PDU進一步展開:

 

 

 

 

 

廣播通道上的PDU數據總共有7個類型,分別為4 Advertising + 2 Scanning +1 Connect-request。

以此類推,就能分解出BLE所有的包。

 

我們先看看一個大的BLE PDU展開圖:

 

 

 

 

進一步的,要分析廣播通道上的PDU,先分析這個包屬於哪一類PDU,在找到該類型的PDU數據結構,進而解析具體含義。

 

 

 

 
 
 

 


免責聲明!

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



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