深入淺出講解低功耗藍牙(BLE)協議棧


詳解BLE連接建立過程
https://www.cnblogs.com/iini/p/8972635.html

詳解BLE 空中包格式—兼BLE Link layer協議解析
https://www.cnblogs.com/iini/p/8977806.html

開發你的第一個BLE應用程序—Blinky
https://www.cnblogs.com/iini/p/8996025.html

手把手教你開發BLE數據透傳應用程序、
https://www.cnblogs.com/iini/p/9095622.html

如何實現藍牙空中升級BLE OTA
https://www.cnblogs.com/iini/p/9314246.html

手把手教你開發BLE數據透傳應用程序
https://www.cnblogs.com/iini/p/9095622.html

三種藍牙架構實現方案(藍牙協議棧方案)
https://www.cnblogs.com/iini/p/8834970.html

深入淺出低功耗藍牙(BLE)協議棧
https://www.cnblogs.com/iini/p/8969828.html


 

藍牙協議是通信協議的一種,一般而言,我們把某個協議的實現代碼稱為協議棧(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無線通信產品。



作者:昇潤科技
鏈接:https://www.jianshu.com/p/adf200f76efd
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM