Periodic Advertising
周期性廣播(Periodic Advertising)是 Bluetooth 5.0 才引入的,5.0 同時還引入了擴展廣播(Extended Advertising),周期性廣播正是擴展廣播的一個應用。
擴展廣播比傳統(tǒng)廣播(Bluetooth 4.0)的數(shù)據(jù)量多了 8 倍,可傳輸數(shù)據(jù)量由 31 字節(jié)增長到了 255 字節(jié),現(xiàn)在我們來看看為什么可以這樣。
廣播通道
傳統(tǒng)廣播的廣播通道只有 37,38,39 這三個,而擴展廣播使用了兩組廣播通道:
- 主要廣播通道(primary advertising channel)
- 次要廣播通道(secondary advertising channel)
主要廣播通道也使用 37,38,39 這三個在 Bluetooth 4.0 定義的廣播通道,次要廣播通道則使用剩余的 37 個通道。
擴展廣播 PDU
- ADV_EXT_IND - 主要廣播通道,支持不可連接的,定向掃描的事件。
- AUX_ADV_IND - 次要廣播通道上廣播數(shù)據(jù)的第一個片段,不可連接的、定向掃描的。
- AUX_SYNC_IND - 次要廣播通道,用于周期性廣播,以一定間隔發(fā)送不定向的數(shù)據(jù)包。
- AUX_CHAIN_IND - 發(fā)送剩余的數(shù)據(jù)。
傳統(tǒng)廣播事件
Bluetooth 4.0 設備的廣播事件分為兩部分:廣播間隔(advInterval)和廣播延時(advDelay)。
廣播間隔是指兩個相鄰廣播事件的間隔,范圍為 20 ms ~ 10 s 。同時為了避免廣播事件收到干擾和物理通道碰撞的影響,每個廣播事件的末尾處有一個 0 ~ 10 ms 的廣播延時,該延時是一個偽隨機數(shù)。具體流程可以參考下圖:

考慮這樣一個場景:一個觀察者(observer)想要一直監(jiān)聽一個廣播者(broadcaster)的消息,因為每個廣播事件的末尾處加了一個 0 ~ 10 ms 的隨機延時,它就不知道廣播者什么時候開始打廣播,因此就只能把接收窗口開的盡量大,消耗更多的能量去監(jiān)聽。但如果觀察者是一個電源受限的設備,這又該怎么辦呢?是否有一種辦法讓觀察者能夠與廣播者同步,這樣兩者就能夠同時喚醒,廣播者發(fā)送廣播數(shù)據(jù),觀察者接收廣播數(shù)據(jù),這樣能量的消耗就能降到最低,這就是周期性廣播的能力。
周期性廣播

上圖描述了周期性廣播的整體流程。
最開始的灰色區(qū)域內(nèi),廣播設備在主要廣播通道發(fā)送 ADV_EXT_IND 包,手機(掃描設備)開啟掃描窗口監(jiān)聽。ADV_EXT_IND 內(nèi)攜帶了
- AUX_ADV_IND 在次要廣播通道內(nèi)的哪一個通道傳輸
- AUX_ADV_IND 選擇哪一個 PHY,1M PHY, 2M PHY, 或者 1M Coded PHY
- AUX_ADV_IND 什么時候在次要廣播通道上出現(xiàn)
這樣手機就知道在什么時候,什么地點(channel)能夠收到 AUX_ADV_IND 包了。AUX_ADV_IND 又提供了第一個 AUX_SYNC_IND 出現(xiàn)的信息
- AUX_SYNC_IND 出現(xiàn)的時刻(offset time)
- 周期性廣播的間隔
- 周期性廣播生命周期內(nèi)使用的 secondary channel map
- 接入地址(Access Address),等等
有了這些信息,手機就和廣播者同步了,就能夠同時喚醒,廣播者發(fā)送數(shù)據(jù),手機接收數(shù)據(jù)。
- AUX_SYNC_IND 攜帶了周期性廣播的數(shù)據(jù)。
Periodic advertising sync transfer (PAST)
PAST 是 Bluetooth 5.1 引入的,周期性廣播時掃描者與廣播者有一個同步的過程,但是有一些掃描設備不想耗費這些能量去進行同步,想要借助其他已經(jīng)同步的設備來同步廣播者,這就是 PAST 引入的原因。
可以參考下圖理解:

參考: