USB 系統拓撲結構
1、系統拓撲結構(最多127個設備)
一個 USB HOST 最多可以同時支持 128 個地址,地址 0 作為默認地址,只在設備枚舉期間臨時用,而不能被分配給任何一個設備,因此一個 USB HOST 最多可以同時支持 127 個地址,如果一個設備只占用一個地址,那么可最多支持 127 個 USB 設備。在實際的 USB 體系中,如果要連接 127 個USB設備,必須要使用 USB HUB,而 USB HUB 也是需要占用地址的,所以實際可支持的 USB 功能設備的數量將小于 127。
2、USB主控制器負責處理主機與設備之間的電氣和協議層的互聯。
常見的USB控制的類型:
UHCI:大多是Intel和Via主板上的USB控制器芯片。都是USB1.1規格。
UHCI:大多是Intel和Via主板上的USB控制器芯片。都是USB1.1規格。
EHCI:是由Intel等幾個廠商研發,兼容OHCI\UHCI,遵循USB2.0規范,同時兼容USB1.1。
3、每個USB Host控制器都會自帶一個USB HUB,被稱為根(Root)HUB。這個Hub可以接子HUB, 每子HUB上可以掛載多個USB設備。當USB設備拔插HUB,會發出電氣信號(HUB內部D+\D-引腳1.5K下拉,設備為1.5K上拉,接入之后HUB內部D+\D-被拉高從而通知USB控制器) USB設備邏輯結構 1、在USB設備的邏輯組織中,包含設備、配置、接口和端點4個層次。設備通常會有一個或多個配置,配置通常有一個或多個接口,接口或零或多個端點。 2、配置、接口、端點。
配置:體現出來是一種功能的集合。不同的配置市設備表現出不同的功能組合。在探測、連接期間需從其中選定一個。
接口:體現出來就是一種功能。而配置由多個接口(功能)組成,接口由多個端點組成,代表一個基本的功能。是USB設備驅動程序控制的對象。一個功能復雜的USB設備可以具有多個接口,而接口是端點的匯集。
端點:基本的通信單位,除了端點0之外是雙向通訊,其它都是單向通信。可以理解為數據緩沖區。是USB設備中唯一可尋址的部分。它是位于USB設備或主機上的一個數據緩沖區,用來存放和發送USB的各種數據。主機和設備的通信最終作用于設備上的各個端點,它是主機和設備間通信流的一個邏輯終端。 3、地址、端點號 每個USB設備有一個唯一的地址、這個地址是在設備連上主機時,由主機分配給USB設備(整個主機范圍,對應具體的USB設備,會寫入USB設備)。而設備中的每個端點在設備內部有唯一的端點號,這個端點號是在設計設備時固定的(整個設備范圍,對應具體端口)。 每個端點都是一個簡單的連接點,支持數據流進或流出設備,兩者不可兼得,即單向通信。 4、基于Pnp機制,設備被枚舉時,它必須告訴主機此設備有幾個端點,每個端點的特性,包括端口號、通信方向、端點支持的最大包大小(又稱數據有效負載)、數據帶寬要求等。每個設備必須有端點0,用于設備枚舉和對設備進行一些基本的控制功能,即主機一開始與USB設備通訊時都會直接訪問端點0(約定),其余的端點在設備配置(通過端點0)之前無法與主機通信(因為主機不知道端點的特性),只有通過端點0將這些端點特性告訴主機之后,主機才知道如何使用這些端點,這些端點才算被激活使用。 USB描述符 1、當我們把USB設備(如USB鼠標)接入到我們PC時,PC能夠自動識別出我們的USB設備類型。這是因為USB主機檢測到USB設備接入之后會主動通過USB設備的端點0取獲取一組固定格式的數據,該數據包含了USB的類型、生產廠商等信息。這組固定格式的數據就稱之為USB描述符。
2、標準的USB設備有5種USB設備描述符 a)設備描述符: 一個USB設備只能有一個設備描述符,但可包含多個配置描述符。 長度為18個字節。Table 9-8(262(290/650)頁)。 b)配置描述符: 描述此設備都有哪些功能集合。一個配置描述符可以包含多個接口描述符。 長度為8個字節。Table 9-10(265 (293 / 650) 頁)。 c)接口描述符: 描述一個具體的功能,該功能需要與主機通訊都要使用端點。 長度為8個字節。Table 9-12(268 (296 / 650) 頁)。 d)端點描述符: 一個接口描述符使用了多少個端點就有多少個端點描述符。 長度為7個字節。 Table 9-13(269 (297 / 650) 頁)。 e)字符串描述符: 用于設備、配置、接口描述符需要加入字符串信息(如廠家名稱)的時候,可以使用此描述符,設備、配置、接口通過索引的方式找到指定的字符串描述符。 參考:Universal+Serial+Bus+Specification+v2[1].0((USB+2.0).pdf
USB設備枚舉 1、USB設備在正常工作以前,第一件事要做的事就是枚舉。枚舉是讓HOST認得這個USB設備,并且為該設備準備好資源,如分配好地址、得到該設備所有端點特性。建立好主機和設備之間的數據傳遞機制。 2、USB標準的8個枚舉步驟 a)獲取設備描述符 b)復位 c)設置地址 d)再次獲取設備描述符 e)獲取配置描述符 f)獲取接口、端點描述符 g)獲取字符串描述符 h)選擇設備配置 3、獲取設備描述符的數據包分析
 
第一個事務->請求包: Packet1:Host發送一個SETUP命令,表示即將發送請求包 Packet2:Host發送了一個請求包,請求設備將其設備描述符發送過來 Packet3:Device 回送一個ACK 響應包,表示已經收到請求。 第二事務->拿到設備描述符-描述信息 Packet1:Host發送獲取數據的命令給 Devices。 Packet2:Devices 發送數據給 Host Packet3:Host 返回一個ACK表示Host收到的數據。 4、USB鼠標的整個枚舉和通信的流程 鼠標是通過中斷傳輸方式:(這里的中斷并不是指硬件中斷,只是一種USB的傳輸方式) 鼠標是通過中斷傳輸方式:(這里的中斷并不是指硬件中斷,只是一種USB的傳輸方式)
|