USB設備系統分為兩個部分,USB Host端和USB Device端,以USB接口的U盤為例子,U盤自身是一個USB Device,PC機的USB接口以及相關的控制電路為USB Host部分。
每個部分由硬件部分和軟件部分組成,硬件部分由USB主機控制器和USB接口芯片來組成,固件(軟件)由兩側的驅動程序組成。
為了規范不同廠商的USB設備,IEEE指定了相應的規范,只要不同端的設備都符合此規范,就能正常的通訊。
主機控制器協議
主機控制器協議有 OHCI、EHCI、UHCI、xHCI。
對於協議規范里面的特定功能,由硬件來實現還是由軟件來實現,這取決於不同的應用場合和環境,因此,就出現了針對USB1.1協議的OHCI和UHCI主機控制器協議。
OHCI把一些功能實現放在硬件上面,因此,軟件方面就比較容易開發,常用於嵌入式系統
UHCI則把一些功能的實現更多的放在軟件上面,因此,硬件上面就可以做的較為簡單,適用於大規模生產,常用於PC中
為了解決USB1.1傳輸速度低下的問題,USB規范升級到USB2.0,對應的主機控制器規范升級為 EHCI。
進一步升級USB規范到USB3.0,對於的主機控制器規范為xHCI。下圖是不同USB主機控制器的區別。
USB硬件接口
USB的插頭和插座,根據不同使用環境,分為三種類型,Type最大,Mini適中,Micro最小。每個類型中又分為A類和B類兩個規格。
USB3.0的接口,USB3.0相比於USB2.0增加了4根線,不過在設計上,保持同USB2.0的兼容。
下圖是不同規范的協議對比:
編碼方式
USB中用NRZI(非歸零反轉碼),電平翻轉代表邏輯0,電平不變代表邏輯1.USB的每個數據包都以同步域開頭(0000_0001),通過編碼成為方波。為了防止發送同樣的數據造成的傳輸誤差,USB規定了強制插0的協議,即如果要傳輸的數據中有7個連續的1,發送前會在第六個1的后面強制插入一個0,強制反轉發送信號,使得兩側的接受頻率同步。
USB的分類
USB只是一種接口形式,基於此接口,可以有多重多樣的設備,為了便於統一管理,對於不同的設備,USB規范規定了不同的設備類型,詳細的USB的Class分類參加此鏈接:
http://www.xat.nl/en/riscos/sw/usb/class.htm
USB的枚舉
USB的枚舉,USB Emulation,就是USB初始化的意思,簡單的說,就是USB的Host和Device之間的對話。
USB的數據傳輸
一次USB的傳輸,由不同事務(Transaction)組成,一個事務是由不同的包(Packet)組成,一個包是由不同的域組成。見下圖:
數據傳輸分為兩類:周期性的和非周期性的。
周期性的有中斷傳輸和等時傳輸。
非周期性的有控制傳輸和批量傳輸
參考鏈接:
USB設備簡述:
USB設備驅動開發:
usb設備的probe過程:
USB設備驅動開發之數據結構:
http://blog.csdn.net/ljzcom/article/details/7693209
http://blog.csdn.net/ljzcom/article/details/7693212
http://blog.csdn.net/ljzcom/article/details/7693219
Technorati 標簽: USB