藍芽學習之旅——低功耗藍芽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)通用屬性規範的常見基本操作:
發現所有首要服務
發現服務的所有特性
發現所有特性描述符
讀取特徵值、特徵描述符
寫入特徵值、特徵描述符
通知
指示