USB傳輸機(jī)制
(1)USB 采用little edian 字節(jié)順序,在總線上先傳輸一個(gè)字節(jié)的最低有效位,最后傳輸最高有效位,采用NRZI 編碼,若遇到連續(xù)的6 個(gè)1 要求進(jìn)行為填充,即插入一個(gè)0。
(2)數(shù)據(jù)在USB 總線上的傳輸以包為單位,包只能在幀內(nèi)傳輸。高速USB 總線的幀周期為125uS,全速以及低速USB 總線的幀周期為1mS。
(3)所有的USB 包都由SYNC 開(kāi)始,高速包的SYNC 寬度為32bit,全速/低速包的SYNC段度為8bit。實(shí)際接收到的SYNC 產(chǎn)度由于USB HUB 的關(guān)系,可能會(huì)小于該值。
(4)USB 采用輪詢的廣播機(jī)制傳輸數(shù)據(jù),所有的傳輸都由主機(jī)發(fā)起,任何時(shí)刻整個(gè) USB 體系內(nèi)僅允許一個(gè)數(shù)據(jù)包的傳輸,即不同物理傳輸線上看到的數(shù)據(jù)包都是同一被廣播的數(shù)據(jù)包。

2,USB 數(shù)據(jù)包的格式

(1)USB 采用“令牌包”-“數(shù)據(jù)包”-“握手包”的傳輸機(jī)制,
(2)令牌包,PID 之后是7 位的地址和4 位的端點(diǎn)號(hào)。令牌包沒(méi)有數(shù)據(jù)域,以5 位的CRC 校驗(yàn)和結(jié)束。
(3)SOF 是一類特殊的令牌包,幀的起始由一個(gè)特定的包(SOF 包)表示,PID 后跟的是11 位的幀編號(hào)。
(4)對(duì)數(shù)據(jù)包來(lái)說(shuō),PID 之后直接跟數(shù)據(jù)域,數(shù)據(jù)域的長(zhǎng)度為N 字節(jié),數(shù)據(jù)域后以16 位的CRC 校驗(yàn)和結(jié)束。
(5)握手包僅有PID 域,沒(méi)有數(shù)據(jù)也沒(méi)有校驗(yàn)和。
令牌包中指定數(shù)據(jù)包去向或者來(lái)源的設(shè)備地址和端點(diǎn)(Endpoint),從而保證了只有一個(gè)設(shè)備對(duì)被廣播的數(shù)據(jù)包/令牌包作出響應(yīng)。令牌包即指PID 為IN/OUT/SETUP 的包。
握手包表示了傳輸?shù)某晒Ψ瘛N帐职粗窹ID 為ACK/NAK/STALL 的包。
數(shù)據(jù)包是USB 總線上數(shù)據(jù)傳輸?shù)淖钚挝唬⊿YNC、數(shù)據(jù)及EOP 三個(gè)部分。其中數(shù)據(jù)的格式針對(duì)不同的包有不同的格式。但都以8 位的PID 開(kāi)始。
PID 表征了數(shù)據(jù)包的類型,分為令牌(Token)、數(shù)據(jù)(Data)、握手(Handshacke)以及特殊包4 大類,共16 種類型的PID。具體定義見(jiàn)英文協(xié)議第196 頁(yè)。

3.USB枚舉圖例
現(xiàn)舉一個(gè)USB枚舉圖的例子,進(jìn)一步理解包的結(jié)構(gòu).

評(píng)論