久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

USB2.0描述符小結

作者:佚名   來源:不詳   點擊數:  更新時間:2014年08月17日   【字體:
   描述符(descriptor)是一個數據結構,使主機了解設備的格式化信息。每一個描述符可能包含整個設備的信息,或是設備中的一個組件。所有的USB外圍設備,都必須對標準的USB描述符作出響應。

    在檢測設備的期間,主機使用控制傳輸來要求設備傳回描述符。表1列出了描述符的類型。在檢測設備的過程中,要求的描述符首先是整個設備,然后是每一個設置配置,每一個設置配置的接口,最后是每一個接口的斷點。

表1 標準描述符類型

 

描述符類型

說明

是否需要

Device

設備

Device_qualifier

 

只有同時支持全速與高速的設備才需要,其它設備不允許

Configuration

配置

Other_speed_configuration

 

只有同時支持全速與高速的設備才需要,其它設備不允許

Interface

接口

Endpoint

端點

否,如果設備只使用端點0

String

字符串

否,選擇性的描述文字

Interface_power

 

否。支持接口層級的電源管理

 

    每一個設備只能有一個設備描述符,設備描述符包含整個設備的信息,以及設備支持的配置號碼。

    每一個設備會有一個或多個配置描述符,來包含設備的電源管理使用,以及設置配置所支持的接口號碼。每個接口描述符有0個或多個端點描述符,來包含與端點通信所需的信息。沒有端點描述符的接口,仍然可以使用通信用的控制端點。

    當設備接收到一個配置描述符的要求,應該傳回該配置描述符以及所有該配置的接口、端點以及其他附屬描述符,來達到所要求的字節數目。

    同時支持全速與高速的設備,還支持兩個額外的描述符:device_qualifier與other_speed_configuration,這兩個額外的描述符與其他附屬描述符,包含了使用非目前選擇的速度時的設備行為。字符串描述符用來儲存廠商或設備名稱等文字,其他描述符可以儲存這些字符串描述符的索引值。之極可以使用get_descriptor要求,來讀取這些字符串描述符。

    USB2.0規范新增了一個interface_power描述符,該功能使得除了設備層級外,接口層級也能夠啟用電源管理。每一個描述符都包含有一個數值,來描述其描述符的類型。表2列出了USB和HID規范所定義的數值。此數值的位7永遠是0,位6和位5用來識別描述符的類型(00h是標準,01h是類別,02h是廠商,03h是保留),位4到位0則用來識別描述符。

表2 描述符的數值

 

類型

數值(十六進制)

描述符

標準

(standard)

01

device

02

configuration

03

String

04

Interface

05

Endpoint

06

Device_qualifier

07

Other_speed_configuration

08

Interface_power

類別

(class)

21

HID

29

Hub

HID類別特定

22

Report

23

physical

 

每一個描述符包含有數個字段,大部分的字段使用前置名稱(prefix),來指出該字段的格式與內容。例如:

b表示該字段為一個字節的長度;

w表示兩個字節的長度;

bm表示位映射,即字節中的每一位都對應不同的含義;

bcd表示BCD碼;

i表示索引或是指針(index);

id表示標志符(identifier)。

 

       設備描述符

    設備描述符是在設備連接時,主機第一個讀取的描述符,包含了主機需要從設備讀取的基本信息。設備描述符有14個字段,如表3所示。依照功能來分,設備描述符的字段包含了描述符本身、設備、配置以及類別4大類。

表3 設備描述符

 

位移

十進制

字段

大小

(字節)

數值

說明

0

bLength

1

數字

描述符大小(字節)

1

bDescriptorType

1

常數

常數Device(01h)

2

bcdUSB

2

BCD

USB規范版本號碼

4

bDeviceClass

1

類別

類別碼

5

bDeviceSubclass

1

子類別

子類別碼

6

bDeviceProtocol

1

協議

協議碼

7

bMaxPacketSize(0)

1

數字

端點0的最大信息包大小

8

idVendor

2

ID

廠商ID

10

idProduct

2

ID

產品ID

12

bcdDevice

2

BCD

設備版本號碼

14

iManufacturer

1

索引值

制造者的字符串描述符的索引值

15

iProduct

1

索引值

產品的字符串描述符的索引值

16

iSerialNumber

1

索引值

序號的字符串描述符的索引值

17

bNumConfigurations

1

數字

可能配置的數目

 

 

       Device_qualifier描述符

    同時支持全速與高速的設備,必須有一個device_qualifier描述符。當設備轉換速度的時候,設備描述符中的某些字段可能改變。Device_qualifier描述符儲存當前不適用的速度的字段數值。設備描述符與device_qualifier描述符中的字段數值,視所選擇的速度來做交替。

表4 device_qualifier描述符

 

位移

十進制

字段

大小

(字節)

數值

說明

0

bLength

1

數字

描述符大小(字節)

1

bDescriptorType

1

常數

常數Device_qualifier(06h)

2

bcdUSB

2

BCD

USB規范版本號碼

4

bDeviceClass

1

類別

類別碼

5

bDeviceSubclass

1

子類別

子類別碼

6

bDeviceProtocol

1

協議

協議碼

7

bMaxPacketSize(0)

1

數字

端點0的最大信息包大小

8

bNumConfigurations

1

數字

可能配置的數目

9

Reserved

1

0

保留

 

       配置描述符

    在讀取設備描述符后,主機可以讀取該設備的配置、接口以及端點描述符。每一個設備都至少有一個配置描述符,用來描述該設備的特性與能力。通常一個設置配置就已經足夠,不過多用途或模式的設備可以支持多個設置配置,在同一時間只能有一個作用。

    每一個設置配置都需要一個描述符,此描述符包含設備中的電源使用以及支持的接口數目。每一個配置描述符都有附屬的描述符,包含一個或多個接口描述符,以及選擇性的端點描述符。

配置描述符有8個字段,如表5所示,在許多設置配置中,有些字段并不使用。

表5 配置描述符

 

位移

十進制

字段

大小

(字節)

數值

說明

0

bLength

1

數字

描述符大小(字節)

1

bDescriptorType

1

常數

常數configuration(02h)

2

wTotalLength

2

數字

此配置傳回的所有數據大小(字節)

4

bNumInterfaces

1

數字

此配置支持的接口數目

5

bConfigurationValue

1

數字

Set_configuration與get_configuration要求的標識符

6

iConfigurtion

1

索引值

此配置的字符串描述符的索引值

7

bmAuributes

1

位圖

自身電源/總線電源以及遠程喚醒設置

8

MaxPower

1

mA

需要總線電源,標識法為(最大mA/2)

 

      bNumInterfaces:此配置支持的接口數目,最小值是1;

      bmAuributes:如果設備是自身電源,位6 = 1;位6 = 0 表示此配置是總線供電。如果設備支持遠程喚醒(remote wakeup)特性,位5 = 1。如果總線無作用超過3ms,USB必須進入掛起(suspend)狀態,如果在掛起狀態的設備被主機要求,支持遠程喚醒特性(并且啟用)的設備可以要求主機重新通信。

      MaxPower:指定設備所需的總線電流,以mA為單位。此字段等于所需電流的一半,例如設備需要200mA,則MaxPower取100mA。最大的允許電流500mA,如果主機發現所要求的電流無法得到,則會拒絕設置設備的配置。

       Other_speed_configuration描述符

同時支持全速與高速的設備,必須有一個Other_speed_configuration描述符。此描述符的結構與配置描述符相同,唯一的差別是other_speed_configuration描述符描述的是當設備是在非作用中速度時的配置,Other_speed_configuration描述符與設備配置描述符相同。

表6 other_speed_configuration描述符

 

位移

十進制

字段

大小

(字節)

數值

說明

0

bLength

1

數字

描述符大小(字節)

1

bDescriptorType

1

常數

常數other_speed_configuration(07h)

2

wTotalLength

2

數字

此配置傳回的所有數據大小(字節)

4

bNumInterfaces

1

數字

此配置支持的接口數目

5

bConfigurationValue

1

數字

Set_configuration與get_configuration要求的標識符

6

iConfigurtion

1

索引值

此配置的字符串描述符的索引值

7

bmAuributes

1

位圖

自身電源/總線電源以及遠程喚醒設置

8

MaxPower

1

mA

需要總線電源,標識法為(最大mA/2)

 

       接口描述符

    接口表示被設備的特性或功能所使用的端點、配置的接口描述符,包含該接口所支持的端點信息。

每一個設置配置必須支持一個接口,對許多設備來說,一個接口就已經足夠,不過一個設置配置,可以同時又多個作用中的接口。每一個接口有它自己的接口描述符,此接口所支持的所有端點又各有一個附屬描述符。

如果一個設備擁有同時多個作用中接口的設置配置,它就是一個復合設備,主機會為每一個接口,加載一個驅動程序。

    一個設置配置可以支持多個互不相關的接口,改變接口比改變設置配置容易。主機使用set_interface來要求一個接口,并且以get_interface要求來讀取目前接口的號碼。每一個接口都有它自己的接口描述符與附屬描述符。

表7 接口描述符

 

位移

十進制

字段

大小

(字節)

數值

說明

0

bLength

1

數字

描述符大小(字節)

1

bDescriptorType

1

常數

常數interface(04h)

2

bInterfaceNumber

1

數字

識別此接口的數字

3

bAlternateSetting

1

數字

用來選擇一個替代設置的數值

4

bNumEndpoints

1

數字

除了端點0外,支持的端點數量

5

bInterfaceClass

1

類別

類別碼

6

bInterfaceSubclass

1

子類別

子類別碼

7

bInterfaceProtocol

1

協議

協議碼

8

iInterface

1

索引值

此接口的字符串描述符的索引值

 

       端點描述符

    每一個指定在接口描述符內的端點,都有一個端點描述符。斷掉0沒有端點描述符,因為每一個端點都必須支持斷點0。設備描述符包含最大信息包大小的信息,而端點描述符則是定義端點的其他信息。

表8 端點描述符

 

位移

十進制

字段

大小

(字節)

數值

說明

0

bLength

1

數字

描述符大小(字節)

1

bDescriptorType

1

常數

常數endpoint(05h)

2

bEndpointAddress

1

端點

端點數目與方向

3

bmAttributes

1

數字

支持的傳輸類型

4

wMaxPacketSize

2

數字

支持的最大信息包大小

6

bInterval

1

數字

最大延遲/輪詢時距/NAK速率

 

      bEndpointeAddress:包含端點的數目與方向,位0-3是端點的數目,低速設備最多可以有3個端點(編號0-2),全速與高速設備可以有16個端點9編號0-15)。位7是端點方向,0表示out,1表示in,Ignored表示雙向(控制傳輸)。位4 – 6不使用,必須是0。

      bmAttributes:位1和0指定端點支持的傳輸類型:00表示控制傳輸,01表示實時傳輸,10表示批量傳輸,11表示中斷傳輸。如果是端點0,默認是控制傳輸。USB2.0使用位2-5作為全速與高速的實時端點。位3和位2指定一個同步類型:00是沒有同步(no synchronization),01是異步(asynchronous),10是adaptive,11是同步的。位5和位4指定使用類型:00是數據端點(data endpoint),01是反饋端點(feedback endpoint),10是隱含反饋數據端點(implicit feedback data endpoint),11保留。如果是非實時端點,位2-位5必須是0。所有的位6與位7必須是0。

       字符串描述符

字符串描述符包含描述的文字,USB規范定義了制造者、產品、序號、配置以及接口的字符串描述符,字符串描述符是選擇性的,設備可以支持額外的字符串描述符。

表9 字符串描述符

 

位移

十進制

字段

大小

(字節)

數值

說明

0

bLength

1

N+2

描述符大小(字節)

1

bDescriptorType

1

常數

常數STRING(03h)

2

bString

不定

數字

如果是字符串描述符0,此字段是一個1個或更多語言標識符碼的數組。如果是其他的字符串描述符,此字段是一個Unicode字符串

 

 

關閉窗口
主站蜘蛛池模板: 日韩国产精品一区二区三区 | 国产精品一区二区久久 | 天天干天天操天天爽 | 亚洲福利av| 99色视频| 亚洲国产精品日本 | 精品无码久久久久久国产 | 精品精品视频 | 99热视| 日韩欧美中文字幕在线观看 | 免费一级黄色录像 | 久久久久久久久淑女av国产精品 | 中文字幕高清在线 | 中文字幕第十一页 | 日本一区二区三区四区 | 中文区中文字幕免费看 | 欧美精品在线免费 | 一区二区三区在线电影 | 亚洲性爰| 欧美一区二 | 日韩一二区 | 免费观看毛片 | 亚洲资源在线 | 99久久99久久精品国产片果冰 | 一区免费| 日韩三级一区 | 国产精品视频久久久 | 精品国产免费人成在线观看 | 亚洲一区二区av在线 | 国产乱码精品一区二区三区中文 | 成人精品久久久 | 中文字幕的av | 欧美日韩国产精品一区 | 99精品国产一区二区三区 | 美日韩视频 | 欧美在线一区二区三区四区 | 中文字字幕一区二区三区四区五区 | 国产欧美日韩在线观看 | 日韩欧美在线观看视频网站 | 午夜www| 欧美日韩国产一区二区三区 |