1.控制傳輸:
雙向傳輸最為靠譜的傳輸就是控制傳輸,一次控制傳輸劃分成三個階段。第一階段是從HOST到Device的SETUP辦公傳輸,這一階段指定了本次控制傳輸的請求類型
第二個階段是數據階段,當然也有一些請求沒有數據階段;第三個階段是狀態階段,通過一次IN/OUT傳輸表明請求是否成功。
控制傳輸是通過控制管道在應用軟件和Device的控制端之間進行的,控制傳輸過程中傳輸的數據有格式定義,USB設備和主機可以根據格式定義分析獲得的數據意義。
其他三種傳輸類型都沒有格式定義。
控制傳輸對最大包的長度有特定的要求。高速設備的值為64Byte的低速設備的值為8的全速設備可以是8、16、32或64。
最大包長表示一個端點一次性接收/發送數據的能力,實際反應的是該端點對應的Buffer的大小。Buffer越大,一次可以接收/發送的數據包越大,反之亦然。
當數據通過一個端點傳輸時,如果數據的大小超過該端點的最大包的長度,則需要將數據分成幾個包進行傳輸,并要求所有包的長度與最大包的長度相等。
也就是說,如果一個端點收到/發送一個長度低于最大包長度的包,這意味著數據傳輸已經結束。
控制傳輸在訪問總線時也受到限制。
(1).高速端點的控制傳輸不得占微框架的20%以上,全速和低速不得超過10%。
(2).一幀內有多馀的未使用時間,無同步和中斷傳輸,可用于控制傳輸。
2.中斷傳輸:
中斷傳輸是輪詢的傳輸方式,屬于單向傳輸。HOST通過固定間隔查詢中斷端點,如果有數據傳輸或可以接收數據,則返回數據或發送數據,否則返回NAK,表示尚未準備好。
中斷傳輸的延遲有保證,但不是實時傳輸,而是延遲有限的靠譜傳輸,支持錯誤的再傳輸。
高速中斷傳輸不得占80%以上的微幀時間,全速和低速不得超過90%。
對于高速/全速/低速端點,最大包的長度可達1024/64/8Bytes。
中斷端點的輪詢間隔由端點描述符定義,全速端點的輪詢間隔為1~255mS,低速端點為10~255mS,高速端點為(2interval-1)*125uS,其中interval取1~16之間的值。
除了高速高帶寬中斷端點外,一個微框架內只允許一次中斷辦公傳輸,高速高帶寬端點最多可以在一個微框架內進行三次中斷辦公傳輸,傳輸高達3072字節的數據。
單向傳輸不是指該傳輸只支持一個方向的傳輸,而是指在某個端點上該傳輸只支持一個方向、輸出或輸入。如果需要在兩個方向進行某個單向傳輸,則需要占用兩個端點
分別配置在不同的方向,可以有相同的端點編號。
3.批量傳輸:
批量傳輸是靠譜的單向傳輸,但延遲沒有保證,盡量利用可利用的帶寬完成傳輸,適用于數據量較大的傳輸。
低速USB設備是不支持批量傳輸,高速批量端點的最大包長為512,全速批量端點的最大包長為8、16、32、64。
批量傳輸在訪問USB公交時,相對于其他傳輸類型具有最低的優先級,USBHOST總是優先安排其他類型的傳輸,公交帶寬富馀時安排批量傳輸。
高速批量端點應支持PING操作,并向主機報告端點狀態,NYET表示否認響應,未準備接收下一個數據包,ACK表示肯定響應,已準備接收下一個數據包。
4.同步傳輸:
同步傳輸是實時、不靠譜的傳輸,不支持錯誤的再傳輸機制。只有高速和全速端點支持同步傳輸,高速同步端點最大包長1024,低速1023。
除高速高帶寬同步端點外,一個微幀內只允許一次同步辦公傳輸,高速高帶寬端點最多可在一個微幀內進行三次同步辦公傳輸,傳輸高達3072字節的數據。
全速同步傳輸不得占幀時間的80%以上,高速同步傳輸不得占幀時間的90%以上。同步端點的訪問也和中斷端點一樣,有固定的時間間隔限制。
主機控制器和USBHUB之間還有另一種傳輸-分離傳輸(SplitTransaction),只在主機控制器和HUB之間執行,通過分離傳輸,可以將全速/低速設備連接到高速主機。
5.分離傳輸:
顧名思義,將完整的事務傳輸分為兩個事務傳輸。其起點是高速傳輸和全速/低速傳輸的速度不同,使用完整的事務傳輸的話,一定會產生比較長的等待時間
同時分離傳輸對USB設備是透明的,看不見的。
降低高速USB巴士的利用率。是將一次傳輸分為兩部分,將代幣(和數據)的傳輸和應答數據(和握手)的傳輸分開,在中間插入其他高速傳輸,利于提高巴士的利用率。