4.BLE---廣播信道防沖突與數據信道選擇


1.BLE的鏈路層是如何解決不同BLE節點的沖突問題

1.1 廣播時間的定義

  • 在節點進入advertising state時,它會廣播advertising events,協議中規定每個event的時間為:

T_advEvent = advInterval +advDelay

  • advInterval:是廣播的間隔設置,單位為0.625ms,取值范圍在20ms與10.24s之間。如果事件類型是一個可掃描的非連接事件,或者是一個非連接的非定向事件,它的值不能小於100ms;如果是可連接的非定向事件,它的值可以是20ms或更大。
  • advDelay的值是一個偽隨機值,范圍是0~10ms,它由廣播事件產生。
  • 從上面的公式可以看出,如果advInterval取值較大,將會降低出現沖突的概率,也降低了節點的功耗,但是,同時也會加大連接建立的時延。反之,如果advInterval取值較小,將會增加沖突概率和節點功耗,好處就是降低連接建立時延。
  • 隨機數advDelay可以在一定程度上降低advInterval相同的兩個節點所發送的廣播包的沖突概率

1.2 BLE鏈路層信道選擇的算法流程

一個節點發送完廣播消息之后,如果接收到廣播消息的節點希望建立連接。如何選擇並確定數據信道

(1)首先,Master node在收到Slave node的廣播消息之后,會發送CONNECT_REQPDU,其中,攜帶channel map用於通知slave node哪些信道可以用於數據連接,哪些信道不可以用於數據連接; (詳見本章節 1.3)

(2) 節點根據如下公式首先計算unmappedChannel:

unmappedChannel =(lastUnmappedChannel + hopIncrement) mod 37

其中,如果本次發送的event是數據連接的第一個connection event,上式中的lastUnmappedChannel為0;

hopIncrement的值在CONNECT_REQ PDU中指定,它是一個跳信道間隔值,影響兩次數據傳輸信道的間隔。

當一個連接event結束時,unmappedChannel值被賦予lastUnmappedChannel。

 

 

 本文圖片或內容摘自網絡,本人只是做了總結歸納。如有侵權請聯系我。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM