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