藍芽核心協議棧知識總結

2021-09-10 22:03:25 字數 933 閱讀 4664

最近終於靜下心來總結一下藍芽相關的知識了。從事藍芽開發以來,從剛開始學習就為自己設定了將藍芽核心協議和profile分開來的限制。在後面的開發中,這個限制越來越成為前進的障礙,現在是將它打破的時候了。

追根溯源,藍芽就是一種無線傳輸介質。為了通過這種傳輸介質實現互聯互通,又訂立了core spec和各個profile。由於是乙個整體,所以學習和開發中,就應該首先從整體出發去學習和思考/分析/解決問題。接下來將會從應用的角度,從縱向對整個藍芽系統進行學習與實踐總結。

要使用藍芽通訊,首先要開啟藍芽裝置。開啟藍芽裝置的過程,除去初始化使用者自己設計的一些操控邏輯之外,接下來就是對藍芽的初始化。藍芽系統的各個profile(gap、sdp、rfcomm、hci、l2cap、gatt、smp等)會初始化,藍芽系統的core spec會初始化(baseband、lmp、lc等)。這個時候藍芽profle處於初始化狀態,core spec處於standy 狀態。這個時候沒有物理鏈路存在,沒有邏輯傳輸層的存在,沒有邏輯鏈路存在,l2cap也沒有為各個profile分配資源等等。

要建立藍芽裝置之間的通訊,我們需要在倆個裝置或者多個裝置之間建立微微網,要知道微微網的存在是需要倆個裝置保持在同乙個頻道上,或者多個裝置乙個做主裝置,其他裝置做輻裝置工作在統一個頻道上,,並且每隔312.5us或者625us的間隔來向頻道上傳送資料。由於藍芽有保密和抗干擾等方面的考慮,所以裝置之間的頻道會隨著某個序列和時鐘為基準來共同調頻,始終保持在同乙個頻道上。比方說當使用者需要藍芽裝置之間建立物理鏈路時,需要通過將裝置做inquiry,可能在32個頻點上,都去傳送inquiry的msg。當msg在第乙個頻段傳送完之後,就會跳到下乙個頻道去傳送inquiry的msg。對端藍芽裝置在收到inquiry msg之後,如果被設定inquiry scan的話,就會傳送藍芽位址,時鐘offset等相關資訊給inquiry的裝置。如果比較使用者還需要通過gap去獲取eir data的,那麼inquiry scan裝置將會傳送該資訊包。

藍芽協議棧分層

更詳細的藍芽協議棧可參考文章 深入淺出低功耗藍芽 ble 協議棧 藍芽協議棧的分層,所有 profile 配置檔案層 和應用都建構在gap或gatt之上。在 bluetooth le中有四種裝置型別 central主機 peripheral從機 observer觀察者 broadcaster廣播者。...

nordic 藍芽協議棧

藍芽協議的實現叫做藍芽協議棧 藍芽協議棧有以下內容組成 應用層主協議層 控制層 物理層,主要負責指定ble的無線頻段,調製解調方式和方法等。直接決定了ble晶元的功耗靈敏度。鏈路層 協議棧核心 主要負責選擇射頻通道,如何識別空中資料報,傳送資料的時間控制,資料完整性的保證,ack應答實現,重傳機制實...

藍芽知識總結

藍芽技術作為一種近距離無線連線技術,最初藍芽是點對點技術,傳統的藍芽連線是通過一台裝置到另一台裝置的 配對 實現的,建立 一對一 或 一對多 的微型網路關係 藍芽協議分為兩種,一種是low energy 簡稱le bluetooth low energy ble 低功耗藍芽,更加注重低功耗 一種是b...