1. 程式人生 > >藍芽學習之旅——低功耗藍芽BLE基礎

藍芽學習之旅——低功耗藍芽BLE基礎

(一)BLE與藍芽4.0的區別

藍芽4.0實際是個三位一體的藍芽技術,它將三種規格合而為一,分別是傳統藍芽、低功耗藍芽和高速藍芽技術,這三個規格可以組合或者單獨使用。

(二)BLE的體系結構


(三)BLE裝置鏈路層狀態


(四)通道

頻率/MHz 通道編號 通道型別
2402 37 廣播通道
2404~2424 0~10 資料通道
2426 38 廣播通道
2428~2478 11~36 資料通道
2480 39 廣播通道

(五)廣播

 裝置每次廣播時,會在3個廣播通道上傳送相同的報文,稱為一個廣播事件

 廣播間隔是指2個廣播事件之間間隔的時間,取值範圍20ms~10.28s

 鏈路層會在每兩次廣播事件期間產生一個隨機廣播延時時間(0~10ms),避免資料碰撞

 廣播資料包最大長度31個位元組

(六)掃描

 每次掃描裝置開啟接收器去監聽廣播裝置,稱為一個掃描事件。

 掃描事件交替地發生在三個特定的廣播通道:37,38,39

 掃描的兩個引數

掃描間隔:掃描裝置的掃描頻率

掃描視窗:每次掃描事件的持續時間

(七)連線

(1)連線間隔:

 一個連線事件是指主裝置和從裝置之間相互發送資料包的過程。

 每個資料包會在上個數據包之後等待150us再發送。

 連線間隔指的是兩個連續的連線事件開始處的時間距離,可以是7.5ms~4s內的任意值,但必須為1.25ms的整數倍。

 在連線事件之外,主從裝置之間不傳送任何資料。

(2)傳輸視窗偏移,傳輸視窗大小:

 傳輸視窗偏移可以是0到連線間隔之間的任意值。

 從傳輸視窗開始,從裝置開啟其接收器,並等待來自主裝置的資料包。如果到傳送視窗結束時仍未收到資料包,從裝置終止偵聽,並會在下一個連線間隔後再次嘗試。

(3)從裝置延遲、監控超時:

 監控超時,判斷連線斷開的無資料通訊的最大時間間隔,10ms的倍數,100ms~32s之間。

 從裝置延遲,從裝置如果沒有資料傳送,允許跳過的最大連線事件次數,0~499之間。

 有效連線間隔,兩個有效的連線事件之間的最大時間跨度,不得大於監控超時。

(4)通道圖、調頻演算法增量:

 通道圖用於標記通道的好壞,37個數據信道,所以通道圖的長度設為37位,1表示良好,0表示糟糕。

 調頻演算法增量的數值是在5~16之間的一個隨機數。

 過高或過低的跳數都不利於迅速排除干擾。

(5)休眠時鐘精度:

 時鐘精度可以幫助從裝置消除連線事件的不確定性。

 時鐘的漂移使得從裝置必須提早醒來,保持偵聽,以防止主從裝置的通訊丟失。

(6)影響功耗的引數:

 連線間隔

 從機延遲

 傳輸視窗

(八)連線終止

主動終止


被動終止

監控超時

(九)屬性資料庫

屬性控制代碼,是屬性在資料庫中的唯一標識,可用於索引儲存地址。

屬性型別(UUID),說明代表什麼資料,可以是Bluetooth SIG分配或使用者自定義的UUID。長度128位,傳輸常用的UUID時,只發送較短的16位版本。

UUID基數:00000000-0000-1000-8000-00805F9B34FB

屬性值,表示裝置公開的狀態資訊。

低功耗藍芽使用的那部分UUID分類:

 0x1800 ~ 0x26ff 用作服務類通用唯一識別碼

 0x2700 ~ 0x27ff 用作標識計量單位

 0x2800 ~ 0x28ff 用作區分屬性型別

 0x2900 ~ 0x29ff 用作特性描述

 0x2a00 ~ 0x7fff 用作區分特性型別

總結:

 所有位於該服務宣告之後,下一個宣告之前的屬性都隸屬於當前的服務。

 特性由特性宣告、特性數值和零個或多個描述符組成。

 特性宣告,首先要用到特性屬性,它包含三個欄位:特性性質、數值屬性控制代碼和特性型別。如下所示


特性性質是一個八位欄位,確定了特性數值屬性對一系列操作的支援情況,包括:廣播、讀、寫、通知、指示、命令、簽名認證、拓展性質。

(1)通知和指示的區別

它們都是有伺服器自發地向客戶端傳送屬性值。通知可以在任意時刻傳送;指示需要客戶端回覆確認資訊,伺服器收到確認後才發下一條指示。

(2)屬性協議的常見基本操作:

 查詢資訊請求

請求:起始控制代碼和結束控制代碼

響應:屬性的控制代碼和型別

 按型別值查詢請求

請求:起始控制代碼和結束控制代碼,屬性型別

響應:控制代碼

 按型別讀取請求

請求:起始控制代碼和結束控制代碼,屬性型別

響應:控制代碼和數值

 讀取請求

請求:一個控制代碼

響應:對應的屬性值

 寫入請求

請求:一個控制代碼、屬性值

響應:確認

 控制代碼值通知

請求:一個控制代碼、屬性值

 控制代碼值指示

請求:一個控制代碼、屬性值

響應:確認

(3)通用屬性規範的常見基本操作:

 發現所有首要服務

 發現服務的所有特性

 發現所有特性描述符

 讀取特徵值、特徵描述符

 寫入特徵值、特徵描述符

 通知

 指示