|
作者:Erick John Reyes,高級固件工程師 Mary Grace Legaspi,固件工程師 Eric Peňa,嵌入式系統架構師 ADI公司 摘要 本文深入介紹了低功耗藍牙(BLE)協議棧架構,并探討了如何運用現有的BLE應用,充分發揮低功耗無線通信的潛力。為了能夠高效可靠地開展設計、解決問題和優化應用,這些知識必不可少。 引言 低功耗藍牙(BLE)是物聯網(IoT)生態系統的一項關鍵技術。BLE最初是作為一種無線協議開發的,用于取代鍵盤、鼠標和耳機等消費電子產品中的線纜,但時至今日,它的功能已經大大拓展,不再僅僅是線纜的替代方案。目前,它在醫療、零售、汽車等多個行業及位置標簽、儀器控制等工業應用中發揮著重要作用。 根據《2023年藍牙市場更新報告》(2023 Bluetooth Market Update),從2023年到2027年,支持藍牙無線技術的設備出貨量的復合年增長率(CAGR)為9%。1 在這種增長態勢下,預計到2027年,BLE設備出貨量將翻一番以上,并且在所有支持藍牙技術的設備中,97%會采用BLE。1 BLE是一種無線技術,于2010年7月隨藍牙4.0規范推出。BLE前稱為Bluetooth Smart(藍牙智能),專為超低功耗設備而設計。 我們熟悉的傳統藍牙技術主要用于將智能手機與耳機配對、傳輸音樂和照片等大量數據,而BLE則有著不同的用途。傳統藍牙雖然能夠處理大量數據傳輸,但會因此而消耗更多的電池電量。相比之下,BLE針對不需要大量數據傳輸的應用進行了優化,因而成為各種功耗敏感應用的理想選擇。傳統藍牙即使在不使用時,仍會保持活動狀態并消耗電量,而BLE大部分時間處于休眠模式,僅在建立連接時才會喚醒,并且連接時間通常僅維持幾毫秒。這種高效的電源管理,結合最高1 Mbps(BLE 5.0中達到2 Mbps)的數據速率,使得BLE設備能夠以極低的功耗運行。
圖1.(a)經典藍牙和(b)低功耗藍牙規范要點2
圖2.(a)經典藍牙和(b)低功耗藍牙的應用2 藍牙規范 如圖1和圖2所示: ► 經典藍牙:代表藍牙的最早版本,具有較高的數據速率能力,適用于流媒體、高帶寬文件傳輸和耳機。它有79個RF信道,其中32個廣播信道,以便其他設備可以發現和連接。 ► 低功耗藍牙:針對數據傳輸不頻繁的低功耗應用,例如傳感器和其他低帶寬傳輸。它有40個RF信道,其中3個信道用于設備發現。 BLE應用概述 典型的BLE應用由兩個設備組成:外圍設備和中心設備。在建立連接之前,外圍設備會通過一個稱為BLE廣播的過程對外宣告自身的存在。中心設備會掃描可用的外圍設備。一旦中心設備找到所需的外圍設備,兩者之間就會建立連接。然后,每個設備中的應用可以通過BLE協議棧的不同層傳輸數據,實現相互通信。參見圖3。 例如,智能手機可以充當中心設備,而健身追蹤器可以充當外圍設備。健身追蹤器作為服務器,收集心率、血壓、ECG、步數甚至睡眠模式等數據。健身追蹤器向附近設備廣播自身的存在,包括作為客戶端的智能手機。智能手機從健身追蹤器中檢索這些數據,并顯示在用戶易于理解的應用程序上。這只是BLE支持實現的眾多應用中的一個例子,我們將在文章的后半部分討論更多應用。
圖3.外圍設備和中心設備的各層 BLE協議棧架構 BLE協議棧架構(如圖4所示)是實現BLE設備之間通信的結構化軟件框架。它定義了必要的層級和協議,用于建立、維持和終止藍牙連接,方便設備間交換數據。 BLE協議棧架構通常分為三個主要層級:應用層、主機層和控制器層。應用層是協議棧的最頂層。BLE設備上運行的應用程序在這一層利用和處理實際數據。主機層位于協議棧中的應用層和控制器層之間,實現了BLE通信所需的所有較高級別協議和配置文件。此外,它還提供高級應用程序編程接口(API),使得應用程序能夠與協議棧的較低層交互。控制器層是BLE協議棧的硬件部分,負責藍牙信號的發送和接收。控制器層處理信號的跳頻、調制和解調等任務。上述層級協同工作,實現BLE設備之間高效可靠的通信。
圖4.BLE協議棧架構 應用 應用層用于實現BLE設備具體應用需求。應用層通過GATT(通用屬性規范)與協議棧下層進行交互,基于GATT定義的服務、特征和相應數據。 設備的特性和行為在應用層設計。其中包括定義服務和特征,指定數據交換方式,實現連接、斷開連接、數據更新等事件處理邏輯。應用層的主要作用是根據設備及其預期使用場景的具體需求來定制BLE協議棧。 主機 主機層包含BLE協議棧的其余上層協議,具體包括邏輯鏈路控制與適配協議(L2CAP)、安全管理器協議(SMP)、屬性協議(ATT)、通用屬性規范(GATT)和通用訪問規范(GAP)。L2CAP作為上下層協議之間的通道接口,負責應用數據的分割和封裝,并使用ACL鏈接傳輸數據包。L2CAP通過通道標識符(CID)和通道復用來正確定位設備上的端點。參見圖5。
圖5.L2CAP數據包 L2CAP信號 在BLE協議棧中,命令以請求和響應的形式在設備之間交換。以下是有關命令的一些要點: ► 命令以請求和響應的形式發送。 ► 每個協議數據單元(PDU)可以發送一個命令。 ► 包含L2CAP信令消息的PDU稱為C幀(控制幀),而數據幀則分為B幀(基本信息幀)和LE幀(低功耗信息幀)。參見圖6。
圖6.L2CAP幀格式 ► Command Reject(命令被拒絕) ■ 命令代碼無法識別或命令長度不正確時發送的響應 ■ 可能原因 ■ 未知命令 ■ 超出LCAP信令最大傳輸單元(MTU) ■ 請求中的CID無效 ► Connection Parameter Update Request(連接參數更新請求) ■ 由LE節點向LE主節點發送,請求一組新的連接參數 ■ 連接參數 ■ Interval min(最小間隔) ■ Interval max(最大間隔) ■ Node latency(節點延遲) ■ Timeout multiplier(超時乘數) ► Connection Parameter Update Response(連接參數更新響應) ■ 由LE主節點向LE節點發送,以響應連接參數更新請求 SMP定義了BLE設備之間的配對、認證和加密程序。SMP命令使用L2CAP服務執行這些程序。SMP命令包由代碼字段和數據字段組成。代碼字段用于標識命令的類型,而數據字段的長度和格式取決于命令類型。所有SMP程序都實現了30秒超時,用于判斷程序是否失敗。參見表1。 表1.SMP命令代碼
ATT定義了訪問設備屬性或數據的規則。它支持發現、讀取和寫入遠程設備上的屬性。ATT遵循客戶端-服務器模型。服務器公開一組屬性,而客戶端可以發現、讀取和寫入這些屬性。ATT中的屬性結構由句柄、類型、值和權限組成。屬性句柄是分配給服務器上每個屬性的唯一非零標識符。屬性類型通過通用唯一標識符(UUID)指定屬性的含義。UUID可以是由藍牙技術聯盟(SIG)分配的16位UUID,也可以是自定義的128位UUID。屬性值是屬性的實際數據值,而屬性權限決定了屬性允許的訪問級別。參見圖7。
圖7.屬性結構 ATT定義了六種協議數據單元(PDU)類型:請求、響應、命令、確認、通知和指示(圖8)。請求PDU由客戶端發送給服務器,請求回復。響應PDU是請求回復時服務器對客戶端的回復。命令PDU由客戶端發送給服務器,無需回復。指示PDU由服務器發送給客戶端,需要回復。確認PDU由客戶端發送給服務器,作為對指示的回復。通知PDU由服務器發送給客戶端,無需回復。通過這些PDU類型,客戶端和服務器可以在BLE協議棧的ATT層交換信息和進行控制。
圖8.不同類型的屬性PDU ATT PDU包由操作碼、屬性參數和身份驗證簽名構成(圖9)。操作碼字段用于標識PDU的方法/類型,例如請求或響應。它還包括一個命令標志,用于指示PDU類型是否為命令;以及一個身份驗證簽名標志,用于指示數據包是否使用身份驗證簽名。
圖9.ATT PDU包格式
圖10.BLE層數據包格式 圖10總結了BLE協議棧架構中各層的數據包格式,并概要顯示了數據的結構。 沿著主機層往上,下一個更高的層級是GATT。通用屬性規范(GATT)負責定義數據或屬性的格式化、封裝以及設備之間的交互規則。GATT程序包括屬性發現、讀取、寫入、通知和指示。它為管理BLE設備中的數據提供了一個標準框架。 一個BLE設備中可能存在多個GATT配置文件(圖11)。藍牙規范中定義了標準配置文件,以確保不同制造商生產的BLE設備能夠互操作。但是,基于特定應用要求,也可以實現自定義配置文件。因此,了解GATT配置文件的結構至關重要。 GATT配置文件由服務組成。服務指ATT協議中定義的一組相關屬性。在GATT中,“特征”一詞通常用于指代屬性,但特征可能包含本身即為屬性的描述符。特征是用戶數據的容器,而描述符提供有關用戶數據的說明或附加信息。
圖11.GATT配置文件結構 與ATT類似,GATT中也有兩個角色:GATT客戶端和GATT服務器。GATT客戶端是訪問遠程GATT服務器上數據的設備。GATT服務器是支持遠程GATT客戶端訪問數據的設備。在GATT中,一個設備的角色由數據訪問的方向決定。 在BLE協議棧的主機層中,通用訪問規范(GAP - Generic Access Profile) 是頂層協議,定義了藍牙設備如何相互訪問和通信。GAP涵蓋了設備的工作模式、發現流程、連接建立和安全機制。所有支持藍牙技術的設備都需要實現GAP,因為它為BLE設備的控制提供了標準框架。 GAP根據BLE設備的活動狀態為其提供不同的角色。當不需要連接時,BLE設備可以充當廣播者或觀察者。廣播者是一種在鄰近范圍內宣告自身存在的設備。它主要利用鏈路層的廣播者角色發送廣播。觀察者與廣播者相反,它利用鏈路層的掃描者角色掃描相關區域,以接收來自附近設備的廣播。在現實生活中,廣播者的例子有BLE信標,而觀察者的例子有收集數據的BLE集線器。參見圖12。
圖12.廣播者向觀察者發送廣播數據包 當可以建立連接時,GAP為BLE設備提供兩個額外的角色:外圍設備和中心設備。外圍設備與廣播者類似,它會宣告自身的存在,并等待來自遠程中心設備的連接請求。中心設備則充當觀察者,掃描外圍設備,并向所需外圍設備發起連接請求。如前所述,外圍設備的例子有智能手表、健身追蹤器和家庭自動化傳感器,而中心設備的例子有智能手機、平板電腦和筆記本電腦。參見圖13。
圖13.中心設備/外圍設備 vs 廣播者/觀察者 根據藍牙規范的要求,在一個配置文件中GAP服務必須由GATT服務器實現。GAP服務涵蓋有關設備基本信息的各種特征,通常包括:設備名稱、設備外觀、外圍設備首選連接參數、中心設備地址解析,以及僅能通過解析獲得的私有地址。 控制器 控制器包含兩層:鏈路層和物理層。物理層位于BLE協議棧的底層,負責無線信號的實際傳輸和接收。物理層工作在2.4 GHz ISM頻段,采用高斯頻移鍵控(GFSK)調制方案。這種調制方案通過改變載波信號的頻率來實現高效的數據傳輸。 物理層由40個信道組成,每個信道彼此間隔2 MHz: ► 3個廣播信道用于廣播短數據包,以宣告廣播者的存在及其可用的服務或信息。 ► 37個數據信道在中心設備與外圍設備建立連接后使用。 在藍牙5核心規范發布前,BLE僅使用3個固定廣播信道(37、38、39)。而藍牙5引入的擴展廣播功能,允許將原本用于數據傳輸的37個數據信道作為輔助廣播信道使用。此擴展解鎖了藍牙5中的新特性,擴展了物理層的編碼方案選擇。參見圖14。
圖14.BLE信道 藍牙5引入了三種不同的物理層(PHY)類型,支持三種調制方案和四種數據傳輸速率(表2)。默認物理層(PHY)為LE 1M,以每秒1兆符號率(1 Msym/s)的調制方案運行,實現和每秒1兆比特率(1 Mbps)的數據傳輸速率,無線傳輸距離可達100米。另一類型物理層(PHY)為LE 2M,使用2 Msym/s調制方案,數據傳輸速率提升至2 Mbps。第三種物理層(PHY)為LE Coded,支持125Kbps和500Kbps兩種數據傳輸速率。類似LE 1M模式,LE Coded采用1 Msym/s符號率調試方案。采用數據速率125Kbps的編碼,每1比特數據擴展為8個符號(S=8),而采用數據速率500Kbps的編碼,每1比特數據擴展為2個符號(S=2)。這種編碼方案使得LE Coded PHY用于長距離模式應用,在空曠空間中傳輸距離可達1000米。(支持前向糾錯,降低誤碼率。) 表2.BLE中的不同PHY
► 物理層(PHY)的上一層為鏈路層,鏈路層負責管理設備間的掃描、廣播、連接建立、連接和鏈路的維護。鏈路層還管理這數據傳輸的信道先擇,利用自適應跳頻擴頻來減少干擾。鏈路層狀態機定義了五種狀態:就緒態、廣播態、掃描態、發起態、連接態。(見圖15) ► 空閑時鏈路層處于準備狀態,不傳輸或接收數據包。 ► 在廣播狀態下,鏈路層(充當廣播者)發送廣播數據包,同時監聽是否有設備請求額外信息。 ► 在掃描狀態下,鏈路層(充當掃描者)監聽廣播者,并可主動發送掃描請求獲取更多額外信息。 ► 在發起狀態下,鏈路層(充當發起者)監聽來自廣播者的數據包,并響應廣播包,向廣播者發起連接請求。 ► 當鏈路層連接到另一個BLE設備的鏈路層,就處于已連接狀態。
圖15.鏈路層狀態轉換 除了不同的狀態之外,鏈路層還定義了如下事件:廣播事件和連接事件。廣播事件涉及使用廣播信道傳輸數據包,而連接事件涉及通過數據信道在已連接狀態下傳輸數據包。 鏈路層還定義了由物理層傳輸的BLE數據包的格式。數據包格式分為編碼PHY(Coded PHY)和未編碼PHY(Uncoded PHY)。
圖16.未編碼PHY的BLE數據包 如圖16所示,未編碼PHY的BLE數據包以前導碼開始,之后是訪問地址、PDU和循環冗余校驗(CRC)。 如圖17所示,編碼PHY的BLE數據包由前導碼、前向糾錯(FEC)塊1和FEC塊2組成。 ► 前導碼是用于頻率同步的1和0交替序列。對于LE 1M,其長度為1個字節;對于LE 2M,其長度為2個字節。 ► 訪問地址用作關聯碼,供調諧到物理信道的設備使用;其長度為4個字節。對于物理廣播信道,訪問地址為固定值0x8E89BED6。 ► PDU包含來自BLE協議棧上層的有效載荷。它可以是廣播PDU或數據PDU,其中可能包含通信所需要的來自傳感器或其他設備的重要信息。更多信息將在下一節中討論。 ► CRC用于錯誤校驗。
圖17.編碼PHY的BLE數據包 ► 恒音擴展(CTE)由一串持續調制的非白化1序列組成,通常情況下是選擇性使用的。CTE對于BLE的測向特性非常重要。 ► FEC塊1包含訪問地址、編碼指示符(CI)和塊終止符(TERM1)。CI指示FEC塊2使用的編碼方案,而TERM1是3位塊終止符。 ► FEC塊2包含PDU、CRC和TERM2,其編碼方案與FEC塊1中CI字段所示的編碼方案相同。 無論未編碼PHY還是編碼PHY,其使用的BLE數據包PDU都可以分為兩類:廣播信道PDU和數據信道PDU。參見圖18至圖21。
圖18.廣播物理信道PDU
圖19.廣播物理信道PDU標頭 如圖19所示,廣播信道PDU用于廣播事件。它由2字節的標頭和最多255字節的有效載荷組成。 標頭包含以下字段:PDU類型、RFU(保留以備將來使用)位、ChSel、TxAdd、RxAdd和長度。ChSel、TxAdd和RxAdd位的值取決于PDU類型,而長度字段用于描述有效載荷的長度(以字節為單位)。
圖20.數據物理信道PDU
圖21.數據物理信道PDU標頭 如上圖所示,數據信道PDU由連接事件使用。它由2或3字節的標頭、有效載荷以及用于加密鏈路的消息完整性校驗(MIC)組成。 數據信道PDU標頭包含以下字段:LLID、NESN、SN、MD、CP、長度和CTEInfo。 ► LLID用于描述鏈路層數據PDU的類型 ► NESN(下一預期序列)用于標識預期對等設備發送的下一個數據包 ► SN(序列號)用于標識當前數據包 ► CP(CTEInfo存在)用于表示存在額外的CTEInfo字段 ► 長度字段用于描述有效載荷的長度(以字節為單位) ► CTEInfo用于描述CTE的類型和長度 主機控制器接口(HCI) HCI充當主機和控制器之間的中介。它提供了一組標準化的命令和事件,用于支持這兩層之間的通信。 HCI支持多種類型的傳輸層,包括UART、USB、SDIO和三線UART。每種傳輸層都有自己的規范和要求。本概述著重介紹UART傳輸層。 根據藍牙5.2規范,UART傳輸層支持五類數據包:命令、事件、異步無連接(ACL)數據、同步(SCO)數據和等時(ISO)數據。 ► 主機使用命令數據包向控制器發送命令。這些命令指示控制器執行特定的操作或配置。 ► 控制器使用事件數據包將已發生的事件告知主機。事件可以包括連接狀態變化、數據接收或其他相關信息。 ► ACL數據包用于主機與控制器之間交換數據。它支持傳輸異步數據,例如來自傳感器或用戶輸入的信息。 ► SCO數據包用于主機與控制器之間交換同步數據。但需要注意的是,BLE不支持SCO數據包,SCO數據包主要用于經典藍牙中的語音或音頻傳輸。 ► ISO數據包是新增的數據包類型,支持利用BLE在設備之間傳輸有時限要求的數據。等時數據包專為需要精準時序的應用而設計,例如音頻流傳輸或實時控制。
圖22.藍牙應用 為何如此重要? BLE廣泛應用于從消費類產品到工業環境的各種場景中,因此了解BLE及其重要性會大有裨益。BLE是一種不斷發展和升級的協議,為應用開發提供了無限的可能性。 用例 BLE廣泛應用于眾多行業,在不知不覺中影響著我們的日常生活(圖22)。熟悉BLE有助于人們在各種應用場景中理解并運用BLE的優勢。BLE為很多領域做出了巨大貢獻,推動了現有流程的革新。以下是其中的一些領域: BLE在醫學領域的應用 BLE在醫學領域發揮著至關重要的作用。BLE技術讓血糖儀、血壓監測儀等設備得以使用,甚至像起搏器這樣要求超低功耗的植入式設備也能夠更好地發揮作用。這些設備可以收集數據,并向患者和醫療機構傳輸實時報告。BLE還能用于患者追蹤,定位房間或樓層號碼,向醫療響應人員傳輸信息等。 BLE在定位追蹤中的應用 借助BLE技術,先進的追蹤器或智能標簽可以附著在包、鑰匙甚至寵物上,以便追蹤所在位置。這些標簽設計得非常小巧且節能,因此BLE的低能耗特性至關重要。很多行業也在利用BLE技術,例如倉庫貨位監控、雜貨店管理及室內導航。 BLE在可穿戴設備中的應用 可穿戴設備對輕巧便攜和長久續航的要求,使得BLE技術成為理想之選。智能手表、健身手環和智能眼鏡等設備普遍采用BLE來實現無線連接并降低能耗。 BLE在音頻流傳輸中的應用 BLE在音頻流傳輸應用中發揮著重要作用。隨著LE Audio的推出,BLE現在支持低延遲的音頻流傳輸,帶來更佳的音質體驗。LE Audio采用低復雜度通信編解碼器(LC3),能夠在低數據速率下保證音頻質量不受影響。這為無線音頻消費開辟了新的可能性。 BLE在自動化家居中的應用 在自動化家居領域,BLE是實現智能家居的基礎技術。物聯網在智能家居中得到廣泛應用,而BLE支持各種智能設備之間無縫連接。市面上有各種各樣支持BLE的智能設備可用于自動化家居,例如鑰匙扣、家庭信標、開關等。BLE讓用戶能夠控制和監控家里的方方面面,例如智能照明、高效節能的家庭能源管理、智能門鎖、無線揚聲器系統、家用機器人和安保系統。 結論 在BLE協議棧中,應用數據需經過多層協議處理,才能到達另一臺設備的遠端應用程序(該設備也擁有自身的BLE協議棧)。完整流程如下: 1. 應用層:應用程序選擇適當的屬性來保存要傳輸的數據。 2. ATT層:生成ATT層數據包,其中包含與遠端設備目標屬性對應的信息。 3. L2CAP層:來自ATT層的數據包將經由L2CAP層處理。若有需要,L2CAP執行數據分段和重組。該層為每個L2CAP數據包添加L2CAP標頭。 4. 鏈路層:將L2CAP數據包傳遞至鏈路層,鏈路層將數據包傳遞到物理層進行無線傳輸。給數據包添加鏈路層表頭,形成協議數據單元(PDU)。 5. 物理層:在傳輸之前,物理層將必要的前導碼、訪問地址和CRC添加到PDU中。數據包隨后通過無線方式傳輸。 在接收端,遠程BLE設備接收數據包,并執行逆過程來提取數據。 在不同應用中實現BLE時,選擇合適的硬件是實現最佳效率和優化的關鍵。針對不同的要求和應用,ADI公司提供了多種支持BLE的微控制器。 MAX32665/MAX32666/MAX32667/MAX32668DARWIN系列低功耗微控制器針對廣泛的實際應用而設計。這些MCU支持藍牙5低功耗無線電連接,可以與多個設備進行無線連接以實現物聯網應用,同時仍維持盡可能低的活動功耗和保持功耗3。DARWIN MCU還擁有同類產品中最大的嵌入式存儲器,支持更大規模的應用和更多的協議棧。這種靈活性和能力為物聯網領域的設計和應對各種挑戰提供了無限可能性,既夯實了現代物聯網解決方案的基石,又為未來發展鋪平了道路。 參考文獻 1 2023 Bluetooth Market Update,Bluetooth,2023年。 2 Bluetooth Technology Overview,Bluetooth。 3 “了解DARWIN:一種全新低功耗物聯網MCU”,ADI公司,2022年10月。 4 Madhur Bhargava,“IoT Projects with Bluetooth Low Energy”,Packt Publishing Limited,2017年。 5 “Bluetooth Core Specification Version 5.2 Feature Overview”,Bluetooth。 6 “Core Specification 5.4”,Bluetooth。 7 Naresh Gupta,“Inside Bluetooth Low Energy”,Artech House,2013年。 8 “Stack Architecture”,Zephyr Project。 Bluetooth®文字標記和徽標是Bluetooth SIG, Inc.的注冊商標,ADI公司已獲得許可使用此類標記。其他商標和商號均屬各自所有人所有。 作者簡介 Erick Reyes是軟件和安全部門的高級固件工程師,負責為汽車和能源、通信及航空航天事業部提供技術支持。他于2019年加入ADI公司,擔任產品應用工程師,從事精密轉換器和RF無線收發器相關工作。他畢業于馬尼拉馬普阿大學,獲電子工程學士學位。 Mary Grace Legaspi是軟件和安全部門的固件工程師,負責為消費電子事業部提供技術支持。2018年9月加入ADI公司,工作地點位于菲律賓甲米地。她擁有塔拉克州立大學電子工程學士學位和菲律賓大學管理學碩士學位。 Eric Peňa是ADI公司軟件和安全部門的嵌入式軟件架構師,負責為工業自動化事業部提供技術支持。2019年4月加入ADI公司,工作地點位于菲律賓甲米地。畢業于馬尼拉亞當森大學,獲計算機工程學士學位。Eric之前曾在Technology Enabler Designer擔任固件工程師,還曾在Fujitsu Ten Solutions擔任系統工程師。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||