天天看點

《低功耗藍牙開發權威指南》——3.1節控制器

本節書摘來自華章社群《低功耗藍牙開發權威指南》一書中的第3章,第3.1節控制器,作者 (英)robin heydon,更多章節内容可以通路雲栖社群“華章社群”公衆号檢視

3.1 控制器

控制器被很多人視為區分藍牙晶片或無線電的特征之一。然而,把控制器叫做無線電就有些過分簡單化了。藍牙控制器由同時包含了數字和模拟部分射頻器件和負責收發資料包的硬體組成。控制器與外界通過天線相連,與主機通過主機控制接口(hci)相連。

3.1.1 實體層

實體層是采用2.4ghz無線電、完成艱巨的傳輸和接收工作的部分。對很多人而言,該層仿佛籠罩着一層神秘色彩。但本質上來講,實體層其實并沒有什麼魔法,隻不過是簡單的傳輸和接收電磁輻射而已。無線電波通常可以在給定的某個頻段内通過改變幅度、頻率或相位攜帶資訊。在低功耗藍牙中,采用一種稱為高斯頻移鍵控(gfsk)的調制方式改變無線電波的頻率,傳輸0或1的資訊。

頻移鍵控部分是指把1和0通過輕微升高或者降低信号頻率進行編碼。如果頻率在改變的一瞬間突然從一端移向另一端,将會在更寬的頻段上出現一個能量脈沖。是以用一個濾波器來阻止能量擴散到更高或更低的頻率處。在gfsk的情況下,采用的濾波器的波形與高斯曲線一緻。用于低功耗藍牙的濾波器不像用于經典藍牙的濾波器那樣嚴格,這意味着低功耗無線電信号比經典藍牙無線電信号要稍微分散一點。

适當拓寬無線電信号的好處在于無線電将遵循擴頻(spread-spectrum)的限制,而經典藍牙無線電則受跳頻的限制。傳輸時,擴頻無線電要比跳頻無線電使用的頻率更少。如果沒有更寬松的濾波器波形,低功耗藍牙将不能隻在三個信道上廣播,而不得不使用更多的信道,進而導緻系統的能耗升高(如上一章所述)。

無線電信号的适度拓寬稱為調制指數。調制指數表示圍繞信道的中心頻率的上下頻率之間的寬度。傳輸無線電信号時,從中心頻率出發超過185khz的正向偏移代表值為1的比特;超過185khz的負向偏移代表值為0的比特。

為使實體層能夠工作,尤其是應對同一區域有大量無線電同時傳輸的情形,2.4ghz頻段被劃分為40個rf信道,各信道的寬度為2mhz。實體層每微秒傳輸1比特應用資料。例如要發送80比特的以utf-8格式編碼的字元串“low energy”将花費80μs,當然這裡沒有考慮資料報頭的開銷。

3.1.2 直接測試模式

直接測試模式是一種測試實體層的新方法。絕大部分的無線标準并未提供對實體層執行标準測試的統一方法。這就導緻不同的公司采用專門的辦法來測試實體層。這樣一來,整個産業的成本增加,對終端産品制造商來說,從一家晶片供應商快速換到另一家的門檻也很高。

直接測試模式允許測試者讓控制器的實體層發送一系列測試資料包或接收一系列資料包。測試者随後可以分析收到的資料包,或根據接收的資料包數量判斷實體層是否遵循rf規範。直接測試模式不僅能量化測試,還能用于執行線性測試和校準無線電。比如,通過快速指令實體層在指定的無線電頻率發送信号,并測量實際收到的信号頻率,可以調節無線電直至正常工作。由于這類校準通常需要為每個單元執行,因而擁有一台能夠高效地完成測試的裝置将為産品制造商節約大量成本。

3.1.3 鍊路層

鍊路層是低功耗藍牙體系裡最複雜的部分。它負責廣播、掃描、建立和維護連接配接,以及確定資料包按照正确的方式組織、正确地計算校驗值以及加密序列等。為了實作上述功能,定義下列三個基本概念:信道、封包和過程。

鍊路層信道分為兩種:廣播信道和資料信道。未建立連接配接的裝置使用廣播信道發送資料。廣播信道共有三個—再次說明,這一數字是在低功耗和魯棒性之間折中的産物。裝置利用該信道進行廣播,通告自身為可連接配接或可發現的,并且執行掃描或發起連接配接。在連接配接建立後,裝置利用資料信道來傳輸資料。資料信道共有37個,由一個自适應跳頻引擎控制以實作魯棒性。在資料信道中,允許一端向另一端發送資料、确認,并在需要時重傳,此外還能為每個資料包進行加密和認證。

在任意信道上發送的資料(包括廣播信道和資料信道)均為小資料包。資料包封裝了發送者給接收者的少量資料,以及用來保障資料正确性的校驗和。無論在廣播信道還是資料信道,基本的資料包格式均相同,每個資料包含有最少80比特的位址、報頭和校驗資訊。圖3-2顯示了鍊路層資料包的大緻結構。

《低功耗藍牙開發權威指南》——3.1節控制器

8比特前導優化資料包的魯棒性,這一長度足夠接收者同步比特計時和設定自動增益控制;32比特接入碼在廣播信道資料包中是固定值,而在資料信道資料包中是完全随機的私有值;8比特報頭字段描述資料包的内容;另一個8比特長度的字段描述載荷的長度,由于不允許發送有效載荷長度超過37位元組的資料包,不是所有的比特都用來記錄長度;緊接着是變長有效載荷字段,攜帶來自應用或主機裝置的有用資訊;最後是24比特的循環備援校驗(crc)值,確定接收的封包沒有錯誤比特。

可以發送的最短封包是空封包,時長為80μs;而滿載時的最長封包時長為376μs。大部分廣播封包隻有128μs,而大部分資料封包時長為144μs。

3.1.4 主機/控制器接口

對于許多裝置,主機/控制器接口(hci)的出現為主機提供了一個與控制器通信的标準接口。這種結構上的分割在經典藍牙裡十分盛行,有60%以上的藍牙控制器都使用hci接口。它允許主機将指令和資料發送到控制器,并且允許控制器将事件和資料發送到主機。主機/控制器接口實際上由兩個獨立的部分組成:邏輯接口和實體接口。

邏輯接口定義了指令和事件及其相關的行為。邏輯接口可以傳遞給任何實體傳輸(physical transport),或者通過位于控制器上的本地應用程式程式設計接口(api)傳遞給控制器,後者可以包含嵌入式主機協定棧。

實體接口定義了指令、事件和資料如何通過不同的連接配接技術來傳輸。已定義的實體接口包括usb、sdio和兩個uart的變種。對大部分控制器而言,它們隻支援一個或兩個接口。考慮到實作一個usb接口需要大量的硬體,而且不屬于低功耗的接口,是以它通常不會出現在低功耗藍牙的單模控制器上。

因為主機控制器接口存在于控制器和主機之内,位于控制器中的部分通常稱為主機控制器接口的下層部分;位于主機中的部分通常稱為主機控制器接口的上層部分。

繼續閱讀