1. 程式人生 > >藍芽4.0BLE協議棧以及分層概述

藍芽4.0BLE協議棧以及分層概述

一、藍芽4.0協議概念
協議定義的是一系列的通訊標準,通訊雙方需要共同按照這一標準進行正常的資料收發;協議棧是協議的具體實現形式, 通俗的理解就是用程式碼實現的函式庫,以便於開發人員呼叫。BLE協議棧將各個層定義的協議都集合在一起,以函式庫的形式實現,並給使用者提供一些應用層 API,供使用者呼叫。

二、BLE協議棧
在 Bluetooth-LE 低功耗藍芽中有四種裝置型別:Central主機、Peripheral從機、Observer觀察者、Broadcaster廣播者。
通常Central和Peripheral一起使用。
然後Observer和 Broadcaster一起使用。
Central和Peripheral 連線後交換資料,我們平時使用到的基本上都是這個模式,而像多個溫度採集器(一般用於智慧家居),通常採用 Observer 和 Broadcaster 這種無需連線的方式。

三、GATT層
初始化 GATT Client,GATT有Service和Client之分,Service 作為服務端,GATT Client提供 read/write 介面,Central 作為 Client,對一般情況下,Peripheral 作為 Service ,所以主機 Central會呼叫GATT_WriteCharValue 或者GATT_ReadCharValue 來和作為Service端的 Peripheral從機通訊, 而Peripheral 需要通過notify的方式,也就是呼叫GATT_Notification 發起和主機的通訊,在後面我們會詳細介紹他們,一般來說,Peripheral notify的方式,速度要比直接讀寫的速度要慢 。

四、BLE協議棧各個層簡介
PHY層:
1Mbps自適應跳頻的GFSK射頻,工作於免許可證的2.4GHz ISM(工業、科學、醫療)頻段。
LL 層:
鏈路層,RF 控制層,用於控制裝置的射頻狀態,控制晶片工作在standby(準備)、advertising(廣播)、scanning(監聽/掃描), initiating(發起連線)、connected(已連線) 這五個狀態中的一種。五種狀態的切換描述為: advertising(廣播)不需要連線就可以傳送資料(告訴所有人,我來了), scanning(監聽/掃描)來自廣播的資料,initiator(發起人)將攜帶 connection request(連線請求)來響應廣播者,如果advertiser(廣播者)同意該請求, 那麼廣播這和發起者都會進入已連線狀態, 發起連線的裝置變為 master(主機),接收連線請求的裝置變為 slave(從機)。
HCI 層
主機控制介面層,通訊層,向host和controller提供一個標準化的介面。該層可以由軟體API實現或者使用硬體介面 uart、spi、usb來控制。
L2CAP 層
邏輯鏈路控制及自適應協議層,相當於快遞,將資料打包,為上層提供資料封裝服務,可以讓客戶點對點的通訊。
SM 層
安全管理層,提供配對和金鑰的分發,實現安全連線和資料交換。
ATT 層
屬性協議層,ATT 環境中,允許裝置向另外一個裝置展示一塊特定的資料,稱之為“屬性”,展示“屬性” 的裝置稱為伺服器,與之配對的裝置稱為客戶端。鏈路層狀態(主機和從機)與裝置的ATT 角色是相互獨立的,也就是說,主機裝置可以是 ATT 伺服器,也可以是 ATT客戶端,從機也一樣。
GATT 層
通用屬檔案健配置層,從名字就能看出,GATT 是在 ATT 上面的一層結構,定義了使用 ATT的服務框架,GATT規定了配置檔案(鼎鼎有名的 profile)的結構,在BLE中,所有被profile或者服務用到的資料塊都稱為“特性, characteristic”兩個建立連線的裝置之間的所有資料通訊都是通過 GATT 子程式處理,應用程式和 profile 直接使用 GATT層,在後面具體的程式碼中,我們會經常見到 GATT,資料互動也是再GATT層。
這裡寫圖片描述