USB接口介紹(下)
USB 封包格式
USB 的封包格式和早期的internet封包格式非常相似,要了解USB連接原理就一定要先了解封包格式。
本文引用地址:http://butianyuan.cn/article/201612/329069.htmOFFSET | TYPE | SIZE | VALUE |
---|---|---|---|
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. |
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. |
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 |
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. |
設(shè)備分類
依附在總線上的設(shè)備可以是需要特定的驅(qū)動(dòng)程序的完全定制的設(shè)備,也可能屬于某個(gè)設(shè)備類別。這些類別定義了某種設(shè)備的行為和接口描述符,這樣一個(gè)驅(qū)動(dòng)程序可能用于所有此種類別的設(shè)備。一般操作系統(tǒng)都為支持這些設(shè)備類別,為其提供通用驅(qū)動(dòng)程序。
設(shè)備分類由USB設(shè)計(jì)論壇設(shè)備工作組決定,并分配ID。
如果一個(gè)設(shè)備類型屬于整個(gè)設(shè)備,該設(shè)備的描述府bDeviceClass的域保存類別ID;如果它這是設(shè)備的一個(gè)界面,其ID保存在界面描述府的;bInterfaceClass域。他們都占用一個(gè)字節(jié),所以最多有253種設(shè)備類別。(0x00和0xFF保留)。當(dāng)bDeviceClass設(shè)為0x00,操作系統(tǒng)會(huì)檢查每個(gè)接口的bInterfaceClass以確定其類別。
每種類別可選支持子類別(SubClass)和協(xié)議子定義(Protocol subdefinition)。這樣可以用于主設(shè)備類型的不斷修訂。
常用設(shè)備類別和ID有:
- 0x00
- 保留值
- 0x01
- USB音頻設(shè)備, 像聲卡這樣的設(shè)備。
- 0x03
- 人機(jī)接口設(shè)備, 鍵盤鼠標(biāo)等
- 0x06
- 靜止圖像捕捉設(shè)備,用在USB上的Picture Transfer Protocol。
- 0x07
- USB打印設(shè)備, 打印機(jī)。
- 0x08
- USB大容量存儲(chǔ)設(shè)備keydrive, 可移動(dòng)硬盤,MMC卡、SD卡、CF卡讀卡器, 數(shù)碼相機(jī),數(shù)字音頻播放器等。 這一類設(shè)備顯示成一個(gè)文件系統(tǒng)。
- 0x09
- USB hubs。
- 0x0A
- USB通信設(shè)備("CDC") used for調(diào)制解調(diào)器(包括軟件調(diào)制解調(diào)器),網(wǎng)卡(交叉電纜),ISDN,傳真。
- 0x0E
- USB視頻設(shè)備, 類似攝像頭,電視卡的動(dòng)態(tài)圖像捕捉設(shè)備。
- 0xE0
- 無線控制器,如藍(lán)牙dongles。
- 0xFF
- 定制設(shè)備。
USB接頭
接頭是由USB協(xié)會(huì)所指定,接頭的設(shè)計(jì)一方面為了支持眾多USB的基本需求,另一方面也避免以往許多類似串行接頭所出現(xiàn)的問題。
- 接頭設(shè)計(jì)的相當(dāng)耐用。
- 不可能把USB接口插錯(cuò)。
- 接頭能相對(duì)便宜地大量生產(chǎn)。
- 在USB網(wǎng)絡(luò)中,接頭被強(qiáng)制使用定向拓?fù)?/strong>。USB不支持環(huán)形網(wǎng)絡(luò),因此不兼容的USB設(shè)備之間接口也不兼容。不像其他通訊系統(tǒng)(如RJ-45電纜)不能使用轉(zhuǎn)換插頭,防止環(huán)形USB網(wǎng)絡(luò)產(chǎn)生。
- 適度的插拔力。
- 由于接頭的構(gòu)造,在將USB插頭插入U(xiǎn)SB座時(shí),插頭外面的金屬保護(hù)套會(huì)先接觸到USB座內(nèi)對(duì)應(yīng)的金屬部份,之后插頭內(nèi)部的四個(gè)觸點(diǎn)才會(huì)接觸到USB座。金屬保護(hù)套會(huì)連接到系統(tǒng)的地點(diǎn),提供路徑使靜電可以放電,避免因靜電通過電子零件而造成損壞。
電源
USB 接頭提供一組5伏特的電壓,可作為相連接USB設(shè)備的電源。實(shí)際上,設(shè)備接收到的電源可能會(huì)低于5V,只略高于4V。USB規(guī)范要求在任何情形下,電壓均不能超過5.25V;在最壞情形下(經(jīng)由USB供電HUB所連接的LOW POWER設(shè)備)電壓均不能低于4.375V,一般情形電壓會(huì)接近5V。
一個(gè) USB 的根集線器最多只能提供 500mA的電流。如此的電流已足以驅(qū)動(dòng)許多電子設(shè)備,不過連接在總線供電HUB的所有設(shè)備,需要共享 500mA 的電流額度。一個(gè)由總線供電的設(shè)備可以使用到它所連接埠上允許輸出的所有電源。
總線供電的HUB可以將電源供給連接在 HUB 上的所有設(shè)備,不過 USB 的規(guī)范只允許總線供電的 HUB 下游串接一層總線供電的設(shè)備,因此,總線供電的 HUB 下游不允許再串接另一個(gè)由總線供電的 HUB。許多 HUB 有外加電源,因此可以提供電源給下游的設(shè)備,不會(huì)消耗總線上的電源。若設(shè)備需要的電壓超過5V,或是需要電流超過500mA,都需要使用外加電源。
相對(duì)于之前其他溝通介面僅能傳遞訊息資料,高電壓USB插槽本身還能提供5V(伏特)的主動(dòng)電壓,及0.5A(安培)的電流,因此對(duì)于一些小型設(shè)備而言,可以不必再外接電源供應(yīng)裝置,就能利用來自USB插槽的電力順利運(yùn)作。利用這特點(diǎn),也有廠商開發(fā)出適當(dāng)?shù)呐啪€,將USB拿來當(dāng)作供電插座般使用,例如作為移動(dòng)電話的充電器,或是提供小型電燈的電力需要,反而與原本用來連接電腦用的主要用途無關(guān)。
同類標(biāo)準(zhǔn)比較
Storage
USB 使用USB mass storage device class標(biāo)準(zhǔn)實(shí)現(xiàn)Storage設(shè)備的連接.它最初被用于傳統(tǒng)的磁盤和光盤驅(qū)動(dòng),但是現(xiàn)在已經(jīng)擴(kuò)展到支持大量不同的設(shè)備.USB不能用于計(jì)算機(jī)內(nèi)部存儲(chǔ)設(shè)備的基本總線: 像ATA(IDE), Serial ATA (SATA), 和SCSI.
然而, USB有一個(gè)非常重要的優(yōu)點(diǎn),那就是它能夠在不關(guān)閉計(jì)算機(jī)的情況下動(dòng)態(tài)的安裝和刪除USB設(shè)備,這使它成為一個(gè)有用的外部設(shè)備.今天,大量的生產(chǎn)商提供便攜式USB移動(dòng)硬盤或者一個(gè)空的,能夠兼容內(nèi)部驅(qū)動(dòng)的盒子.這些內(nèi)部驅(qū)動(dòng)通常提供一個(gè)轉(zhuǎn)換驅(qū)動(dòng)接口,用以轉(zhuǎn)換IDE, ATA, SATA, ATAPI, 或者 SCSI 到USB port。對(duì)于用戶來講,就像連接了一個(gè)內(nèi)部的驅(qū)動(dòng)。其他的競爭標(biāo)準(zhǔn)是eSATA以及Firewire.
人機(jī)接口設(shè)備(HID)
USB沒有完全取代AT鍵盤接口和PS/2鍵盤鼠標(biāo)接口,但是事實(shí)上現(xiàn)在所有主板制造商都提供至少多于一個(gè)USB接口。到2004年,大多數(shù)新主板都配有多個(gè)高速USB 2.0接口,盡管有些是內(nèi)置在主板上的,需要使用電纜連接到位于主機(jī)前面板或者側(cè)面的接口。同樣的對(duì)游戲操縱桿,手柄,寫字板和其他人機(jī)接口設(shè)備的支持逐漸從原聲卡上的“MIDI/游戲”接口和PS/2接口上轉(zhuǎn)移到USB上。現(xiàn)在帶著USB轉(zhuǎn)PS/2接口轉(zhuǎn)換插頭的USB鍵盤鼠標(biāo)相當(dāng)普遍,他們可以使用任意2種接口之一。
使用專用鍵盤鼠標(biāo)的蘋果電腦1999年一月也開始使用USB接口。最初的IPOD只有IEEE1394接口,后來在3G的IPOD,蘋果電腦開始支持USB2.0,但是還不能用作充電,現(xiàn)在的IPOD,已經(jīng)全面兼容USB與IEEE1394,兩者均可充電以及連接計(jì)算機(jī)。
擴(kuò)展
PictBridge標(biāo)準(zhǔn)可以使得消費(fèi)者使用的圖形設(shè)備彼此互通(例如數(shù)碼相機(jī)直接通過打印機(jī)輸出)。一般它使用USB做為其底層通信協(xié)議。
評(píng)論