昇潤阿裏巴巴|技術論壇
注冊登錄 |客戶支持中心|400-8050-562English

一分鍾快速理解和掌握低功耗藍牙(BLE)協議基礎知識

發布日期:2019.08.05     浏覽次數:

    藍牙協議是通信協議的一種,一般而言,我們把某個協議的實現代碼稱爲協議棧(protocol stack),BLE協議棧就是實現低功耗藍牙協議的代碼,理解和掌握BLE協議是實現BLE協議棧的前提。


    當前的藍牙協議分爲基礎率/增強數據率(BR/EDR)和低耗能(LE)兩種技術類型,本文將重點介紹BLE(Bluetooth Low Energy)。



1、BLE低功耗藍牙協議棧框架


    要實現一個BLE應用,首先需要一個支持BLE射頻的芯片,然後還需要提供一個與此芯片配套的BLE協議棧,最後在協議棧上開發自己的應用。可以看出BLE協議棧是連接芯片和應用的橋梁,是實現整個BLE應用的關鍵。那BLE協議棧具體包含哪些功能呢?簡單來說,BLE協議棧主要用來對你的應用數據進行層層封包,以生成一個滿足BLE協議的空中數據包,也就是說,把應用數據包裹在一系列的幀頭(header)和幀尾(tail)中。


    藍牙協議規定了兩個層次的協議,分別爲藍牙核心協議(Bluetooth Core)和藍牙應用層協議(Bluetooth Application)。藍牙核心協議關注對藍牙核心技術的描述和規範,它只提供基礎的機制,並不關心如何使用這些機制;藍牙應用層協議,是在藍牙核心協議的基礎上,根據具體的應用需求,百花齊放,定義出各種各樣的策略,如FTP、文件傳輸、局域網等等。



    而藍牙核心協議(Bluetooth Core)又包含BLE Controller和BLE Host兩部分。這兩部分在不同的藍牙技術中(BR/EDR、AMP、LE),承擔角色略有不同,但大致的功能是相同的。Controller負責定義RF、Baseband等偏硬件的規範,並在這之上抽象出用于通信的邏輯鏈路(Logical Link);Host負責在邏輯鏈路的基礎上,進行更爲友好的封裝,這樣就可以屏蔽掉藍牙技術的細節,讓Bluetooth Application更爲方便的使用。



2、BLE低功耗藍牙核心協議層詳解(Bluetooth Core)


1、物理層(Physical Layer,簡寫 PHY):PHY層用來指定BLE所用的無線頻段,調制解調方式和方法等。是1Mbps自適應跳頻的GFSK射頻,工作于免許可證的2.4GHz ISM(工業、科學與醫療)頻段。PHY層做得好不好,直接決定整個BLE芯片的功耗,靈敏度以及selectivity等射頻指標。


2、鏈路層(Link Layer,簡寫 LL):LL層是整個BLE協議棧的核心,也是BLE協議棧的難點和重點。LL層要做的事情非常多,比如具體選擇哪程度 個射頻通道進行通信,怎麽識別空中數據包,具體在哪個時間點把數據包發送出去,怎麽保證數據的完整性,ACK如何接收,如何進行重傳,以及如何對鏈路進行管理和控制等等。LL層只負責把數據發出去或者收回來,對數據進行怎樣的解析則交給上面的GAP或者ATT。


3.主機控制接口層(Host Controller Interface,簡寫 HCI):HCI是可選的,HCI主要用于2顆芯片實現BLE協議棧的場合,用來規範兩者之間的通信協議和通信命令等。


4、通用訪問配置文件層(Generic access profile,簡寫GAP):GAP是對LL層payload(有效數據包)如何進行解析的兩種方式中的一種,而且是最簡單的那一種。GAP簡單的對LL payload進行一些規範和定義,因此GAP能實現的功能極其有限。GAP目前主要用來進行廣播,掃描和發起連接等。


5、邏輯鏈路控制及自適應協議層(Logical Link Control and Adaptation Protocol,簡寫 L2CAP):L2CAP對LL進行了一次簡單封裝,LL只關心傳輸的數據本身,L2CAP就要區分是加密通道還是普通通道,同時還要對連接間隔進行管理。


6、安全管理層(Security Manager,簡寫 SM):SMP用來管理BLE連接的加密和安全的,如何保證連接的安全性,同時不影響用戶的體驗,這些都是SMP要考慮的工作。


7、屬性協議層(Attribute protocol,簡寫 ATT):簡單來說,ATT層用來定義用戶命令及命令操作的數據,比如讀取某個數據或者寫某個數據。BLE協議棧中,開發者接觸最多的就是ATT。BLE引入了attribute概念,用來描述一條一條的數據。Attribute除了定義數據,同時定義該數據可以使用的ATT命令,因此這一層被稱爲ATT層。


8、通用屬性配置文件層(Generic Attribute profile,簡寫 GATT):GATT用來規範attribute中的數據內容,並運用group(分組)的概念對attribute進行分類管理。沒有GATT,BLE協議棧也能跑,但互聯互通就會出問題,也正是因爲有了GATT和各種各樣的應用profile,BLE擺脫了ZigBee等無線協議的兼容性困境,成了出貨量最大的2.4G無線通信産品。