BLE(低功耗藍牙)的 PHY(物理層)幀結構根據傳輸模式(廣播、數據)和 PHY 類型(1M、2M、Coded PHY)有所差異,但基本框架一致。以下是 BLE PHY 幀的通用結構及各部分含義:
一、BLE PHY 幀的基本結構
BLE PHY 幀由 4 個核心部分組成,從發送到接收的順序為:
前導碼(Preamble)→ 接入地址(Access Address)→ PDU(協議數據單元)→ CRC(循環冗余校驗)
字段 | 長度(比特) | 作用 |
---|---|---|
前導碼 | 8(1M/2M PHY)或 16(Coded PHY) | 用于接收端同步(頻率、時鐘),區分幀類型。 |
接入地址 | 32 | 標識幀的歸屬(廣播、連接、特定設備),用于幀同步和設備識別。 |
PDU | 可變(最長 255 字節,即 2040 比特) | 包含實際數據(廣播信息、用戶數據等),分廣播 PDU 和數據 PDU。 |
CRC | 24 | 用于檢測傳輸錯誤,接收端通過 CRC 校驗判斷幀是否有效。 |
二、各字段詳解
1. 前導碼(Preamble)
- 長度:
- 1M PHY 和 2M PHY:8 比特
- Coded PHY(S=2 或 S=8 編碼):16 比特(因編碼擴展,實際傳輸時對應 32 或 128 符號)
- 內容:
- 廣播幀:前導碼為
0xAA
(10101010),用于所有設備識別廣播信號。 - 連接幀:前導碼由接入地址的最低位(LSB)決定,若接入地址 LSB 為 0,則前導碼為
0x00
(00000000);若為 1,則為0xFF
(11111111)。
- 廣播幀:前導碼為
- 作用:幫助接收端快速實現頻率同步和符號定時同步。
2. 接入地址(Access Address)
- 長度:32 比特,無符號整數。
- 類型與含義:
- 廣播接入地址:固定為
0x8E89BED6
,所有廣播幀(如 ADV_IND、SCAN_REQ)均使用此地址,用于標識廣播信道的幀。 - 連接接入地址:每個連接唯一,由主設備在建立連接時隨機生成(32 比特),僅主從設備知曉,用于區分不同連接的幀,增強安全性。
- 定向接入地址:用于定向廣播(如 ADV_DIRECT_IND),由目標設備的 BD_ADDR(MAC 地址)生成,確保僅目標設備響應。
- 廣播接入地址:固定為
- 作用:幀同步(接收端通過匹配接入地址確認幀的開始)和設備 / 連接識別。
3. PDU(Protocol Data Unit,協議數據單元)
- 長度:可變,由 1 字節的 “長度字段”(Length)決定,最長 255 字節(即 2040 比特)。
- 結構:
- PDU 頭(Header):2 字節(16 比特),包含類型(Type)、預留位(RFU)、長度(Length)等控制信息。
- PDU 載荷(Payload):0~255 字節,具體內容取決于幀類型:
- 廣播 PDU(如 ADV_IND):包含設備名稱、UUID、廣播數據等。
- 數據 PDU(如 ATT、GATT 消息):包含用戶數據或控制指令。
- 編碼:在 Coded PHY 中,PDU 會經過卷積編碼(S=2 或 S=8)擴展符號長度,提升抗干擾能力。
4. CRC(Cyclic Redundancy Check)
- 長度:24 比特。
- 生成方式:基于接入地址和 PDU 內容,通過多項式
0x00065B
(藍牙規范定義)計算得出。 - 作用:接收端對接收的接入地址 + PDU 重新計算 CRC,與發送端的 CRC 比對,若不一致則判定幀錯誤并丟棄。
三、不同 PHY 類型的幀結構差異
PHY 類型 | 前導碼長度 | PDU 編碼方式 | 傳輸速率 | 適用場景 |
---|---|---|---|---|
1M PHY | 8 比特 | 無編碼(1:1 映射) | 1Mbps | 通用低功耗場景(如智能手環) |
2M PHY | 8 比特 | 無編碼(1:1 映射) | 2Mbps | 高速短距離傳輸(如耳機) |
Coded PHY | 16 比特 | S=2(500kbps)或 S=8(125kbps) | 500kbps/125kbps | 遠距離 / 強干擾場景(如傳感器) |
總結
BLE PHY 幀結構通過 “前導碼 - 接入地址 - PDU-CRC” 的分層設計,實現了高效的同步、識別、數據傳輸和錯誤檢測。不同 PHY 類型通過調整前導碼長度和編碼方式,平衡了傳輸速率、距離和抗干擾能力,適配多樣化的低功耗藍牙應用場景。具體細節可參考藍牙核心規范(Core Specification)中 “PHY Layer” 章節。