天天看點

三張圖帶你入門藍牙規範一、藍牙技術整體架構二、經典藍牙和低功耗藍牙

一、藍牙技術整體架構

在看藍牙技術整體架構之前,我們先回憶一下TCP/IP的5層網絡模型和它所對應的網絡協定集。

三張圖帶你入門藍牙規範一、藍牙技術整體架構二、經典藍牙和低功耗藍牙

可能不同應用的同學隻需要關注在不同層次上的網絡協定就可以滿足日常工作使用了,像應用開發同學,一般隻關注應用層的協定,http,https等等,網絡的同學可能隻需要關注TCP協定、IP協定以及ARP協定等,WiFi的同學主要focus在802.11協定上。但藍牙技術不同,它并不處于TCP/IP5層模型中的任何一層,而是覆寫了整個5層TCP/IP模型。有了這個概念之後,讓我們來看看下面第一張圖。

三張圖帶你入門藍牙規範一、藍牙技術整體架構二、經典藍牙和低功耗藍牙

在圖1中我們可以看到,藍牙的架構分為Host和Controller兩個子產品,Host主要是各種業務場景需求的實作,Controller部分主要負責的是藍牙封包的收發以及藍牙實體連接配接的管理這些基本功能。是以通常絕大部分的開發工作都是在Host端進行,Controller部分的工作大都是由專門的藍牙晶片廠商來負責;Host和Controller分子產品的最初設計理念是想讓這兩個子產品單獨運作在兩顆不同的晶片甚至系統上,之間通過硬體通信端口(序列槽,USB)使用HCI協定進行連接配接和通信,這樣可以友善替換和更新,例如對于不帶藍牙功能的電腦,我們可以買一個USB藍牙接收器插到電腦上,就可以支援了藍牙功能,這個場景下,HOST子產品就是運作在電腦系統上,Controller子產品就是運作在USB藍牙接收器上。現在雖然有不少晶片把Host和Controller子產品都放在了一顆晶片上,但是基本還是遵循這樣的層次結構,隻是将HCI協定從硬體通信端口換成了軟體端口。

從應用場景來說,藍牙規範針對了我們日常生活中會碰到的非常多的場景分别定義了不同的場景規範(Profile)來支援這些場景下的需求,在圖中我們可以看見,有HFP(Hands Free Profile)來支援藍牙耳機通話場景,SPP(Serial Port Profile)用于序列槽傳輸,OPP(Object Push Profile)用于裝置之間的檔案傳輸場景,A2DP(Advanced Audio Distribution Profile)用于藍牙耳機收聽音樂場景,AVRCP(A/V Remote Control Profile)用于藍牙耳機音樂播放控制場景,PAN(Personal Area Networking Profile)可以讓手機作為藍牙熱點提供上網服務。低功耗藍牙滑鼠鍵盤則是使用HOGP(HID Over GATT Profile)才能讓藍牙滑鼠充一次電可以用三個月到半年。當然,圖1中隻是列出了我們最常會用到的一些藍牙場景,藍牙其實還有其他的像列印(Basic Printing Profile),心率(Heart Rate Profile),尋物(Find Me Profile)等等一系列場景規範(Profile)來支援不同的應用場景。

二、經典藍牙和低功耗藍牙

藍牙規範裡分為經典藍牙和低功耗藍牙,經典藍牙和低功耗藍牙雖然都是藍牙技術,但其實兩種方案之間有非常大的差别,一個簡單的區分就是看版本,版本低于4.0的都是經典藍牙,高于4.0的才能支援低功耗藍牙。在這裡我們簡單介紹一下兩種藍牙技術的概念和差別。

藍牙是工作在頻率為2400MHz到2483.5MHz的無線通信協定,總共有83.5MHz的帶寬資源,在經典藍牙的定義裡,将這83.5MHz總共分為80個頻道,每個頻道是1MHz帶寬,藍牙連接配接管理是用連接配接管理協定(Link Manager Protocol LMP)。而在低功耗藍牙裡,空中隻有40個頻道,每個頻道是2MHz帶寬,連接配接管理使用的是連接配接層(Link Layer),空中資料包的結構也完全不同。我們可以看到,Controler部分的功能完全是兩個獨立的路徑,也就是說,經典藍牙和低功耗藍牙的controller可以獨立存在,互相不依賴,是以目前市面上有隻支援經典藍牙的晶片,也有隻支援低功耗藍牙晶片,當然,也有兩種藍牙模式共存的晶片。

在Host端,經典藍牙和低功耗藍牙的設計思路也不一樣,在經典藍牙協定裡,在邏輯鍊路控制與适配協定層(Logical Link Control and Adaptation Protocol L2CAP)之上,還根據不同的應用場景定義了不同的傳輸協定,例如RFCOM, AVDTP,AVCTP,在不同的傳輸協定之上才定義了不同的Profile,層次結構比較複雜,開發人員學習成本高。而低功耗藍牙就比較簡單,隻定義了一個屬性協定(Attribute Protocol ATT),基于屬性協定定義了一個通用屬性場景規範(Generic Attribute Profile GATT)和其他的針對特定業務的場景規範(Profile),開發起來比較簡單,整體架構也比較容易實作私有場景的開發。

藍牙mesh雖然使用了低功耗藍牙的廣播封包和GATT,但可以算是一個半獨立子產品,藍牙mesh建構了自己的一套網絡尋址和資料傳輸機制,而且在mesh的協定文檔裡也強烈推薦使用廣播承載(ADV Bearer)的方式而不是GATT承載(GATT Bearer)。

藍牙協定和規格文檔

那麼這麼多協定分别都是做什麼的呢?其實藍牙規範也是遵循TCP/IP通信模型設計的,讓我們把藍牙協定和TCP/IP網絡通信模型對應起來就明白了,請看第二張圖

三張圖帶你入門藍牙規範一、藍牙技術整體架構二、經典藍牙和低功耗藍牙

由于經典藍牙和低功耗藍牙大都是點對點直連通信,完全不需要路由功能,是以沒有特地定義網絡層的協定,簡單的尋址功能就在資料鍊路層的LMP層和LL層實作了,而藍牙mesh由于是組建了mesh網絡,有資料轉發和尋址的需求,是以定義了一個Network Layer來做這件事情。

好的,了解到這些之後,那麼我們去哪裡可以看到這些協定更細節的内容呢??我們打開藍牙官網的協定頁面

https://www.bluetooth.com/specifications/

,可以看到協定分為這些類型。

三張圖帶你入門藍牙規範一、藍牙技術整體架構二、經典藍牙和低功耗藍牙

估計這裡會有不少同學開始奇怪了,怎麼官方文檔不是按照上面不同層次的協定來分類的???我想研究藍牙技術應該從哪裡開始呢?請看圖3。

三張圖帶你入門藍牙規範一、藍牙技術整體架構二、經典藍牙和低功耗藍牙

可以看到,其實四大類主要的藍牙規範就完全覆寫了整個藍牙技術架構:

1、核心規範:Core Specifications,定義了藍牙技術最核心的内容。覆寫了從實體層一直到傳輸層的内容。

2、Protocol規範: Protocol Specfications,在核心規範之上針對某一大類場景(例如音視訊傳輸,線纜通信傳輸,網絡通信傳輸)的資料通信需求來定義的傳輸協定,屬于應用層協定,隻在經典藍牙中存在。

3、Profile規範:包含經典藍牙的Traditional Profile Specifications和低功耗藍牙的GATT Specifications。這類規範是針對某一個特定場景需求(例如聽音樂,打電話)來對核心規範和protocol做出更細化的定義和對這些協定無法滿足的一些細化需求做了補充協定。

4、藍牙mesh規範:Mesh Networking Specifications,這是藍牙最新的mesh規範。隻使用了低功耗藍牙的

還有就是一個需要注意的地方就是預配置設定序号:Assigned Numbers,藍牙組織對某些字段的已經配置設定的資料定義,例如公司名,廣播封包類型等等,都在這裡可以查到。當然,還有一些協定修訂案(Specification Errata)和藍牙相容性測試的文檔,以及正在讨論開發中的文檔草案,這些不是專門做藍牙技術的同學可以不用關心。

希望這三張圖能夠讓大家對藍牙規範的整體架構有了一定的了解,在今後工作中碰到需要查藍牙規範文檔的時候能快一點找到答案。

繼續閱讀