前面,link layer 敘述了一部分,這裡也聊聊做 ble 的大致的方向,以及做乙個這個東西,大致需要哪些元件、工具等。簡單的聊聊我的認識和看法。(見解如有不對,請大神們指正)。
既然是要做 ble,那麼肯定是先需要熟讀 ble spec,從而了解其的基本特性(物理特性和軟體規範),在每個版本的 core spec,都有會描述物理層需要關注的地方和特性。(比如 gfsk 調製等等)因為物理層是直接和硬體相關的,這部分需要硬體的哥們來實現(數字和模擬)。了解和使用現目前主流的 ble 晶元,也是乙個很快可以熟悉起來的過程,比如 nordic 的,dialog 的,it 的,等等。
目前的 ble 不僅僅是乙個只含有 ble 功能的晶元,晶元匯流排上還掛接了很多其他的外設,用於客戶直接使用單晶元做系統產品方案,現在流行的做法是搞一顆 cortex-m 系列(m0,m4)的核心,外設匯流排掛比較常用的外設 ip(uart/spi/qspi/iic/iis/usb/wdt/timer等等),設計者很可能啟動乙個 timer,用 spi 去採 sensor 的資料,在通過 ble 傳輸,這樣的業務(手環採集心率,傳輸結果),所以一顆晶元,功能和外設得做足功夫。所以呢 ble 只是作為乙個大 ip,掛接到系統匯流排上。
ble 硬體部分,不僅僅包含數字部分(baseband),還含有模擬部分(rf),這部分比較棘手,因為模擬部分國內的積累相比老外稍微薄一些。除錯 rf 還是很有挑戰。
當然,首先需要考慮的是搞一顆處理器核心,看到有的廠商用 32-bits 的 arm-cortex-m 系列的 core
對於 ble ip 來說,可做,可買。強大的廠商,能夠有實力自己做。如果積累不多的話,想快,直接買大廠的 ip拿來做整合(比較出名的有 ceva)。
外設 ip,也是可做可買。自己拿捏。
類似於:
之所以把 ble 的 ip 繪製的如此之大,是因為其內容比較多,而且比較醒目(ble 晶元解決方案)。
綠色部分放大來看,根據 ble spec 中的一些的描述可以知道其內部可能會有有幾個部分(yy 的):
具體的硬體 ic 設計,可能需要和軟體一起溝通,並確定系統方案,這裡也只是根據 core spec 來 yy 的。
因為硬體做很多東西,速度更快,精度更高,所以,能硬體做的,那固然最好。
硬體部分主要分為了:
baseband 基帶在接收資料的時候:他們之間的關係是 rf-> modem -> baseband;modem:調製解調
rf:無線收發器
反之,在傳送資料的時候:他們之間的關係是 baseband -> modem -> rf 。
基帶拿到的資料就是純數字部分的邏輯。軟體主要就和硬體的數字基帶 bb 進行互動(和其他 ip 一樣,軟硬體通過配置,讀寫暫存器來控制硬體,硬體通過中斷來通知軟體)。
當然除了 ble 的硬體部分,系統級的,還需要關心用多大的 flash,系統的執行狀態等等。
軟體部分,主要分為兩 controller 和 host,contoller 部分需要和 ic 溝通看看如何進行硬體訪問,以及訪問的時序。host 與 controller 之間的互動,需要雙方協商。
當然,除了純協議棧的開發以外,軟體部分的工作還會包含架構設計,訊息機制,是否需要 os,如何管理記憶體以及儲存空間等等。
這裡需要確認很多因素,比如使用什麼樣的編譯器(gcc/armcc)來構建**,如何搭建環境來測試。以及如何進行覆蓋測試。在除錯初期,肯定是 ic 部分**這些,到了與 controller 與 ic 互動的過程,那麼為了驗證各個方面的內容,需要購買抓包器(ellisys 或者 frontline 的都行),抓取空口包,按照實際的 spec 進行 timing 等等各方面的開發,除錯,分析。因為 ble 是乙個實時系統,那麼串列埠列印除錯的方式並不是最好的方式,那麼還需要設計一些其他的除錯方式。
在測試過程中,首當其衝的就是進行 rf phy 的測試,這個是所有業務的基石,如果 rf 收發都不對,那啥都不用玩了。rf 又主要分為 rx、tx 兩個方面,工程上有相關的指標,對 rf 的效能進行卡控。當然也有儀器專門搞著事兒 (比如 tlf3000)。
接下來進行,dtm 測試(direction test mode),也就是直接收發包的測試,對每乙個通道進行收發包的測試。以確保每個通道都 ok。
做了乙個 ble 晶元,那怎麼才能說他是乙個 ble 呢?當然是有標準的,藍芽組織有乙個認證標準,bqb 測試,他會覆蓋所有的 spec 中描述到的場景,如果測過了這個 bqb 認證測試,那麼就可以說你是乙個 ble 啦(蓋上 ble 那藍色的勳章)。類似與 google android 的 cts 相容性測試。當然,這種認證測試也是機器來測(比如 harmony),具體的認知測試的項,針對 controller 來說,可以參看 llts 相關文件,文件中描述了測試步驟,以及通過的條件。
一般的,測試的方式是,乙個 pc 機,一端接儀器,另一端接待測裝置,pc 機上執行相關配套測試用例,pc 機指揮兩邊的 ble device 通過 hci 進行發起 ble 業務,因為 pc 機知道要測哪些 case,以及這些 case 需要得到乙個什麼樣的測試結果,同時配合乙個 sniffer 抓包器,pc 機完整的監聽了雙方的空**互,資料/指令下發,指令/資料上報等等過程,所以這樣就能夠判斷是否左邊的 ble 符合標準協議:
當然,你本地通過後,還得去專門的機構進行認證。
ble 雖然是 le 的,但是真正做到 le ,是乙個系統級的工程,不光光是從 spec 和 rf 方面入手,因為是單晶元的解決方案,他涉及到的內容當然是整個系統級別的,那麼針對這部分,可能還會涉及到主控 mcu 的低功耗設計,外設的低功耗設計,等等。所以這也是需要進行系統設計的關鍵部分。
BLE按鍵整理
1 定義id static uint8 bletest taskid 2 初始化的時候給id賦值 bletest taskid task id 3 註冊按鍵的任務 registerforkeys bletest taskid 4 啟動初始化任務,基本沒個工程都是如此,也就是初始化函式初始化後執行的事...
BLE開發入門
摘要 介紹ble入門知識 藍芽低能耗 ble 技術是低成本 短距離 可互操作的魯棒性無線技術,工作在免許可的2.4ghz ism射頻頻段。它從一開始就設計為超低功耗 ulp 無線技術。它利用許多智慧型手段最大限度地降低功耗。魯棒是robust的音譯,也就是健壯和強壯的意思。它是在異常和危險情況下系統...
Ble裝置通訊
1.profile profile可以理解為一種規範,乙個標準的同通訊協議,它存在於手機中。藍芽組織規定了一些標準的profile,例如hid over gatt,防丟器,心率計等。每個profile中會包含多個service,每個service代表從機的一種能力 2.service service...