當USB插入USB總線時拌阴,USB控制器會自動為該USB設備分配一個數字來標示這個設備汰瘫。另外迎膜,在設備的每個端點都有一個數字來表明這個端點敌呈。
USB設備驅動向USB控制器驅動請求的每次傳輸被稱為一個事務(Transaction)袍辞,事務有四種類型鞋仍,分別是Bulk Transaction、Control Transaction搅吁、Interrupt Transaction和Isochronous Transaction威创。每次事務都會分解成若干個數據包在USB總線上傳輸。每次傳輸必須歷經兩個或三個部分谎懦,第一部分是USB控制器向USB設備發(fā)出命令肚豺,第二部分是USB控制器和USB設備之間傳遞讀寫請求,其方向主要看第一部分的命令是讀還是寫界拦,第二部分有時候可以沒有吸申。第三部分是握手信號。以下針對這四種傳輸享甸,分別進行講解截碴。
1.Bulk傳輸事務
顧名思義,改種事務傳輸主要是大塊的數據蛉威,傳送這種事務的管道叫做Bulk管道日丹。這種事務傳輸的時候分為三部分,如圖17-10所示蚯嫌。第一部分是Host端發(fā)出一個Bulk的令牌請求哲虾,如果令牌是IN請求則是從Device到Host的請求,如果是OUT令牌择示,則是從Host到Device端的請求束凑。
第二部分是傳送數據的階段,根據先前請求的令牌的類型对妄,數據傳輸有可能是IN方向湘今,也有可能是OUT方向。傳輸數據的時候用DATA0和DATA1令牌攜帶著數據交替?zhèn)魉汀?/p>
第三部分是握手信號剪菱。如果數據是IN方向摩瞎,握手信號應該是Host端發(fā)出拴签,如果是OUT方向,握手信號應該是Device端發(fā)出旗们。握手信號可以為ACK蚓哩,表示正常響應,也可以是NAK表示沒有正確傳送上渴。STALL表示出現主機不可預知的錯誤岸梨。
在第二部分,即傳輸數據包的時候稠氮,數據傳送由DATA0和DATA1數據包交替發(fā)送曹阔。數據傳輸格式DATA1和DATA0,這兩個是重復數據隔披,確保在1數據丟失時0可以補上赃份,不至于數據丟失。如圖17-11所示奢米。
圖17-10 Bulk傳輸
圖17-11 Bulk傳輸時的令牌
2.控制傳輸事務
控制傳輸是負責向USB設置一些控制信息抓韩,傳送這種事務的管道是控制管道。在每個USB設備中都會有控制管道鬓长,也就是說控制管道在USB設備中是必須的谒拴。控制傳輸也分為三個階段涉波,即令牌階段英上、數據傳送階段、握手階段怠蹂,如圖17-12所示善延。
圖17-12 控制傳輸事務
3.中斷傳輸事務
在USB設備中,有種處理機制類似于PCI中斷的機制城侧,這就是中斷事務易遣。中斷事務的數據量很小,一般用于通知Host某個事件的來臨嫌佑,例如USB鼠標豆茫,鼠標移動或者鼠標單擊等操作都會通過中斷管道來向Host傳送事件。在中斷事務中屋摇,也分為三個階段揩魂,即令牌階段、數據傳輸階段炮温、握手階段火脉,如圖17-13所示。
4.同步傳輸事務
USB設備中還有一種事務叫同步傳輸事務,這種事務能保證傳輸的同步性倦挂。例如畸颅,在USB攝像頭中傳輸視頻數據的時候會采用這種事務,這種事務能保證每秒有固定的傳輸量方援,但與Bulk傳輸不同没炒,它允許有一定的誤碼率,這樣符合視頻會議等傳輸的需求犯戏,因為視頻會議首先要保證實時性送火,在一定條件下,允許有一定的誤碼率先匪。同步傳輸事務有只有兩個階段种吸,即令牌階段、數據階段呀非,因為不關心數據的正確性骨稿,故沒有握手階段,如圖17-14所示姜钳。
圖17-14 同步傳輸事務