藍牙裝置可透過廣播封包(advertising packets, PDUs)來廣播資料,讓其他該裝置是否可以建立連線。
從上圖可以看到,BLE共有40無線電頻道(RF Channel),
其中#37, #38, #39 是主要用來廣播的頻道,
這三個頻道可以避開Wi-Fi的頻道免於互相干擾,
在這通道上除了會看到廣播的封包(Advertisements)之外,
還會看到掃描請求(Scan Request)、掃描回應(Scan Response)和連線請求(Connection Request),
另外剩下的37個頻道則是用於連接時的資料傳輸。
在藍牙5 的規格中,
新增了一種叫做 secondary advertising channels 的廣播類型,
他並非使用原本用來廣播的通道 #37 ~ #39,而是使用 #0 ~ #36,之後遇到再來看。
廣播參數 | 描述 | 範圍 |
---|---|---|
廣播區間(Advertising Interval) | 連續兩個發起廣播事件的時間間隔。 | 20ms to 10.24s |
廣播類型(Advertising Types) | 不同類型的廣播發送不同的PDU。 | 參考 Advertising Packets |
廣播頻道(Advertising Channels) | 傳統的廣播封包在#37~39三個頻道中發送。 | #37~#39的不同組合,可選其中的一到三個 |
上圖解釋了如果我們設定三個廣播頻道都要發送,廣播區間是連續兩次在#37頻道發出廣播的時間間隔。
舉例來說,
假設我們設定廣播區間為100ms(Advertising Interval = 100ms),
並且三個廣播頻道都要發送,
則在這三個廣播頻道中,都可以看到每100ms就有一個廣播封包被發送出來,
只是這三個頻道收到封包的時間會些微的差異,
因為天線只有一隻,必須要輪流對不同的頻道進行發送才行。
另外,文件中有提到因為廣播封包不會超過31Bytes,
所以每個頻道的廣播封包只需要不到10ms的時間就可以發送完畢。
透過加長廣播區間或是減少廣播頻道,都可以減少廣播的次數進而降低電量的消耗,
不過這樣也會降低藍牙裝置間的溝通效率並影響到使用者的體驗,
畢竟天下沒有白吃的午餐,這個取捨就要按照不同的需求來做調整。
參考文章: