摘要
本文深入介紹了低功耗藍牙(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(指令被拒絕)
■ 指令程式碼無法識別或指令長度不正確時發送的回應
■ 可能原因
■ 未知指令
■ 超出訊號最大傳輸單元(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指令程式碼
|
程式碼
|
說明
|
相位
|
|
0x00
|
保留
|
—
|
|
0x01
|
配對請求
|
相位1
|
|
0x02
|
配對回應
|
相位1
|
|
0x03
|
配對確認
|
相位2
|
|
0x04
|
隨機配對
|
相位2
|
|
0x05
|
配對失敗
|
相位2
|
|
0x06
|
加密訊息
|
相位3
|
|
0x07
|
主節點識別
|
相位3
|
|
0x08
|
識別資訊
|
相位3
|
|
0x09
|
身份位址資訊
|
相位3
|
|
0x0A
|
簽名訊息
|
相位3
|
|
0x0B
|
安全請求
|
相位1
|
|
0x0C至0x0FF
|
保留
|
—
|
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中,一個裝置的角色由資料存取的方向決定。
主機的最上層是GAP。GAP定義BLE裝置如何相互存取和通訊。其涵蓋工作模式、裝置發現的通用程式、連接建立和安全性。所有支援藍牙技術的裝置都需要實現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核心規範》發佈之前,只有3個通道專門用於BLE廣播。然而,隨著擴展廣播的引入,剩餘的37個通道被用於輔助廣播通道。此擴展解鎖了藍牙5中的新特性,其中之一是能夠採用物理通道(PHY)的不同編碼方案。參見圖14。
圖14.BLE通道
藍牙5推出後,BLE開始支援不同的PHY,這些PHY提供三種調變方案和四種資料速率
(表2)。默認PHY稱為LE 1M,以每秒1兆符號(Msymps)的調變方案運行,實現了每秒1兆位元(Mbps)的資料速率,無線傳輸距離長達100公尺。另一個PHY選項是LE 2M,它使用2 Msymps調變方案,支援2 Mbps的資料速率。第三個PHY稱為LE Coded(LE編碼),其支援兩種資料速率:125 kbps和500 kbps。LE Coded採用1 Msymps調變方案,類似於LE 1M,主要區別是增加了編碼方案。為了達到125 kbps的資料速率,單個位元用8個符號進行編碼,而為了達到500 kbps的資料速率,單個位元用兩個符號來表示。這種編碼方案使得LE Coded PHY能夠用於長距離應用,在自由空間中的傳輸距離可達1000公尺。
表2.BLE中的不同PHY
|
PHY
|
調變
方案
|
編碼方案
|
資料速率
|
|
存取標頭
|
有效載荷
|
|
LE 1M
|
1 Msymps調變
|
未編碼
|
未編碼
|
1 Mbps
|
|
LE 2M
|
配對請求
|
未編碼
|
未編碼
|
2 Mbps
|
|
LE Coded
|
配對
回應
|
S = 8
|
S = 8
S = 2
S = 2
|
125 kbps
500 kbps
|
實體層之上是鏈路層,後者負責掃描、廣播、創建、維護裝置之間的鏈路或連接。鏈路層還管理資料傳輸的頻率選擇,利用跳頻擴頻來減輕干擾。鏈路層具有不同的狀態:待機、廣播、掃描、發起和已連接(見圖15)。
► 空閒的鏈路層處於待機狀態,既不接收也不發送數據封包。
► 在廣播狀態下,鏈路層(充當廣播者)發送廣播數據封包,同時監聽是否有裝置請求額外資訊。
► 在掃描狀態下,鏈路層(充當掃描者)監聽廣播者,並可能請求其提供額外資訊。
► 在發起狀態下,鏈路層(充當發起者)監聽來自廣播者的數據封包,並透過發起連接來回應這些數據封包。
► 當鏈路層連接到另一個BLE裝置的鏈路層,就處於已連接狀態。
圖15.鏈路層狀態轉換
除了不同的狀態之外,鏈路層還定義了如下事件:廣播事件和連接事件。廣播事件涉及使用廣播通道傳輸數據封包,而連接事件涉及透過資料通道在已連接狀態下傳輸數據封包。
鏈路層還定義了由實體層傳輸的BLE數據封包的格式。數據封包格式可分為兩類:用於編碼PHY的數據封包格式和用於未編碼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、安全數位(SD)和三線UART。每種傳輸層都有自己的規範和要求。本概述著重介紹UART傳輸層。
根據藍牙5.2規範,UART傳輸層支援五類數據封包:指令、事件、非同步無連接(ACL)資料、同步(SCO)資料和等時(ISO)數據。
► 主機使用指令數據封包向控制器發送指令。這些指令指示控制器執行特定的操作或配置。
► 控制器使用事件數據封包將已發生的事件告知主機。事件可以包括連接狀態變化、資料接收或其他相關資訊。
► ACL數據封包用於主機與控制器之間交換資料。其支援傳輸非同步資料,例如來自感測器或使用者輸入的資訊。
► are primarily used in Bluetooth Classic for voice or audio transmission.
► 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月。
Madhur Bhargava,“IoT Projects with Bluetooth Low Energy”,Packt Publishing Limited,2017年。
“Bluetooth Core Specification Version 5.2 Feature Overview”,Bluetooth。
“Core Specification 5.4”,Bluetooth。
Naresh Gupta,“Inside Bluetooth Low Energy”,Artech House,2013年。
“Stack Architecture”,Zephyr Project。
Bluetooth®文字標記和logo是Bluetooth SIG, Inc.的註冊商標,ADI已獲得許可使用此類標記。其他商標和商號均屬各自所有者所有。