Bluetooth Controller BB Phsical Channel相關基礎知識整理

       最近需要做一些BT Controller相關的新功能開發,於是將Controller的Phsical Channel的知識點重新複習一遍,爲了檢討已經忘卻或者現在或者將來的忘卻,做個忘卻的紀念。

        Phsical Channel 是爲了描述Baseband層的連接而抽象的概念,那什麼纔可以叫做Phsical Channel 的連接呢?首先有三個基本要素,調頻序列、packet的timing和access code。當倆個藍牙RF處於同一個頻點上的時候,並以能夠調整到相同的相位,可以進行packet的傳輸,並且約定好以相同的跳頻序列進行跳頻,那麼我們認爲Phsical Channel就算建立起來。那這個連接和前面提示的三個要素有什麼關係呢?

       首先我們來介紹跳頻序列,它由BT Address的UAP和LAP來決定,而跳頻序列的相位由BT 設備的CLK來決定,約定好了BT設備之間的通訊頻點以及相關的調頻序列和調頻序列的相位,那就可以在設備之間進行通信。而Hopping是由BT Address是由Mater的BT Address來決定的。

       其次,如何保持在同一相位呢?在建立Phsical Channel的時候,會交互設備之間的CLOCK,這裏的Master有自己的CLKR、CLKN和CLK以及CLK Offset。Slave設備也有自己的CLKR、CLKN和CLK以及CLK offset。CLKR是每一個BT設備的系統時鐘,系統時鐘需要轉換爲CLKN,對於Master來說,CLKN和CLK是等價的。那Master有一個自己的CLK,需要Slave要和Mater保持在同一個CLK,這樣纔會保持調頻序列有同一個相位。那Slave也有自己的CLKR,也會加上一個offset產生一個CLKN,CLKN會加上一個預估的offset在和Master交互的過程中通過修正這個offset,最後Slave的CLK和Master的CLK一樣。那packet的timing是如何定義的呢?BT的出阿叔由一個一個的Slot來組成,所以有time slot,是說將phsical channel分成2的27次方個等長的時間片。每一個時間片長度爲625us,所有的packet都要在某一個或者某三個或者某五個slot上傳遞,Master TX的時候,以偶數的slot數開始,slave TX的時候,以奇數開始。每當在雙方設備選擇某一個頻點的時候,master都會分配相應數量的slot在該頻點上來進行packet 的傳輸,而下一個slot可能已經對應一個未來的跳頻點。傳輸的時候,接受方會在每個slot的開始的前10us或者結束後的10us內去查找Access code,那接下來將複習Access code。

       再次,Access Code是未來避免同頻點上不同設備之間的干擾,每次傳輸都必須要給一個識別編碼。所以某種程度上,access code就是Phsical Channel就是的識別碼。它由Master BT Address來生成,在pinconet中,一個Master在傳輸的時候都會以Access code開始(Inquiry access code和page access code不一樣,後面將會描述,不要混淆)。同一個channel上有不同的slave,那怎麼能夠保證Master和某一個Slave的消息發送不被其它slave正確接收呢,有一個LT-ADDR的虛地址,每一個Slave都會在Master中分配一個這樣的地址。這樣就能完美的識別並將packet正確送到不同的設備中。前面講過的Inquiry和page過程中使用的access code,Inquiry使用的是IAC,由BT Address default的LAP生成(又分爲GIAC和DIAC,GIAC需要一個bit的LAP;DIAC需要LAP default的63bit生成),而page設備是使用的LAP的生成。

       最後,就是一些Inquiry、page以及base channel的一個一問一答的時序以及相關的packet的傳輸,贊不做懷念了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章