USB體系包括主機、裝置以及實體連接配接三個部分。
複合裝置(Compound Device)可以占用多個位址。
所謂複合裝置其實就是把多個功能裝置通過内置的USB HUB 組合而成
的裝置。
USB采用輪詢的廣播機制傳輸資料,所有的傳輸都由主機發起。
USB采用令牌包---資料包---握手包的傳輸機制。
令牌包中指定資料包去向或者來源的裝置位址和端點(Endpoint),進而保證了隻有一個
裝置對廣播的資料包/令牌包做出響應。
資料包: USB總線上資料傳輸的最小機關,包括SYNC、資料及EOP三個部分。其中資料的
格式針對不同的包有不同的格式。單都以8位的PID開始。PID制定了資料包的類型(共16種)。
令牌即指PID為IN/OUT/SETUP的包。
#define USBD_VID 1155 0x483
#define USBD_PID_HS 0x5730 22320
端點(Endpoint): 是USB裝置中的可以進行資料收發的最小單元,支援單向或者雙向的資料
傳輸。裝置支援端點的數量是有限制的,除預設端點外低速裝置最多支援2組端點(2個輸入,2個輸出),
高速和全速裝置最多支援15組端點。
管道(Pipe)是主機和裝置端點之間資料傳輸的模型,共有兩種類型的管道:無格式的流管道(Stream Pipe)
和有格式的資訊管道(Message Pipe)。預設的控制管道,USB主機通過該管道來擷取裝置的描述、配置、狀态,
并對裝置進行配置。
USB體系定義了四種類型的傳輸:
控制傳輸:主要用于在裝置連接配接時對裝置進行枚舉以及其他裝置的特定操作。
中斷傳輸:用于對延遲要求嚴格、小量資料的可靠傳輸,如鍵盤、遊戲搖桿等。
批量傳輸:用于對延遲要求寬松,大量資料的可靠傳輸,如U盤等。
同步傳輸:用于對可靠性要求不高的實時資料傳輸,如攝像頭、USB音響等。
注意:中斷傳輸并不意味着傳輸過程中,裝置會先中斷HOST,繼而通知HOST啟動傳輸。
中斷傳輸也是HOST發起的傳輸,采用輪詢的方式詢問裝置是否有資料發送,若有則傳輸資料,
否則NAK主機。
USB裝置通過管道和HOST通信,在預設控制管道上接受并處理以下三種類型的請求:
1、标準請求 一種11個标準請求,所有USB裝置均應支援這些請求。HOST通過标準請求
來識别和配置裝置。
2、類(class)請求:USB還定義了若幹個子類,如HUB類、大容量存儲器類等。不同的類又定義了若幹類請求,
該類裝置應該支援這些類請求。裝置所屬類在裝置描述符中可以得到。
3、廠商請求:這部分請求并不是USB規範定義的,而是裝置生産商為了實作一定的功能而自己定義的請求。
HUB由HUB重發器(HUB Repeater)、轉發器(Transaction Translator)以及HUB控制器
(HUB Controller)三部分組成。
HUB Repeater 是上行PORT和PORT之間的一個協定控制的開關,它負責高速資料包的重生和分發。
HUB控制器負責和HOST的通信,HOST通過HUB類請求和HUB控制器通信,獲得關于HUB本身和下行PORT的HUB描述符,
進行HUB和下行PORT的監控和管理。
轉發器提供了從高速和全速/低速通訊的轉換能力,通過HUB可以在高速HOST和全速/低速
裝置之間進行比對。HUB在硬體上支援Reset、Resume、Suspend。
從邏輯上可以分為功能層、設别層和總線接口層三個層次。
USB系統中資料的傳輸,宏觀的看來是在HOST和USB功能裝置之間進行;宏觀的看是在應用
軟體的Buffer和SUB功能裝置的端點之間進行。一般來說端點都有Buffer,可以認為USB
通訊就是應用軟體Buffer和裝置端點Buffer之間的資料交換,交換的通道稱為管道。
應用軟體通過和裝置之間的資料交換,交換的通道稱為管道。應用軟體通過和裝置之間
的資料交換來完成裝置的控制和資料傳輸。
通常需要多個管道來完成資料交換,因為同一管道隻支援一種類型的資料傳輸。
用在一起來對裝置進行控制的若幹管道稱為裝置的接口,這就是端點、管道和接口的關系。
一個USB裝置可以包括若幹個端點,不同的端點以端點編号和方向區分。不同端點可以支援不同的傳輸類型、通路
間隔以及最大資料包大小。除端點0外,所有的端點隻支援一個方向的資料傳輸。端點0是一個特殊的端點,它支援
雙向的控制傳輸。管道和端點關聯,和關聯的端點有相同的屬性,如支援的傳輸類型、最大包長度、傳輸方向等。
中斷端點的輪詢間隔由在端點描述符中定義,全速端點的輪詢間隔可以是1-255ms,低速
端點為10-255ms,高速端點為