USB基本概念介绍
1、什么是USB
USB是Universal Serial Bus的縮寫,翻譯為中文就是通用串行總線。在USB出現之前,計算機領域已經存在很多的接口,這些接口互相都有自己的應用領域,并且之間互不兼容,用戶為了使用不同的應用,需要配置不同的硬件接口。USB的出現就是為了解決這些問題,通過單個的USB接口,同時支持不同的應用,方便不同設備的互聯。說白了,USB就相當于在眾多接口之上,設計出一個萬能的USB接口,以后各種外設都可以使用這種接口。
2、USB相關的硬件
2.1 USB主機控制器
USB設備,從物理上的結構來看,包含了主機Host端和設備Device端。其中,主機端有對應的USB的主機控制器Host Controller,而設備端,對應的是USB設備。例如,我們日常使用的臺式電腦的機箱上的USB接口就屬于主機控制器一種,用以存儲資料的U盤屬于USB設備一種。
由于歷史原因,USB的主機控制器有多種不同的類型,分為OHCI和UHCI、EHCI和XHCI。盡管不同的USB主控類型有著不同的特點,但他們都符合對應的USB規范,都實現了USB規范中所規定的USB主控所要實現的內容。不同類型USB控制器之間簡要概括可以如下表所示:
| USB主機控制器類型 | 共同點 | 區別 | |||
|---|---|---|---|---|---|
| 對應的USB的協議和支持的速率 | 創立者 | 功能劃分 | 常用于 | ||
| OHCI | 都實現了對應的USB的規范中所要求的功能 | USB 1.1=Low Speed和Full Speed | Compaq,Microsoft和National Semiconductor | 硬件功能 > 軟件功能?硬件做的事情更多,所以實現對應的軟件驅動的任務,就相對較簡單 | 擴展卡,嵌入式開發板的USB主控 |
| UHCI | Intel | 軟件功能 > 硬件功能?軟件的任務重,可以使用較便宜的硬件的USB控制器 | PC端的主板上的USB主控 | ||
| EHCI | USB 2.0=High Speed | Intel | 定義了USB 2.0主控中所要實現何種功能,以及如何實現 | 各種USB 2.0主控 | |
| xHCI | USB 3.0=Super Speed | Intel | 定義了USB 3.0主控中所要實現何種功能,以及如何實現 | 各種USB 3.0主控 | |
2.2 USB接口的引腳定義
USB 1.x/2.x共有4個引腳,分別為VBUS、D-、D+、GND
VBUS:+5V電源引腳
D-:data-,數據線,與D+構成差分信號
D+:data+,數據線,與D-構成差分信號
GND:Ground,地線
在USB主機端的每個端口的D+和D-上,分別接了一個15K歐姆的下拉電阻到地。這樣,在USB主機端的端口懸空時,就被這兩個下拉電阻拉到了低電平。而在USB設備端,在D+或者D-上接了1.5K歐姆上拉電阻。對于全速和高速設備,上拉電阻是接在D+上,而低速設備則是上拉電阻接在D-上,連接方式如下圖所示:
這樣,當設備插入到主機端的端口上時,由1.5K的上拉電阻和15K的下拉電阻分壓,結果就將差分數據線中的一條拉高了。主機控制器檢測到這個狀態后,它就報告給USB主控制器,這樣就檢測到設備的插入了。USB高速設備先是被識別為全速設備,然后通過HOST和DEVICE兩者之間的確認,再切換到高速模式的。在高速模式下,是電流傳輸模式,這時將D+上的上拉電阻斷開。
2.3 USB的連接端口類型
USB的連接端口類型,即指各種不同的插頭插座。插座被稱為母頭,也就是主機端的用于等待設備連接的端口;插頭即公頭,設備用于連接主機端的接口。
由于USB的產生就是為了支持眾多種應用的,而由于各種應用中,對于硬件接口的大小也有一些限制,比如有些小型設備或者移動式設備中,接口不能太大等,所以而設計出多種類型的接口,用于不同的應用。
USB的接口類型,根據接口形狀不同,主要可以分為三大類:
普通的硬件直接叫做Type
然后有小型版本的叫Mini迷你的
和更加小的,叫做Micro微小的
3、USB的傳輸方式
USB共有4大傳輸方式,分別為控制傳輸、中斷傳輸、批量傳輸、實時傳輸。
控制傳輸(control)
每一個USB設備必須支持的,通常用來獲取設備描述符、設置設備的狀態等。一個USB設備從插入到最后的拔出這個過程一定會產生控制傳輸,即便這個USB設備不能被這個系統支持。
中斷傳輸(interrupt)
支持中斷傳輸的典型設備有USB鼠標、 USB鍵盤等。中斷傳輸并不是我的設備真正觸發主機進入中斷,然后主機會來讀取數據,它其實是一種輪詢的方式來完成數據的通信。USB設備會在設備驅動程序中設置一個參數叫做interval,它是endpoint的一個成員。 interval是間隔時間的意思,表示我這個設備希望主機多長時間來輪詢自己,只要這個值確定了之后,我主機就會周期性的來查看有沒有數據需要處理。
批量傳輸(bulk)
支持批量傳輸最典型的設備就是U盤,它進行大數量的數據傳輸,能夠保證數據的準確性,但是時間不是固定的。
實時傳輸(isochronous)
USB攝像頭就是實時傳輸設備的典型代表,它同樣進行大數量的數據傳輸,數據的準確性無法保證,但是對傳輸延遲非常敏感,也就是說對實時性要求比較高 。
4、USB相關術語
4.1 Class
前面講過,USB被設計的目的之一是為了實現用單一的USB接口取代之前種類繁多的各種其他接口。為了能取代之前的接口,意味著USB可以實現或支持之前的各種接口的各種功能,協議中對這些功能進行相關的定義。因此,就出現了各種USB Class,協議中定義的class如下表所示:
| Base Class | Descriptor Usage | Description |
|---|---|---|
| 00h | Device | Use class information in the Interface Descriptors |
| 01h | Interface | Audio |
| 02h | Both | Communications and CDC Control |
| 03h | Interface | HID (Human Interface Device) |
| 05h | Interface | Physical |
| 06h | Interface | Image |
| 07h | Interface | Printer |
| 08h | Interface | Mass Storage |
| 09h | Device | Hub |
| 0Ah | Interface | CDC-Data |
| 0Bh | Interface | Smart Card |
| 0Dh | Interface | Content Security |
| 0Eh | Interface | Video |
| 0Fh | Interface | Personal Healthcare |
| DCh | Both | Diagnostic Device |
| E0h | Interface | Wireless Controller |
| EFh | Both | Miscellaneous |
| FEh | Interface | Application Specific |
| FFh | Both | Vendor Specific |
USB class是根據功能進行劃分的,不同的class實現不同的功能,適用于相應的設備。如HID(Human Interface Device),人體學輸入設備,包含我們經常使用的鼠標和鍵盤;Mass Storage,包含我們日常使用的U盤等存儲介質
4.2 枚舉(Enumerate)
USB枚舉,USB Emulation,從字面意思看,就是去列舉USB,而列舉是什么意思呢?其實就是USB的初始化
簡單來說,USB的枚舉,對應的就是USB的Host和Device之間的對話,即Host根據Device所報告上來的參數,得知USB的device是什么類型的,具有什么功能,然后初始化相關參數
接下來,就USB Device就可以正常工作了
所以,可以簡單的理解為,USB枚舉,就是USB設備的初始化(init)
4.3 端點(Endpoint)
端點是USB的傳輸對象,是USB設備通信的基本單位,所有通信幾乎都是從端點發起的
比如我們說"讀U盤"、"寫U盤",可以細化為:把數據寫到U盤的端點1,從U盤的端點2里讀出數據。
除了端點0外,每一個端點只支持一個方向的數據傳輸,端點0用于控制傳輸,既能輸出也能輸入
設備中端點的編號是任意的。枚舉期間外設向主機報告其端點號和特征
4.4 接口(Interface)
接口由多個端點組成,代表一個基本的功能,是USB設備驅動程序控制的對象,一個功能復雜的USB設備可以具有多個接口。
每個Interface模擬一個設備功能,比如集成了鍵盤和鼠標的USB設備,里面就是兩個interface,一個是鍵盤,另一個是鼠標。Interface之間通常是隔離的,互相不干擾。
4.5 集線器(Hub)
集線器擴展了USB主機所能連接設備的數量。主機控制器內置一個集線器,負責完成一些底層USB功能,如檢測設備的插入或拔出。
集線器以全速或高速連接到上行端口(到PC),以低速、全速或高速連接到下行端口(到外設)。PC的根集線器可為每個A型連接器提供5V、500mA。一個總線供電的外部集線器可為每端口提供100mA電流。由于USB為外部集線器電路分配100mA電流,因此,一個總線供電的集線器可以有四個下行端口。如果集線器有自己的電源(自供電),每個下行端口可提供高達500mA電流。
總結
- 上一篇: pytorch adam 源码 关于
- 下一篇: 演员刘金苹果店前怒摔iPhone 13