藍牙核心-鏈路管理相關概念

藍牙核心系統結構(CORESYSTEM ARCHITECTURE):
黑色的爲用戶數據通路,灰色的爲命令/事件通道。
上圖爲藍牙的核心模塊,每個核心模塊都有相關聯的通信協議。 BR/EDR Controller由鏈路管理,鏈路控制器和BR/EDR無線模塊構成。AMP Controller由AMP PAL,AMP MAC和AMP PHY構成。LE Controller由鏈路管理,鏈路控制器和LE無線模塊構成。上圖可以看出host和controller進行信息交互需通過特定的通道。SCO(SCO,eSCO),ACL用來傳輸用戶數據,稱之爲U-plane。SCO與eSCO用來傳輸時間敏感的數據,比如音頻數據,而eSCO支持重傳機制,ACL不支持重傳機制。C/E用來傳輸命令和事件,稱之爲C-plane。

核心傳輸承載( CORE TRAFFIC BEARERS):


藍牙核心系統爲服務協議和應用數據的傳輸提供了很多的傳輸載體,如上圖所示:
藍牙傳輸實體結構(TRANSPORT ARCHITECTURE ENTITIES)如下圖所示:


PhysicalChannel:
藍牙系統結構的最底層。每個通道由以下幾方面組成,一是僞隨機序列頻率,二是特定的傳輸時隙,三是訪問代碼(accesscode)和編碼包頭。ER/EDR系統總共定義瞭如下種物理通道分別是:
1.     basic piconetchannel:
2.     adapted piconetchannel:
1和2 這兩種channel是兩個已經連接設備之間通信使用的,是和特定的微微網聯繫在一起的。
3.     inquiry scan channel:搜索周邊的設備通道
4.     the page scanchannel:連接藍牙設備通道
5.     synchronizationscan physical channel:獲取或者恢復微微網時間和時鐘信息通道。

Physical links:
物理鏈接代表了藍牙設備的基帶鏈接。每個物理鏈接總是和一個物理通道綁定,但是一個物理通道可以支持多個物理鏈接。在藍牙系統裏,物理鏈接是一個虛擬的概念,沒有一種傳輸結構直接和其對應。
經典藍牙(BR/EDR)數據包access code域,以及時鐘和host藍牙地址確定藍牙的物理通道。在低功耗藍牙(LE) 數據包access code域,hop index, andchannel map確定藍牙物理通道。
在經典藍牙和低功耗藍牙模式數據包中,沒有用來確定物理鏈接的部分。但是物理鏈接能否被邏輯傳輸層確定,一種邏輯傳輸必然對應且只對應一種邏輯鏈接!

LOGICALTRANSPORTS:

在藍牙主從設備之間,可能需要建立不同的邏輯傳輸。系統中總共定義了多種不同的邏輯傳輸:
• Synchronous Connection-Oriented (SCO) logical transport
• Extended Synchronous Connection-Oriented (eSCO) logicaltransport
在微微網中,SCO 和eSCO 是主設備對從設備的點對點的邏輯傳輸。同步邏輯傳輸用在對時間要求比較嚴格的場景中,比如音頻和同步數據的傳輸。主設備通過保留的時隙維護邏輯傳輸中的同步。在eSCO邏輯傳輸中會利用保留的時隙構成一個重傳窗口,eSCO有重傳機制!
• Asynchronous Connection-Oriented (ACL) logical transport
ACL也主設備與從設備的點對點邏輯傳輸。主機沒有保留同步時隙,主機能夠在每個時隙上跟從設備建立ACL邏輯傳輸,包括已經建立同步傳輸的從設備。
• Active Slave Broadcast (ASB) logical transport
主設備和激活從設備的傳輸通道
• Parked Slave Broadcast (PSB) logical transport
主設備和休眠從設備的傳輸通道
• Connectionless Slave Broadcast (CSB) logical transport
主設備傳輸特性廣播(profile broadcast)數據通道

LOGICALLINKS:
系統共定義了多種種邏輯鏈接分別是:
• Link Control (LC)
用來鏈路控制
• ACL Control (ACL-C)
用來鏈路管理
• User Asynchronous/Isochronous (ACL-U)
異步傳輸用戶數據(asynchronous orisochronous user information)
• User Synchronous (SCO-S)
• User Extended Synchronous (eSCO-S)
同步傳輸用戶數據
• Profile Broadcast Data (PBD)
傳輸特性廣播數據(carry profile broadcastdata)
總體來說分C域和U域,C域用來發送命令,配置,和傳輸事件。U域用來傳輸用戶數據。

邏輯鏈接和邏輯傳輸(Logical Links and Logical Transports):
爲了支持不同的應用數據傳輸,所以才定義了各種邏輯鏈接!每一種邏輯鏈接都會有對應的邏輯傳輸。邏輯傳輸具有流控制,確認/重傳機制,編號序列和調度特性。
藍牙數據包格式:
1.經典藍牙數據包格式(BR/EDR Generic Packet Structure):


上圖爲經典藍牙包結構,可以發現包結構能很好的反映上面圖示的承載結構!
Access Code:被用來確定在一個特定的物理通道,排除和忽略附近其他設備的相同載波不同的物理通道的數據。
從上圖也可以看出沒有physical link相關的域,但實際上physical link是隱含的,他是可以被Access Code和在logical transport
 identifier域確定的。
Packet Head:每個包頭都會攜帶LT_ADDR(3bits)確認數據包是否是微微網內被編址設備的,0地址用來廣播,所以微微網只能有七個編址的從設備。


2.低功耗藍牙包格式(LE Generic Packet Structure):

邏輯通路內部的傳輸機制:

我們從TX(發送)和RX(接收)兩個方面來分析這個問題。對於TX而言,master端若是異步,則對每一個slave都有一個tx buffer。若是同步,則可能會有一個或多個buffer,這取決於SCO和eSCO是否使用同樣的buffer。每個buffer都有兩個FIFO,一個是current一個是next,兩者並不是絕對的,而是交替變換的,如下圖:

對於異步傳輸而言,tx會把數據準備到nextdata FIFO。而packet composer總是從current data FIFO中去取packet,他們是不能同時在指向同一個FIFO的。在發送完了packet之後,收到了對方的ACK,就會進行S1的切換,也就是說S1a指向current data
 FIFO,而S2a則同時指向next data FIFO,進而完成數據的傳輸,若是沒有收到pacekt ACK,則S1的切換不會進行,他們繼續指向之前的FIFO,也就有了數據的重傳。對於重傳的packet就是有時效性的,若是一段時間還是沒有重傳出去,則會被flush命令刷掉。這裏強調一下,異步傳輸是packet爲指向進行切換的。
對於SCO/eSCO而言,數據的準備和傳輸和異步是類似的,不同之處在於S2的切換不是packet爲指向的,而是一段時間的interval爲指向進行的,他有一個T值,這個T值是兩邊協商出來的,沒隔這個T值就進行S2的切換。對於data和voice混合的packet,因爲切換機制的不同,則有可能會出現voice已經更新了,而data還在重傳的現象。這一點要注意。
對於RX而言,機制是比較類似的。他的切換示意圖見下圖:

和TX一個不同點在於,在異步傳輸中,對所有的slave而言,master這端可能只有一個共同的rx buffer。而同步傳輸,不同的邏輯鏈路就是通過不同的buffer來進行區分的。從圖中可以明顯地看出RX buffer和TX buffer是類似的,就不多做解釋。在異步傳輸中,若是RX buffer還沒有讀空就有新的packet來了,則會產生一個stop到下一個tx
 packet的頭中,這樣對端就會暫停發送,當rx buffer空了之後,這個stop就會在tx packet的頭中移除掉,從而可以繼續。

由於藍牙網絡結構的限制,一個master在同一個物理通道上是可以對應多個slave的。在邏輯層,是通過一個稱之爲“邏輯傳輸地址”(LT_ADDR)來進行區分各個slave的。它的長度是3個bit,全0是用來廣播的。因爲是用來區分slave的,所以只有slave纔有這個地址,master是沒有的。需要注意的是這個地址只有在slave活躍的時候纔有效,當他斷開或者parked的時候,這個地址就立即沒有了哦。他產生於連接的建立或者role
 switch的過程中,因爲unpark並不會重新建立連接,所以它還必須在unpark的包中包含。

對於SCO而言,是不會進行重傳的。所以對於只支持sco的耳機來說,我們可能會發現在較遠距離的通話過程中就會產生雜音,這是無法避免的,這也是esco存在的原因所在,esco是支持重傳的。
SCO中對master而言,同時存在的鏈路最大數目爲3條。而對slave而言,對同樣的master可以有最多3條鏈路存在,對不同的master則最多隻有2條鏈路存在。
對異步的ACL而言,重傳一般是在packet層次。master和slave之間只能有一條鏈路存在。
---------------------
作者:Jalon007
來源:CSDN
原文:https://blog.csdn.net/u010657219/article/details/42101461
版權聲明:本文爲博主原創文章,轉載請附上博文鏈接!

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