USB标准请求.docx
- 文档编号:1936665
- 上传时间:2022-10-25
- 格式:DOCX
- 页数:7
- 大小:17.94KB
USB标准请求.docx
《USB标准请求.docx》由会员分享,可在线阅读,更多相关《USB标准请求.docx(7页珍藏版)》请在冰豆网上搜索。
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文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- USB 标准 请求