usb是一種主從結構。主機叫做host,從機叫做device(也叫做裝置),集線器也被當作一種特殊的裝置處理。usb的資料交換只能發生在主機和裝置之間,主機和主機,裝置和裝置之間不能互連。為了在物理上區分主機和裝置,使用了不同的插頭和插座,這個在usb的聯結器一節中會講到。所有的資料傳輸都由主機主動發起,而裝置只是被動的負責應答。例如,在讀資料時,usb先發出讀命令,裝置收到該命令後,才返回資料。在usb otg中,乙個裝置可以在從機和主機之間切換,這樣就可以實現裝置與裝置之間的連線,大大增加了usb的使用範圍。但這時依然沒有脫離這種主從關係,兩個裝置之間必然有乙個作為主機,另乙個作為從機。usb otg增加了一種mini usb接頭,比普通的4線usb多了乙個id表識線,用來表明它是主機還是裝置,這個以後會講到。
usb的拓撲結構為金字塔型。由乙個usb主控制器出發,下面接usb集線器,usb集線器將乙個usb口擴充套件為多個usb口,多個usb口又可以通過集線器為更多個介面。但usb協議中對集線器的層數是有限制的,usb1.1規定最多為4層,usb2.0規定最多為6層。理論上,乙個usb主控制器最多可接127個裝置,這是由資料報中的7位位址位決定的,但是實際上不會接這麼多的裝置。我們所說的乙個usb主控制器可以連線多個usb裝置,並不是直接簡單的將多個裝置併聯或者串聯,而是要由集線器負責埠擴充套件,才能連線更多的裝置。
在我們的電腦上,也有乙個(或者多個,視usb主控制器的個數而定)集線器,它叫做根集線器,直接連在usb主控制器上。在裝置管理器中,我們可以看到usb主控制器和根集線器。如下圖所示。usb資料傳輸路徑如下:usb主控制器發出資料報,通過根集線器,再通過下面的集線器(如果有的話),再發給usb裝置;裝置返回資料,交給它上層的集線器,上層的集線器再交給更上層的集線器,直到usb主控制器為止。而usb主控制器就可以跟cpu打交道了。在標準的pc機上,usb主控制器是掛在pci匯流排上的。在windows中,usb由各種驅動程式負責管理,最後由驅動程式產生功能裝置(fdo),這就是我們所看到的實際裝置了。我們的應用程式就可以通過windows提供的各種api進行訪問usb裝置了,例如createfile,readfile,deviceiocontrol等等。
USB學習系列之二 USB裝置的插入檢測機制
1.usb的插入檢測機制 usb埠的d 和d 均用乙個15k的電阻接地,當無裝置接入時,均處於低電平 在裝置端在d 表示高速裝置或者全速裝置 或者d 表示低速裝置 接了乙個1.5k的上拉電阻到 3.3v,一旦將裝置接入,usb埠的d 或者d 其中乙個被拉高為3v,系統識別到外部裝置接入。注意 高速裝...
USB學習之二 USB PHY
usb phy負責最底層的訊號轉換,作用類似於網口的phy。有兩種介面,一種是ulpi,一種是utmi。前者pin少,後者pin多,所以如果用ulpi,phy一般外部另接 用utmi,pin多,一般內建。phy內建或者外接要看晶元資料。powerpc的p2010,晶元資料裡面定義是ulpi,需要外接...
USB學習之二 USB匯流排驅動程式
usb匯流排驅動程式的作用 1.識別usb裝置 1.1 分配位址 1.2 並告訴usb裝置 set address 1.3 發出命令獲取描述符 描述符的資訊可以在include linux usb ch9.h看到 2.查詢並安裝對應的裝置驅動程式 3.提供usb讀寫函式 將乙個usb裝置接到開發板上...