USB协议普及文
#目錄
#USB
#USB On-The-Go Supplement
#技術指標
#機械和電氣標準
#編碼方式
#軟件架構
#端點
#HCD
#USB 封包格式
#設備分類
#USB接頭
#電源
#Storage
#人機接口設備(HID)
#起因
Intel公司開發的通用串行總線架構(USB)的目的主要基于以下三方面考慮:
計算機與電話之間的連接:顯然用計算機來進行計算機通信將是下一代計算機基本的應用。機器和人們的數據交互流動需要一個廣泛而又便宜的連通網絡。然而,由于目前產業間的相互獨立發展,尚未建立統一標準,而USB則可以廣泛的連接計算機和電話。
易用性:眾所周知,PC機的改裝是極不靈活的。對用戶友好的圖形化接口和一些軟硬件機制的結合,加上新一代總線結構使得計算機的沖突大量減少,且易于改裝。但以終端用戶的眼光來看,PC機的輸入/輸出,如串行/并行端口、鍵盤、鼠標、操縱桿接口等,均還沒有達到即插即用的特性,USB 正是在這種情況下問世的。
端口擴充:外圍設備的添加總是被相當有限的端口數目限制著。缺少一個雙向、價廉、與外設連接的中低速的總線,限制了外圍設備(諸如電話/電傳/調制解調器的適配器、掃描儀、鍵盤、PDA)的開發。USB是快速、雙向、同步、動態連接且價格低廉的串行接口,可以滿足PC機發展的現在和未來的需要。
#簡介
USB最初是由英特爾與微軟公司倡導發起,其最大的特點是支持熱插拔(Hot plug)和即插即用 (Plug&Play)。當設備插入時,主機枚舉(enumerate)此設備并加載所需的驅動程序,因此使用遠比PCI和ISA總線方便。USB速度比平行并聯總線(Parellel Bus,例如EPP、LPT)與串聯總線(Serial Port,例如RS-232)等傳統電腦用標準總線快上許多。原標準中USB 1.1 的最大傳輸帶寬為 12Mbps,USB 2.0 的最大傳輸帶寬為 480Mbps。USB的設計為非對稱式的,它由一個主機(host)控制器和若干通過hub設備以樹形連接的設備組成。一個控制器下最多可以有5級hub,包括Hub在內,最多可以連接127個設備,而一臺計算機可以同時有多個控制器。和SPI-SCSI等標準不同,USB hub不需要終結器。USB可以連接的外設有鼠標、鍵盤、gamepad、游戲桿、掃描儀、數碼相機、打印機、硬盤和網絡部件。對數碼相機這樣的多媒體外設USB已經是缺省接口;由于大大簡化了與計算機的連接,USB也逐步取代并口成為打印機的主流連接方式。2004年已經有超過1億臺USB設備;到2005年顯示器和高清晰度數字視頻外設是僅有的USB未能染指的外設類別,因為他們需要更高的傳輸速率。
#標準
USB Implementers Forum (USBIF)負責USB標準制訂,其成員包括蘋果電腦、惠普、NEC、Microsoft和Intel。USBIF于2001年底公布了2.0規范,之前還有0.9、1.0、和1.1,他們都是完全向后兼容的。On-The-Go Supplement to the USB 2.0 Specification的當前版本是1.0a。USB的連接器分為A、B兩種,分別用于主機和設備;其各自的小型化的連接器是Mini-A和Mini-B,另外還有Mini-AB的插口。現標準中將UBS統一為USB分為:
| USB 3.2 | 超高速+ SuperSpeed+ | 20Gbps | 2560MB/s | |
| USB 3.1 Gen2 | 超高速+ SuperSpeed+ | 10Gbps | 1280MB/s | |
| USB 3.1 Gen1 | 超高速 SuperSpeed | 5Gbps | 640MB/s | |
| USB 2.0 | 高速 Hi-Speed | 480Mbps | 60MB/s | |
| USB 1.1 | 全速 Full Speed | 12Mbps | 1.5MB/s | |
| USB 1.0 | 低速 Low Speed | 1.5Mbps | 0.192MB/s |
#歷史
#USB
USB 1.0 FDR: 1995年11月釋出,同一年蘋果公司發布IEEE 1394標準,就是著名的火線接口. [52RD.com] USB 1.0: 1996年1月釋出。USB 1.1: 1998年9月釋出。USB 2.0: 2000年4月釋出。這一標準的主要特性就是高速(理論值480Mbps)。這是當前版本。USB 2.0: 2002年12月修訂。加入三個不同速度標準, 允許所有USB2.0兼容所有標準的USB設備包括1.1和1.0。這使得標準能夠向后兼容,但是增加了不察看標記來計算設備吞吐量的難度。USB 3.0:2003 USB 3.1:2013 USB 3.2:2017
#USB On-The-Go Supplement
USB On-The-Go Supplement 1.0: 2001年12月發布 USB On-The-Go Supplement 1.0a: 2003年6月發布,即當前版本
#技術細節概述
#技術指標
目前USB支持3種數據信號速率,USB設備應該在其外殼或者有時是自身上正確標明其使用的速率。USB-IF進行設備認證并為通過兼容測試并支付許可費用的設備提供基本速率(低速和全速)和高速的特殊商標許可。1.5 Mbit/s (183 KByte/s) 的低速速率,主要用于人機接口設備(Human Interface Devices ,HID)例如鍵盤、鼠標、游戲桿。12 Mbit/s (1.4 MByte/s)的全速速率, 在USB 2.0之前是曾經是最高速率,后起的更高速率的高速接口應該兼容全速速率。多個全速設備間可以按照先到先得法則劃分帶寬;使用多個等時設備時會超過帶寬上限也并不罕見。所有的USB Hub支持全速速率。480 Mbit/s (57 MByte/s)的高速速率。并非所有的USB 2.0設備都是高速的。高速設備插入全速hub時應該與全速兼容。而高速hub具有所謂Transaction Translator(事務翻譯器)功能,能夠隔離全速、低速設備與高速之間數據流,但是不會影響供電和串聯深度。
#機械和電氣標準
| 標準USB接口 | USB標準A、 B插頭 ? ? 標準USB連接器觸點 觸點 功能(主機) 功能 (設備) ? ?1 VBUS (4.75-5.25 V) ? 2 D- 3 D+ 4 接地 | USB信號使用分別標記為D+和D-的雙絞線傳輸,它們各自使用半雙工差分信號并協同工作,以抵消長導線的電磁干擾, | |
| Mini USB接口 | Mini USB A、 B連接器及其觸點 ? ? ? ? ? ?Mini USB連接器觸點 觸點 功能 ? ? ? 1 VBUS (4.4–5.25 V) ? 2 D? ?3 D+ ?4 ID ?5 接地 | mini USB除了第4針外,其他接口功能皆與標準USB相同。第4針成為ID,在mini-A上連接到第5針,在mini-B可以懸空亦可連接到第5針 | |
| USB3.0 A | 針腳定義見下表 | 9線,是usb2.0的10倍 | |
| usb3.0 B | 看到不較少 | ||
| Type C | 雙面對稱 | 移動設備用的多 |
#編碼方式
USB標準采用NRZI方式(翻轉不歸零制)對數據進行編碼。翻轉不歸零制(non-return to zero,inverted),電平保持時傳送邏輯1,電平翻轉時傳送邏輯0。
#軟件架構
PCB mounting female USB connectors 一個USB主機通過hub鏈可以連接多個設備。由于理論上一個物理設備可以承擔多種功能,例如路由器同時也可以是一個SD卡讀卡器,USB的術語中設備(device)指的是功能(functions)。集線器(hub)由于作用特殊,按照正式的觀點并不認為是function。直接連接到主機的hub是根(root)hub。
#端點
設備/功能(和集線器)與管道pipe (邏輯通道)聯系在一起,管道把主機控制器和被稱為端點endpoint的邏輯實體連接起來。管道和比特流(例如UNIX的pipeline)有著相同的含義,而在USB詞匯中術語端點經常和管道混用,甚至在正式文檔中。端點(和各自的管道)在每個方向上按照0-15編號,因此一個設備/功能最多有32個活動管道,16個進,16個出。(出( OUT)指離開控制器,而入(IN)指進入主機控制器。) 兩個方向的端點0總是留給總線管理,占用了32個端點中的2個。在管道中,數據使用不同長度的包傳遞,端點可以傳遞的包長度上限一般是2^n字節,所以USB包經常包含的數據量依次有8、16、32、64、128、256、512或者1024 字節。
一個端點只能單向(進/出)傳輸數據,自然管道也是單向的。每個USB設備至少有兩個端點/管道:它們分別是進出方向的,編號為0,用于控制總線上的設備。按照各自的傳輸類型,管道被分為4類:控制傳輸——一般用于短的、簡單的對設備的命令和狀態反饋,例如用于總線控制的0號管道。等時傳輸——按照有保障的速度(可能但不必然是盡快地)傳輸,可能有數據丟失,例如實時的音頻、視頻。中斷傳輸——用于必須保證盡快反應的設備(有限延遲),例如鼠標、鍵盤。批量傳輸——使用余下的帶寬大量地(但是沒有對于延遲、連續性、帶寬和速度的保證)傳輸數據,例如普通的文件傳輸。一旦設備(功能)通過總線的hub附加到主機控制器,主機控制器就給它分配一個主機上唯一的7位地址。主機控制器通過投票分配流量,一般是通過輪詢模式,因此沒有明確向主機控制器請求之前,設備不能傳輸數據。為了訪問端點,必須獲得一個分層的配置。連接到主機的設備有且僅有一個設備描述符(device descriptor),而設備描述符有若干配置描述符(configuration descriptors)。這些配置一般與狀態相對應,例如活躍和節能模式。。每個配置描述符有若干接口描述符(interface setting),用于描述設備的一定方面,所以可以被用于不同的用途:如一個相機可能擁有視頻和音頻兩個接口。接口描述符有一個缺省接口設置(default interface setting)和可能多個替代接口設置(alternate interface settings),它們都擁有如上所述的端點描述符。一個端點能夠在多個接口和替代接口設置之間復用。
#HCD
包含主機控制器和根HUB的硬件為程序員提供了由硬件實現定義的接口主機控制器設備 (HCD)。而實際上它在計算機是就是端口和內存映射。1.0和1.1的標準有兩個競爭的HCD實現。康柏的 開放主機控制器接口 (OHCI)和Intel的通用主機控制器接口 (UHCI) 。VIA威盛采納了UHCI;其他主要的芯片組多使用OHCI。它們的主要區別是UHCI更加依賴軟件驅動,因此對CPU要求更高,但是自身的硬件會更廉價。它們的并存導致操作系統開發和硬件廠商都必須在兩個方案上開發和測試,從而導致費用上升。因此 USB-IF在USB 2.0的設計階段堅持只能有一個實現規范,這就是擴展主機控制器接口 (EHCI)。因為EHCI只支持全速傳輸,所以EHCI控制器包括四個虛擬的全速或者慢速控制器。這里同樣是 Intel和Via使用虛擬UHCI,其他一般使用OHCI控制器。某些版本的Windows上,打開設備管理器,如果設備說明中是否有“增強”("Enhanced"),就能夠確認它是2.0版的。而在Linux系統中,命令lspci能夠列出所有的PCI設備,而USB會分別命名為OHCI、UHCI或者EHCI。列出為16位地址的為EHCI,32位的為OHCI 命令lsusb能夠顯示所有USB設備的信息。命令dmesg能夠顯示OS啟動時關于USB設備的信息。
#USB 封包格式
USB 的封包格式和早期的internet封包格式非常相似,要了解USB連接原理就一定要先了解封包格式。USB packet format:
| 0 | HeaderChksum | 1 | Checksum of the header by adding the header bytes, excluding the header checksum. [ |
| 1 | HeaderSize | 1 | Size of the header, including strings if applicable. |
| 2 | Signature | 2 | Signature: 0x1234 |
| 4 | VendorID | 2 | USB Vendor ID |
| 6 | ProductID | 2 | USB Product ID |
| 8 | ProductVersion | 1 | Product version |
| 9 | FirmwareVersion | 1 | Firmware version |
| 10 | UsbAttributes | 1 | USB attributes:Bit 0: If set to 1, the header includes all three strings: language, manufacture, and product strings; if set to 0, the header does not include any strings. Bit 2: If set to 1, the device can be self powered; if set to 0, it cannot be self powered.Bit 3: If set to 1, the device can be bus powered; if set to 0, it cannot be bus powered. Bits 1 and 4 ... 7: Not used. |
| 11 | MaxPower | 1 | Maximum power the device needs in units of 2 mA. |
| 12 | Attribute | 1 | Device attributes: Bit 0: If set to 1, the CPU speed runs at 24 MHz; if set to 0, the CPU speed runs at 12 MHz.Bit 3: If set to 1, the device's EEPROM can support 400 MHz; if set to 0, it can not support 400 MHz.Bits 1, 2 and 4 ... 7: Not used. |
| 13 | WPageSize | 1 | Maximum I2C write page size |
| 14 | DataType | 1 | This value defines if the device is application EEPROM or device EEPROM. 0x01: Application EEPROM 0x02:Device EEPROM Other values are invalid. |
| 15 | RpageSize | 1 | Maximum I2C read page size. If the value is zero, the whole PayLoadSize is read in one I2C read setup. |
| 16 | PayLoadSize | 2 | Size of the application, if using EEPROM as an application EEPROM; otherwise the value is 0. |
| 0xxx | Language string | 4 | Language string in standard USB string format if applicable. |
| 0xxx | Manufacture string | ... | Manufacture string in standard USB string format if applicable. |
| 0xxx | Product string | ... | Product string in standard USB string format if applicable. |
| 0xxx | Application Code | ... | Application code if applicable. |
#設備分類
依附在總線上的設備可以是需要特定的驅動程序的完全定制的設備,也可能屬于某個設備類別。這些類別定義了某種設備的行為和接口描述符,這樣一個驅動程序可能用于所有此種類別的設備。一般操作系統都為支持這些設備類別,為其提供通用驅動程序。設備分類由USB設計論壇設備工作組決定,并分配ID。如果一個設備類型屬于整個設備,該設備的描述府bDeviceClass的域保存類別ID;如果它這是設備的一個界面,其ID保存在界面描述府的;bInterfaceClass域。他們都占用一個字節,所以最多有253種設備類別。(0x00和0xFF保留)。當bDeviceClass 設為0x00,操作系統會檢查每個接口的bInterfaceClass以確定其類別。每種類別可選支持子類別(SubClass)和協議子定義(Protocol subdefinition)。這樣可以用于主設備類型的不斷修訂。常用設備類別和ID有:
| 0x00 | 保留值 |
| 0x01 | USB音頻設備, 像聲卡這樣的設備。 |
| 0x03 | 人機接口設備, 鍵盤鼠標等 |
| 0x06 | 靜止圖像捕捉設備,用在USB上的Picture Transfer Protocol。 |
| 0x07 | USB打印設備, 打印機。 |
| 0x08 | USB大容量存儲設備 keydrive, 可移動硬盤, MMC卡、SD卡、CF卡讀卡器, 數碼相機, 數字音頻播放器等。這一類設備顯示成一個文件系統。 |
| 0x09 | USB hubs。 |
| 0x0A | USB通信設備 ("CDC") used for 調制解調器(包括軟件調制解調器), 網卡 (交叉電纜), ISDN, 傳真。 |
| 0x0E | USB視頻設備, 類似攝像頭,電視卡的動態圖像捕捉設備。 |
| 0xE0 | 無線控制器,如藍牙dongles。 |
| 0xFF | 定制設備。 |
#USB接頭
接頭是由USB協會所指定,接頭的設計一方面為了支持眾多USB的基本需求,另一方面也避免以往許多類似串行接頭所出現的問題。接頭設計的相當耐用。許多以往使用的接頭較脆弱,即使受力不大,有時針腳或零件也會折彎甚至斷裂。而USB接頭的金屬導電部份周圍有塑料作為保護,而且整個連接部份被金屬的保護套圍住,因此USB接頭不論插拔,都不容易受損。不可能把USB接口插錯。這是防呆設計,方向相反的插頭不可能插到插座里,方向正反很容易感覺出來。接頭能相對便宜地大量生產。在USB網絡中,接頭被強制使用定向拓撲。USB不支持環形網絡,因此不兼容的USB設備之間接口也不兼容。不像其他通訊系統(如RJ-45電纜)不能使用轉換插頭,防止環形USB網絡產生。
適度的插拔力。USB電纜和小型USB設備能被插口卡住(不需要夾子、螺絲或者其他接口那樣的鎖扣)。允許通過適當力量插拔,連接器要方便困難環境和殘障人士使用。由于接頭的構造,在將USB插頭插入USB座時,插頭外面的金屬保護套會先接觸到USB座內對應的金屬部份,之后插頭內部的四個觸點才會接觸到USB座。金屬保護套會連接到系統的地點,提供路徑使靜電可以放電,避免因靜電通過電子零件而造成損壞。
#電源
USB 接頭提供一組5伏特的電壓,可作為相連接USB設備的電源。實際上,設備接收到的電源可能會低于5V,只略高于4V。USB規范要求在任何情形下,電壓均不能超過5.25V;在最壞情形下(經由USB供電HUB所連接的LOW POWER設備)電壓均不能低于4.375V,一般情形電壓會接近5V。一個 USB 的根集線器最多只能提供 500 mA 的電流。如此的電流已足以驅動許多電子設備,不過連接在總線供電HUB的所有設備,需要共享 500mA 的電流額度。一個由總線供電的設備可以使用到它所連接埠上允許輸出的所有電源。總線供電的HUB可以將電源供給連接在 HUB 上的所有設備,不過 USB 的規范只允許總線供電的 HUB 下游串接一層總線供電的設備,因此,總線供電的 HUB 下游不允許再串接另一個由總線供電的 HUB。許多 HUB 有外加電源,因此可以提供電源給下游的設備,不會消耗總線上的電源。若設備需要的電壓超過5V,或是需要電流超過500mA,都需要使用外加電源。
相對于之前其他溝通介面僅能傳遞訊息資料,高電壓USB插槽本身還能提供5V(伏特)的主動電壓,及0.5A(安培)的電流,因此對于一些小型設備而言,可以不必再外接電源供應裝置,就能利用來自USB插槽的電力順利運作。利用這特點,也有廠商開發出適當的排線,將USB拿來當作供電插座般使用,例如作為移動電話的充電器,或是提供小型電燈的電力需要,反而與原本用來連接電腦用的主要用途無關。
#同類標準比較
#Storage
閃存盤,典型的USB海量存儲設備 USB 使用 USB mass storage device class標準實現Storage設備的連接.它最初被用于傳統的磁盤和光盤驅動,但是現在已經擴展到支持大量不同的設備.USB不能用于計算機內部存儲設備的基本總線: 像 ATA (IDE), Serial ATA (SATA), 和 SCSI. 然而, USB有一個非常重要的優點,那就是它能夠在不關閉計算機的情況下動態的安裝和刪除USB設備,這使它成為一個有用的外部設備.今天,大量的生產商提供便攜式USB移動硬盤或者一個空的,能夠兼容內部驅動的盒子.這些內部驅動通常提供一個轉換驅動接口,用以轉換IDE, ATA, SATA, ATAPI, 或者 SCSI 到USB port。對于用戶來講,就像連接了一個內部的驅動。其他的競爭標準是eSATA 以及 Firewire.
#人機接口設備(HID)
USB沒有完全取代AT鍵盤接口和PS/2鍵盤鼠標接口,但是事實上現在所有主板制造商都提供至少多于一個USB接口。到2004年,大多數新主板都配有多個高速USB 2.0接口,盡管有些是內置在主板上的,需要使用電纜連接到位于主機前面板或者側面的接口。同樣的對游戲操縱桿,手柄,寫字板和其他人機接口設備的支持逐漸從原聲卡上的“MIDI/游戲”接口和PS/2接口上轉移到USB上。現在帶著USB轉PS/2接口轉換插頭的USB鍵盤鼠標相當普遍,他們可以使用任意2種接口之一。使用專用鍵盤鼠標的蘋果電腦1999年一月也開始使用USB接口。最初的IPOD只有IEEE1394接口,后來在3G的IPOD,蘋果電腦開始支持USB2.0,但是還不能用作充電,現在的IPOD,已經全面兼容USB與IEEE1394,兩者均可充電以及連接計算機。
#擴展
PictBridge標準可以使得消費者使用的圖形設備彼此互通(例如數碼相機直接通過打印機輸出)。一般它使用USB做為其底層通信協議。
? 回復「?籃球的大肚子」進入技術群聊
回復「1024」獲取1000G學習資料
總結
- 上一篇: 房价数据分析
- 下一篇: html实现验证码效果,html5使用c