USB标准请求.docx

上传人:b****3 文档编号:1936665 上传时间:2022-10-25 格式:DOCX 页数:7 大小:17.94KB
下载 相关 举报
USB标准请求.docx_第1页
第1页 / 共7页
USB标准请求.docx_第2页
第2页 / 共7页
USB标准请求.docx_第3页
第3页 / 共7页
USB标准请求.docx_第4页
第4页 / 共7页
USB标准请求.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

USB标准请求.docx

《USB标准请求.docx》由会员分享,可在线阅读,更多相关《USB标准请求.docx(7页珍藏版)》请在冰豆网上搜索。

USB标准请求.docx

USB标准请求

USB通信需要由端点(endpoint)和管道(pipe)来完成,端点相当于传输的地址,管道相当于传输的路径。

具体定义见USB

2."0协议。

USB设备一旦连接到主机,首先就要与主机进行通信,把设备信息传给

Host,同时Host根据USB设备特性进行适当配置

之后才可以正常使用,而这些工作都是由端点0(USB设备唯一的一个双向

端点)通过默认信息通道(有格式的信息通道)

完成的,这个过程主要是通过控制传输的11种标准请求进行。

/*USB设备请求数据结构*/

typedefstruct_USB_device_request{USB_U8bmRequestType;请求类型

USB_U8bRequest;//USB具体请求

USB_U16wValue;//USB数据,根据不同的请求含义改变

USB_U16windex;//USB请求索引,根据不同的请求含义改变

USB_U16wLength;/数据字节数

}USB_DEViCE_REQUEST;

//DefinitionsofthebitfieldsinthebmRequestTypefieldofasetuppacket.

//定义设置包中USB请求类型(bmRequestType)中各位字段.

//RT==RequestType

//

#defineUSB_RT_DEVICE_TO_HOST0x80〃D输方向(设备到主机)

#defineUSB_RT_TYPE_MASK0x60//D

6.".D5:

保留

#defineUSB_RT_TYPE_STANDARD0x00//D

6.".D5:

标准

#defineUSB_RT_TYPE_CLASS0x20//D

6.".D5:

#defineUSB_RT_TYPE_VENDOR0x40//D

6.".D5:

厂商

#defineUSB_RT_RECIPIENT_MASK0x1F//D

4.".D0:

接收者:

4-31保留

#defineUSB_RT_RECIPIENT_DEVICE0x00//D

4.".D0:

接收者:

0设备

#defineUSB_RT_RECIPIENT_INTERFACE0x01//D

4.".D0:

接收者:

1接口

#defineUSB_RT_RECIPIENT_ENDPOINT0x02//D

4.".D0:

接收者:

2端点

#defineUSB_RT_RECIPIENT_OTHER0x03//D

4.".D0:

接收者:

3其它

USB的标准请求命令(bmRequest)

#defineUSB_R_GET_STATUSOxO获得设备,接口或者端点的某种状态

#defineUSB_R_CLEAR_FEATUREOx清除设备、接口或端点的某种特征。

备:

清除其远程唤醒功能

#defineUSB_R_SET_FEATUREOx(主机要求启动一个在设备、接口或端点上的特征。

#defineUSB_R_SET_ADDRESSOxO为设备设置一个惟一的地址

#defineUSB_R_GET_DESCRIPTOROx(获得设备的某种标准描述符

#defineUSB_R_SET_DESCRIPTOROx为设备新增一个描述符,或更新一个已存在的描述符#defineUSB_R_GET_CONFIGURATIONOx0获得指定设备当前配置的值

#defineUSB_R_SET_CONFIGURATIONOx(激活设备的某个配置

#defineUSB_R_GET_INTERFACEOxO获得设备接口当前工作的选择设置值(AlternateSetting)#defineUSB_R_SET_INTERFACE0x0主机激活设备的某个接口

#defineUSB_R_SYNCH_FRAMEOxO在实时传输中,设备的端点可以以一个次序传输不同大小的数据包

标准的USB设备请求命令是用在控制传输中的初始设置步骤”里的数据包阶段(即DATA0由八个字节构成)。

标准USB设备请求命令共有11个,大小都是8个字节,具有相同的结构,由5个字段构成(字段是标准请求命令的数据部分),结构如下(括号中的数字表示字节数,首字母bm,b,w分别表示位图、字节,双字节):

bmRequestType

(1)+bRequest

(1)+wvalue

(2)+wIndex

(2)+wLength

(2)

各字段的意义如下:

1、bmRequestType:

D7D6D5D4D3D2D1D0

D7=0主机到设备

=1设备到主机

D6D5=00标准请求命令

=01类请求命令

=10用户定义的命令

=11保留值

D4D3D2D1D0=000接收者为设备

=001接收者为设备

=00010接收者为端点

=00011接收者为其他接收者

=其他值保留

2、bRequest:

请求命令代码,在标准的USB命令中,每一个命令都定义了编号,编号的值就为字段的值,编号与命令名称如下(要注意这里的命令代码要与其他字段结合使用,可以说命令代码是标准请求命令代码的核心,正是因为这些命令代码而决定了11个USB标准请求命令):

1)获取状态GetStatus(00H)

A:

[ToDevice获取设备的状态:

*.位0:

自供电(0表示总线供电;1表示自供电).

*.位1:

远程唤醒(0表示不支持远程唤醒;1表示远程唤醒).

*.位2~15:

保留.

*.一般选择总线供电,不支持远程唤醒,所以返回数据就是0x

00."

B:

[ToInterface]获取接口的状态:

*.接口状态的16位字节全部保留,所以返回数据就是0x

00."

C:

[ToEndpoint]获取端点的状态:

*位0:

Halt(0表示端点允许;1表示端点禁止).

*.位1~15:

保留(复位为0).

2)清除特性ClearFeature(01H)

A:

[ToDevice清除设备的远程唤醒功能,并返回一个空包.

B:

[ToEndpoint]解禁端点.

3)设置特性SetFeature(03H)

A:

[ToDevice设置设备的远程唤醒功能,并返回一个空包.

B:

[ToEndpoint]禁止端点.

4)设置地址SetAddress(05H)

A:

设置设备地址.

5)获取描述符GetDescriptor(06H)

A:

[ToDevice获取设备描述符:

*描述当前USB协议的版本号.设备端点0的FIFO大小.USB设备的ID号等.

B:

[ToConfiguration]获取配置描述符:

*描述USB设备接口个数及是否有自供电能力等.

C:

[ToInterface]获取接口描述符:

*.描述端点0以外的物理端点个数等信息.

D:

[ToEndpoint]获取端点描述符:

*.描述端点0各端点的传输类型和最大信息包大小和端点的传输方向(IN/OUT).

6)设置描述符(可选,无法更新)SetDescriptor(07H)

7)获取配置信息GetConfiguration(08H)

8)设置配置SetConfiguration(09H)

A:

[ToConfiguration]设置配置描述符.

B:

[ToInterface]设置接口描述符.

C:

[ToEndpoint]设置端点描述符.

9)获取接口信息GetInterface(0AH)

10)设置接口SetInterface(0BH)

11)SYNCH_FRAME(0CH)用于设备设置和报告一个端点的同步帧.上面的描述符之间有一定的关系,一个设备只有一个设备描述符,而一个

设备描述符可以包含多个配置描述

符,而一个配置描述符可以包含多个接口描述符,一个接口使用了几个端

点,就有几个端点描述符。

这间描述符

是用一定的字段构成的,分别如下说明:

1、设备描述符

struct_DEVICE_DEscriptOR_STRUCT{BYTEbLeng设备描述符的字节数大小,为0x12

BYTEbDescriptorType;/描/述符类型编号,为0x01

WORDbcdUSB;//USB版本号

BYTEbDeviceClass;//US分配的设备类代码,OxO1~Oxfe为标准设备类,0xff为厂商自定义类型//0x00不是在设备描述符中定义的,如HID

BYTEbDeviceSubClass;//us分配的子类代码,同上,值由USB规定和分配的

BYTEbDeviceProtocI;//USB分配的设备协议代码,同上

BYTEbMaxPacketSize0;端//点0的最大包的大小

WORDidVendor;//厂商编号

WORDidProduct;//产品编号

WORDbcdDevice;//设备出厂编号

BYTEiManufacturer;//描述厂商字符串的索引

BYTEiProduct;//描述产品字符串的索引

BYTEiSerialNumber;/描/述设备序列号字符串的索引

BYTEbNumConfiguration;〃可能的配置数量}

2、配置描述符

struct_CONFIGURATION_DEscriptOR_STRUCT{BYTEbLengith备描述符的字节数大小,为0x12

BYTEbDescriptorType;/描/述符类型编号,为0x01

WORDwTotalLength;//配置所返回的所有数量的大小

BYTEbNumInterface;//此配置所支持的接口数量

BYTEbConfigurationVale;//Set_Configuratior命令需要的参数值

BYTEiConfiguration;//描述该配置的字符串的索引值

BYTEbmAttribute;//供电模式的选择

BYTEMaxPower;//设备从总线提取的最大电流}

3、字符描述符

struct_STRING_DEscriptOR_STRUCT{BYTEbLeng设备描述符的字节数大小,为0x12

BYTEbDescriptorType;/描/述符类型编号,为0x01

BYTESomeDescriptor[36];//UNICOD编码的字符串}

4、接口描述符

struct_INTERFACE_DEscriptOR_STRUCT{BYTEbLeng设备描述符的字节数大小,为0x12

BYTEbDescriptorType;/描/述符类型编号,为0x01

BYTEbInterfaceNunber;//接口的编号

BYTEbAlternateSetting;//备用的接口描述符编号

BYTEbNumEndpoints;//该接口使用端点数,不包括端点0

BYTEbInterfaceClass;/接/口类型

BYTEbInterfaceSubClass;接//口子类型

BYTEbInterfaceProtocol;//接口所遵循的协议

BYTEbInterface;//描述该接口的字符串索引值}

5

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1