藍牙基礎知識進階——Physical channel

二、物理通道

???物理通道是piconet區分的標準,它是藍牙系統結構層次中的最底層了。

??? Q1:物理通道有哪些類型

??? 物理通道通常可以分為四種類型:

??? 1basicpiconet channel

??? 2adaptedpiconet channel

????? 這兩種channel是兩個已經連接設備之間通信使用的。也就是說他們和特定的微微網之間是相關聯的。

??? 3inquiry scanchannel:用于discovering藍牙設備

??? 4page scanchannel:用于連接藍牙設備。

Basic Piconet Channel

??? Q2Basicpiconet channel是如何工作的

??? 在Basic piconetchannel中,它會把通道分為以625μs為單位的時間長度(slot),使用的是TDD的策略進行傳輸,可以理解為TXRX是時分雙工的。需要注意的是packet的開始和slot的開始需要是對齊的。從目前的packet type來看,最長會占用5time slot。多packetslot傳輸情況見下圖四。


圖四 多slot packet的傳輸示意圖



???? Q3:為什么都是占奇數個slot啊,有偶數個的么?

??? 從目前來看,各種packet type所占的slot只有三種,分別占1,3,5slot,暫未有偶數個的slotpacket出現。另外,需要注意的是mastertx需要在奇數個的slot開始,rx必須在偶數個的slot開始。

??? packet的平均漂移和625μs相比,不能超過20ppm。瞬時的時間和平均時間偏差不能超過1μs

??? Q4:既然有時間的偏差,那么rx的時候是否有對應的機制

??? 是的,在rx的時候,我們是用一個windows來監聽的,而不是說就在625μs那個點去監聽。目前的監聽window的大小是20μs,也就是說允許的誤差是+-10μs,這樣的誤差容忍度還是很高的。圖五是以單packet為例來介紹的正常情況下的TX/RX示意圖。


圖五?masterTX/RX示意圖

??? 同樣的windows也發生在slaverx過程中,不詳細介紹。

????Q5:既然時間的要求如此嚴格,masterslave是如何同步時鐘的

??? 就使用的時鐘而言,master就是使用的它的native的時鐘,而slave則是在它的native時鐘上加上對應的offset得到和master同步的時鐘。這個offset是在inquiry過程中交互得到的。為了防止時鐘的偏移,slave在每次收到masterpacket的時候都需要刷新offset。時鐘的得到方法見下圖六。其中六-a)是master中時鐘的產生,六-b)是slave時鐘的產生。


圖六?masterslave的時鐘產生示意圖

Adapted piconet channel

???Q6: adapted piconetchannel有何特別之處

??? adapted piconetchannel是用于連接支持AFHAdapter Frequency Hopping)的設備時使用的。和Basic相比,他的最大不同之處在于它可能沒有使用全部的79個頻點,但是它使用頻點的數目最小值是20。也就是說若是環境很差,79個頻點只有不到20個頻點是干凈可用的,那么AFH機制將無法運行,也就沒有所謂的自適應調頻了,表現到最終的用戶體驗上你看到的就是音樂的卡頓啊,或者打電話的斷音等等。

Page scan physical channel

???Q7masterslave的角色是在連接過程中才確定的,在page scan這個過程中是否也有masterslvae之分

??? 這個問題是一個看起來很簡單,其實很專業的問題了。一般來說,在masterslave還沒有確定之前,我們稱執行page的那個設備為master,而page scan(也就是等待page)的那個設備為slave。需要注意的是這個masterslave和最終建立連接之后的masterslave并不是對應的,這之間有可能發生role switch等一系列的操作。后面的inqiry scan也是類似的,就不多說了。

???Q8page時所使用的時鐘就是nativeclk

?? 為了更好更快地page到對方,在真正page的時候并沒有使用nativeclk,而是采用了一個預測的clk,希望能夠盡量和slaveclk相接近。這之間有一個offset的偏移,這個偏移一般使用inquiry的信息中的偏移,在Android中只有10分鐘之內的inquiry信息才會被使用,畢竟這個clk也是會變化的,時間過長這種inquiry到的clk offset就沒有什么實際意義了。page過程中使用的clk如下圖七所示。


圖七?page時的clk示意圖

Q9Page scanbasicpiconet channe有什么差別

??? 總得來說,各種機制都是差不多的。一個比較大的差別在于時間上,因為pagepacket很小(也是固定的),所以為了更好地利用時間,他不是625μs才發送一次,而是在625μs中發送了兩次,也就是312.5μs發送一次,這也是藍牙clk最小的時間間隔了。于是從master的角度來看,我們可以看到的內容就如下圖八所示了。


圖八?page scan過程mastertx rx時序圖

??? 如上所說,可以很清晰地看到一個slot中發送了兩個packet。同時在rx的時候也在兩個時間點前后進行了監聽。這樣就可以響應slave在兩個時間點發送的response

??? 這樣的機制對slave而言就會有兩種可能,一種是它在master發送第一個packet的時候slave就收到了,這種情況和625μs發送一次是一樣的,就不再多說了。另外一種情況則是slavemaster發送第二次packet的時候才收到,那么他會在收到之后625μs回應,master收到這個回應之后就不再等待625μs了,而是在下一個slot開始就是回應了。具體看圖九所示。


圖九?slavemaster第二次發送后收到的時序圖

??? 這樣看起來還是比較清晰的,藍色的packet就是真正收到的packet

Inquiry scan physicalchannel

????????? Q10inquiry scanbasic有何差別

??? 其實inquiryscanpage scan比較類似,他也是312.5μs發送一次,比較大的差別在于他的slave的回應比較長,超過了312.5μs,這樣假如它的回應是在第二次就會出現slave占用master to slave slot的情況,如圖中紅色圈圈所示,這是允許的。見下圖十。

圖十?inquiryscan在第二次受到inquiry packet后的時序圖

文章來源:https://blog.csdn.net/u011960402/article/details/17952379