USB 描述符詳解

2021-07-03 13:28:47 字數 2905 閱讀 3694

usb描述符的分類與介紹

usb的符述符分為幾類?有人可能會答:裝置描述符、配置描述符、介面描述符、端點描述符、字串描述符等。但這裡說的不是這樣的。上面的幾類描述符屬於usb標準描述符。另外還有hid描述符和hub描述符。所以分類是這樣的:

1. 標準描述符

1) 裝置描述符

2) 配置描述符

3) 字串描述符

4) 介面描述符

5) 端點描述符

6) 裝置限定描述符

7) 其他速率配置描述符

2. hid描述符

3. hub描述符

1 標準描述符

標準描述符是指一組裝置描述符,包括裝置描述符、配置描述符、字串描述符、介面描述符、端點描述符、裝置限定描述符和其他速率配置描述符。這七種 描述符具有類似的格式,比如說它們的第乙個欄位都是blength,第二個欄位都是bdescriptortype。七種描述符在使用時以 bdescriptortype欄位來區分。描述符型別與對應的bdescriptortype字段值對應關係為:

1.1 裝置描述符

裝置描述符描述的是裝置的整體資訊,與裝置本身一一對應,乙個裝置只能有乙個裝置描述符。在主機對usb裝置列舉的過程中,首先要做的就是獲取裝置描述符,以對裝置有乙個整體的了解。

裝置描述符由14個字段組成,總長度18位元組:

這些欄位都有乙個小寫字母表示的字首,它們所表示的意思如下:

 b 表乙個位元組,=8bits;

 w 表乙個字,=16bits;

 bm 表按位定址;

 bcd 用bcd碼表示;

 i 表索引值

 id 表標識碼

各欄位含義:

 blength: 表示描述符的長度,對於裝置描述符來說,其值為18,即0x12。

 bdescriptortype: 描述符型別,對應表1中的值,裝置描述符為0x01。

 bcdusb:該裝置遵循的usb版本號,以bcd碼表示,usb1.1為0x0101,usb2.0為0x0200。

 bdeviceclass:該裝置所屬的標準裝置類,usb協議中對常見的裝置進行了分類。該字段值為0x01~0xfe時,表示是usb協議中已定義的裝置類,常用的hid裝置類編號為0x03,其它裝置類編號參:

 bdeviceprotocol:用於表示usb裝置類所採用的裝置類協議,其值和bdeviceclass和bdevicesubclass有關。當此 欄位為0時,表示不使用任何裝置類協議。如果該usb裝置屬於某個裝置類和裝置子類,則應該繼續指明所採用的裝置類協議。當該字段為0xff時,表明裝置 類協議由**商自定義。

 bmaxpacketsize0:用於表示在usb裝置中,端點0所支援最大資料報的長度,它以位元組為單位。對於低速usb設 備,bmaxpacketsize0為8;對於全速usb裝置,bmaxpacketsize0為8、16、32、64;對於高速usb設 備,bmaxpacketsize0為64。

 idvendor:用於表示usb裝置**商的id。usb組織中規定每種產品都必須包含乙個**商id,這樣可以使主機載入合適的驅動程式。

 idproduct:用於表示usb產品的id,由裝置**商提供。idproduct用於表示特定的usb裝置,在usb裝置上電的時候可以幫助usb主機選擇合適的驅動程式。

 bcddevice:用於表示usb裝置的版本號,它以bcd碼的形式表示。一般來說bcddevcie由裝置**商指定,在usb裝置上電的時候可以幫助usb主機選擇合適的驅動程式。

 imanufacturer:用於表示**商字串描述符的索引值。具體字串的內容在後面字串描述符中定義。如果沒有**商字串,可以置0。

 iserialnumber:用於表示裝置序列號字串描述符的索引值,如果沒有,可以置為0。

 bnumconfigurations:用於表示該usb裝置所支援的配置數。

1.2 配置描述符

乙個usb裝置可以有多種配置,不同的配置使裝置工作在不同的狀態下,每個配置必須有乙個配置描述符。其格式包括8個字段,共9位元組。

各個字段含義:

 blength:用於表示配置描述符的長度,固定為9個位元組,即0x09。

 bdescriptortype:用於表示配置描述符的型別值,固定為0x02。

 wtotallength:用於表示配置資訊的總長度,包括配置描述符、介面描述符、端點描述符長度的總和。

 bnuminte***ces:用於表示配置所支援的介面數。一般來說,usb裝置的介面至少有乙個,因此其最小值為1。

 bconfigurationvalue:用於表示usb裝置的配置值。

 iconfiguration:用於指出配置字串描述符的索引值。具體字串的內容在後面字串描述符中定義。如果沒有配置字串,可以置為0。

 bmattributes:用於表示usb裝置特性。bmattributes是接位定址的,第6位置1表示使用匯流排電源;第5位置1表示支援遠端喚醒功能;該欄位其他位均保留,一般來說,第0~4位置0即可,第7位置1即可。

 bmaxpower:用於表示usb裝置執行時所需要消耗的匯流排電流,單位以2ma為基準。usb裝置可以從usb匯流排上獲得最大的電流為500ma,因此bmaxpower欄位的最大值可以設定為250。

1.3 字串描述符

在usb協議中字串描述符是可選的。字串描述符用於儲存一些**商名稱、產品序列號等文字資訊。它的長度是不固定的,隨字串的數量和資訊的長度變化而變化。其格式如下:

各欄位含義:

 blength:字串描述符的長度,其值應為n+2。

 bdescriptortype:字串描述符的型別值,為0x03。

 bstring:unicode編碼的字串。

1.4 介面描述符

介面是端點的集合,負責完成usb的特定功能,例如資料的輸入輸出。介面描述符用於描述乙個介面,包含了介面的特性,如端點個數,所屬裝置類和子類等。它有9個字段,共9位元組。其格式如下:

關於usb描述符

usb 的描述符主要有裝置描述符,裝置限定描述符,介面描述符,端點描述符,字串描述符等等,usb的描述符之間的關係是一層一層的,首先最上層的是裝置描述符,然後是配置描述符,在下面的是介面描述符,最後是端點描述符.描述符在乙個usb的裝置中所起的作用是十分重要的,在裝置連線到usb主機以後,主機首先是...

USB描述符總結

usb描述符總結 參考 一 usb描述符 主機識別usb裝置的根據,主機根據裝置的描述符來載入相應的驅動程式。二 描述符的分類 三大類 標準類描述符 裝置類描述符 廠商描述符。具體如下圖 三 使用的幾種類 裝置類deviceclass 介面類inte ceclass 四 標準描述符 1.裝置描述符 ...

USB描述符舉例

裝置描述符給出了usb裝置的一般資訊。這包括裝置及裝置設定全程起作用的資訊,乙個usb裝置只能有乙個裝置描述符。所有的usb裝置都有預設的控制管道,在裝置描述符中給定了預設控制管道最大包長度。rom usb device descriptor device dsc 配置描述符給出了裝置配置的資訊,描...