熟女俱乐部五十路二区av,又爽又黄禁片视频1000免费,国产卡一卡二卡三无线乱码新区,中文无码一区二区不卡αv,中文在线中文a

新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > USB設備驅(qū)動開發(fā)-USB協(xié)議相關(guān)(3)

USB設備驅(qū)動開發(fā)-USB協(xié)議相關(guān)(3)

作者: 時間:2016-12-12 來源:網(wǎng)絡 收藏

一、USB設備標準請求

本文引用地址:http://www.bjwjmy.cn/article/201612/329079.htm

USB設備標準請求是為所有USB設備定義的操作,即使設備還沒有被分配地址或還沒有被配置都必須相應設備標準請求。

標準特性選擇子

特性選擇子用于對特性使能或設置特性,若一個不支持或非法的請求發(fā)送給USB設備,設備將在數(shù)據(jù)或狀態(tài)傳輸階段返回STALL作為響應。若設備的默認控制通道由于錯誤不能通信,則設備將被reset來清除錯誤狀態(tài)并重啟默認控制通道。

1. Clear Feature

wValue中的特性選擇子必須和操作對象匹配,即設備特性對應設備,接口特性對應接口,端點特性對應端點。

若對應的特性不存在或不能被清除,或者操作的接口或端點不存在,將返回一個請求錯誤狀態(tài)。

在Default狀態(tài):設備接收到這個請求后的操作是未定義的;

在Address狀態(tài):對設備操作是有效的,但對接口和端點的操作將返回請求錯誤;

在Configured狀態(tài):所有的請求都是有效的。

其中TEST_MODE特性不能被ClearFeature請求清除。

2. Set Feature

設置或使能特性

3. Get Configuration

返回當前的設備配置值(一個字節(jié)),在配置狀態(tài)下,返回非0的bConfigurationValue值。若設備沒有配置則返回0。

4. Set Configuration

設置設備的配置

在wValue的低字節(jié)是配置值,若配置值為0,則設備將仍處于Address狀態(tài)。

5. Set Descriptor

用于更新已有的描述符或新增描述符。

6. Get Descriptor

其中wValue的高字節(jié)表示描述符的類型,如下表所示;低字節(jié)表示描述符的索引。一個設備可以實現(xiàn)多個配置描述符和字符串描述符,因此只有這兩種描述符才會用到索引值。

7. Get Interface

這個請求返回接口目前選擇的可選設置(Alernate Setting)。

8. Set Interface

設置接口

9. Get Status

返回操作對象的狀態(tài)。

10. Set Address

設置設備的地址

只允許對設備描述符、配置描述符和字符串描述符進行操作。

11. Synch Frame

在等時傳輸方式中,用于設置并返回端點的同步幀。

二、描述符

USB設備使用描述符來報告屬性,一個描述符即預先定義好的數(shù)據(jù)結(jié)構(gòu)。每個描述符的第一個字節(jié)表示描述符的長度,第二個字節(jié)表示描述符的類型。

在描述符中可能包含有對字符串描述符的引用來描述這個描述符,若設備不支持字符串描述符,則其他描述符中字符串描述符引用域必須存儲,但需要設置為0來描述沒有可用字符串描述符。

1. 設備描述符

設備描述符用于描述一個設備的通用信息,一個USB設備只具有一個設備描述符。高速設備的設備描述符有一個版本號bcdUSB,0200H來表示USB 2.0

struct usb_device_descriptor {

__u8 bLength;

__u8 bDescriptorType;

__le16 bcdUSB;

__u8 bDeviceClass;

__u8 bDeviceSubClass;

__u8 bDeviceProtocol;

__u8 bMaxPacketSize0;

__le16 idVendor;

__le16 idProduct;

__le16 bcdDevice;

__u8 iManufacturer;

__u8 iProduct;

__u8 iSerialNumber;

__u8 bNumConfigurations;

} __attribute__ ((packed));

2. Device_Qualifier

對于高速設備,若在其他速度下需要更改一些配置,這需要定義這個描述符。

3. 配置描述符

配置描述符描述一個設備配置的信息,其中的bConfigurationValue值作為傳輸傳遞給SetConfiguration()請求,使設備采用這個配置。

一個USB設備有一個或多個配置描述符,一個配置描述符擁有一個或多個接口,一個接口擁有0個或多個端點。在同一個配置中,一個端點不能在不同的接口之間共用,但可以在同一個接口的不同設置共有。但在不同的配置中,端點可以在接口之間共用。

一旦配置選定,則設備一般僅少有的可變設置,即接口擁有可選設置則才可能更改設置。

4. 接口描述符

接口描述符描述一個配置中的接口。一個配置提供一個或多個接口。當一個配置支持一個或多個接口時,接口描述將作為配置描述符的一部分返回,端點描述符將緊跟著接口描述符返回。接口描述符不能通過GetDescriptor()或SetDescriptor訪問。

一個接口包含可變設置來允許在設備配置后允許端點或一些特性做一定的改變。接口默認的設置都為0,SetInterface()請求用于選擇一個設置或返回默認的設置。GetInterface()請求返回選擇的設置。

如果一個設備配置支持單個接口并此接口有兩個可選設置,配置描述表返回以后會緊跟著返回bInterfaceNumber與bAlternateSetting域皆為0的第一個設置的接口描述表及相關(guān)的結(jié)點描述表,而隨之后是另一個設置接口描述表與結(jié)點描述表第二個接口描述表的bInterfaceNumber域也應為0但bAlternate Setting域應為1 。

如果一個接口僅使用節(jié)點0則接口描述表以后就不再返回節(jié)點描述表并且此接口表示的是一個請求接口它使用連在節(jié)點0上的缺省通道在這種情況下bNumberEndpoints域應被設置成0 ,一個接口描述表的節(jié)點個數(shù)不把結(jié)點0計在內(nèi)。

5. 端點描述符

接口的端點擁有自己的描述符,描述符包含主機分配每個端點帶寬的信息。每個端點描述符是作為配置信息的一部分在GetDescriptor請求中返回的。端點描述符不能直接通過GetDescriptor()或SetDescriptor()請求訪問,這點與接口描述符一致。端點0沒有端點描述符。

6. 字符串描述符

字符串描述符是可選的,但若設備不支持字符串描述符,則設備中配置描述符、接口描述符中對字符串描述符的引用值必須設置為0。字符串描述符使用UNICODE編碼方式。USB設備可能需要支持多種語言,字符串描述符中16位的LANGID來表示支持的語言。




評論


技術(shù)專區(qū)

關(guān)閉