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