USB入門(mén)系列之二:USB的連接模型
USB是一種主從結構。主機叫做Host,從機叫做Device(也叫做設備),集線(xiàn)器也被當作一種特殊的設備處理。USB的數據交換只能發(fā)生在主機和設備之間,主機和主機,設備和設備之間不能互連。為了在物理上區分主機和設備,使用了不同的插頭和插座,這個(gè)在USB的連接器一節中會(huì )講到。所有的數據傳輸都由主機主動(dòng)發(fā)起,而設備只是被動(dòng)的負責應答。例如,在讀數據時(shí),USB先發(fā)出讀命令,設備收到該命令后,才返回數據。在USB OTG中,一個(gè)設備可以在從機和主機之間切換,這樣就可以實(shí)現設備與設備之間的連接,大大增加了USB的使用范圍。但這時(shí)依然沒(méi)有脫離這種主從關(guān)系,兩個(gè)設備之間必然有一個(gè)作為主機,另一個(gè)作為從機。USB OTG增加了一種MINI USB接頭,比普通的4線(xiàn)USB多了一個(gè)ID表識線(xiàn),用來(lái)表明它是主機還是設備,這個(gè)以后會(huì )講到。
本文引用地址:http://dyxdggzs.com/article/201607/294668.htmUSB的拓撲結構為金字塔型。由一個(gè)USB主控制器出發(fā),下面接USB集線(xiàn)器,USB集線(xiàn)器將一個(gè)USB口擴展為多個(gè)USB口,多個(gè)USB口又可以通過(guò)集線(xiàn)器為更多個(gè)接口。但USB協(xié)議中對集線(xiàn)器的層數是有限制的,USB1.1規定最多為4層,USB2.0規定最多為6層。理論上,一個(gè)USB主控制器最多可接127個(gè)設備,這是由數據包中的7位地址位決定的,但是實(shí)際上不會(huì )接這么多的設備。我們所說(shuō)的一個(gè)USB主控制器可以連接多個(gè)USB設備,并不是直接簡(jiǎn)單的將多個(gè)設備并聯(lián)或者串聯(lián),而是要由集線(xiàn)器負責端口擴展,才能連接更多的設備。

在我們的電腦上,也有一個(gè)(或者多個(gè),視USB主控制器的個(gè)數而定)集線(xiàn)器,它叫做根集線(xiàn)器,直接連在USB主控制器上。在設備管理器中,我們可以看到USB主控制器和根集線(xiàn)器。如下圖所示。USB數據傳輸路徑如下:USB主控制器發(fā)出數據包,通過(guò)根集線(xiàn)器,再通過(guò)下面的集線(xiàn)器(如果有的話(huà)),再發(fā)給USB設備;設備返回數據,交給它上層的集線(xiàn)器,上層的集線(xiàn)器再交給更上層的集線(xiàn)器,直到USB主控制器為止。而USB主控制器就可以跟CPU打交道了。在標準的PC機上,USB主控制器是掛在PCI總線(xiàn)上的。在Windows中,USB由各種驅動(dòng)程序負責管理,最后由驅動(dòng)程序產(chǎn)生功能設備(FDO),這就是我們所看到的實(shí)際設備了。我們的應用程序就可以通過(guò)Windows提供的各種API進(jìn)行訪(fǎng)問(wèn)USB設備了,例如CreateFile,ReadFile,DeviceIOControl等等。

評論