USB傳輸機制
(1)USB 采用little edian 字節(jié)順序,在總線上先傳輸一個字節(jié)的最低有效位,最后傳輸最高有效位,采用NRZI 編碼,若遇到連續(xù)的6 個1 要求進行為填充,即插入一個0。
(2)數(shù)據(jù)在USB 總線上的傳輸以包為單位,包只能在幀內傳輸。高速USB 總線的幀周期為125uS,全速以及低速USB 總線的幀周期為1mS。
(3)所有的USB 包都由SYNC 開始,高速包的SYNC 寬度為32bit,全速/低速包的SYNC段度為8bit。實際接收到的SYNC 產度由于USB HUB 的關系,可能會小于該值。
(4)USB 采用輪詢的廣播機制傳輸數(shù)據(jù),所有的傳輸都由主機發(fā)起,任何時刻整個 USB 體系內僅允許一個數(shù)據(jù)包的傳輸,即不同物理傳輸線上看到的數(shù)據(jù)包都是同一被廣播的數(shù)據(jù)包。
2,USB 數(shù)據(jù)包的格式
(1)USB 采用“令牌包”-“數(shù)據(jù)包”-“握手包”的傳輸機制,
(2)令牌包,PID 之后是7 位的地址和4 位的端點號。令牌包沒有數(shù)據(jù)域,以5 位的CRC 校驗和結束。
(3)SOF 是一類特殊的令牌包,幀的起始由一個特定的包(SOF 包)表示,PID 后跟的是11 位的幀編號。
(4)對數(shù)據(jù)包來說,PID 之后直接跟數(shù)據(jù)域,數(shù)據(jù)域的長度為N 字節(jié),數(shù)據(jù)域后以16 位的CRC 校驗和結束。
(5)握手包僅有PID 域,沒有數(shù)據(jù)也沒有校驗和。
令牌包中指定數(shù)據(jù)包去向或者來源的設備地址和端點(Endpoint),從而保證了只有一個設備對被廣播的數(shù)據(jù)包/令牌包作出響應。令牌包即指PID 為IN/OUT/SETUP 的包。
握手包表示了傳輸?shù)某晒Ψ?。握手包即指PID 為ACK/NAK/STALL 的包。
數(shù)據(jù)包是USB 總線上數(shù)據(jù)傳輸?shù)淖钚挝?,包括SYNC、數(shù)據(jù)及EOP 三個部分。其中數(shù)據(jù)的格式針對不同的包有不同的格式。但都以8 位的PID 開始。
PID 表征了數(shù)據(jù)包的類型,分為令牌(Token)、數(shù)據(jù)(Data)、握手(Handshacke)以及特殊包4 大類,共16 種類型的PID。具體定義見英文協(xié)議第196 頁。
3.USB枚舉圖例
現(xiàn)舉一個USB枚舉圖的例子,進一步理解包的結構.
評論