別人總結的一個usb傳輸模式,保存一下
按照USB協議棧層次划分:
一個Host可以有多個Device
一個Device可以有多個Interface
一個Interface可以有多個Endpoint
端點(Endpoint):
端點位於USB 外設內部,所有通信數據的來源或目的都基於這些端點,是一個可尋址的FIFO。
每個USB 外設有一個唯一的地址,可能包含最多十六個端點。主機通過發出器件地址和每次數據傳輸的端點號,向一個具體端點(FIFO)發送數據。
每個端點的地址為0 到15,一個端點地址對應一個方向。所以,端點2-IN 與端點2-OUT 完全不同。 每個器件有一個默認的雙向控制端點0,因此不存在端點0-IN 和端點0-OUT,意思是說端點0是專門用來傳送配置與控制信息的。
USB四種傳輸模式
控制傳輸、批量傳輸、中斷傳輸、同步傳輸
USB 有上述四種傳輸類型。枚舉期間外設告訴主機每個端點支持哪種傳輸類型。
USB設備驅動向USB控制器驅動請求的每次傳輸被稱為一個事務(Transaction),
事務有四種類型:Bulk Transaction、Control Transaction、Interrupt Transaction和Isochronous Transaction。
數據包包含部分:
每次事務都會分解成若干個數據包在USB總線上傳輸。每次傳輸必須歷經兩個或三個部分,第一部分——USB控制器向USB設備發出命令,
第二部分——USB控制器和USB設備之間傳遞讀寫請求,其方向主要看第一部分的命令是讀還是寫,第二部分有時候可以沒有。
第三部分——握手信號。
批量(Bulk)傳輸事務
作用:主要應用在數據大量數據傳輸和接受數據上同時又沒有帶寬和間隔時間要求的情況下;
特點:要求保證傳輸。打印機和掃描儀屬於這種類型這種類型的設備
適合於傳輸非常慢和大量被延遲的傳輸,可以等到所有其它類型的數據的傳輸完成之后再傳輸和接收數據。
批量數據傳輸分三個階段:
第一部分——令牌階段。
Host端發出一個Bulk的令牌請求。
如果令牌是IN請求 ,則是從Device到Host的請求;
如果令牌是OUT請求,則是從Host到Device端的請求。
第二部分——傳送數據的階段。
根據先前請求的令牌的類型,數據傳輸有可能是IN方向,也有可能是OUT方向。傳輸數據的時候用DATA0和DATA1令牌攜帶着數據交替傳送。
數據傳輸格式DATA1和DATA0,這兩個是重復數據,確保在1數據丟失時0可以補上,不至於數據丟失。
第三部分——握手階段。
如果數據是IN 方向,握手信號應該是Host端發出;
如果數據是OUT方向,握手信號應該是Device端發出。
握手信號可以為ACK, 表示正常響應,
NAK, 表示沒有正確傳送。
STALL,表示出現主機不可預知的錯誤。
如圖所示。
圖Bulk傳輸
圖 Bulk傳輸時的令牌
控制(Control)傳輸
作用:USB系統軟件用來主要進行查詢配置和給USB設備發送通用的命令;
特點:控制傳輸是雙向傳輸,數據量通常較小;數據傳送是無損性的。
數據寬度:控制傳輸方式可以包括8、16、32和64字節的數據,這依賴於設備和傳輸速度。
控制傳輸典型地用在主計算機和USB外設之間的端點0(EP0)之間的傳輸
控制傳輸也分為三個階段,即令牌階段、數據傳送階段、握手階段,如下圖所示。
圖 控制傳輸事務
中斷(Interrupt)傳輸事務
作用:主要用於定時查詢設備是否有中斷數據要傳輸;
特點:設備的端點模式器的結構決定了它的查詢頻率從1到255ms之間。
典型的應用在少量的分散的不可預測數據的傳輸鍵盤操縱桿和鼠標就屬於這一類型
(數據量很小)
中斷方式傳輸是單向的並且對於host 來說只有輸入(IN)的方式
在中斷事務中,也分為三個階段,即令牌階段、數據傳輸階段、握手階段,如下圖所示。
中斷傳輸事務
同步(Isochronous)傳輸事務
作用:用於時間嚴格並具有較強容錯性的流數據傳輸,或者用於要求恆定的數據傳輸率的即時應用中。例如執行即時通話的網絡電話。
特點:保證傳輸的同步性。保證每秒有固定的傳輸量。
(與Bulk傳輸不同)同步傳輸允許有一定的誤碼率。(這樣符合視頻會議等傳輸的需求,因為視頻會議首先要保證實時性,在一定條件下,允許有一定的誤碼率。)
同步傳輸事務有只有兩個階段,即令牌階段、數據階段,因為不關心數據的正確性,故沒有握手階段,
如下圖所示:
圖 同步傳輸事務