USB的描述符及各种描述符之间的依赖关系.doc_第1页
USB的描述符及各种描述符之间的依赖关系.doc_第2页
USB的描述符及各种描述符之间的依赖关系.doc_第3页
USB的描述符及各种描述符之间的依赖关系.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

USB的描述符及各种描述符之间的依赖关系描述符都有自己独立的编号,如下:#define DEVICE_DESCRIPTOR 0x01/设备描述符#define CONFIGURATION_DESCRIPTOR 0x02/设置描述符#define STRING_DESCRIPTOR 0x03/字符串描述符#define INTERFACE_DESCRIPTOR 0x04/接口描述符#define ENDPOINT_DESCRIPTOR 0x05/端点描述符 下面分别周详介绍一下各描述符。1.设备描述符/定义标准的设备描述符结构typedef struct _DEVICE_DCESCRIPTOR_STRUCTBYTE blength; /设备描述符的字节数大小BYTE bDescriptorType; /设备描述符类型编号WORD bcdUSB; /USB版本号BYTE bDeviceClass; /USB分配的设备类代码BYTE bDeviceSubClass; /USB分配的子类代码BYTE bDeviceProtocol; /USB分配的设备协议代码BYTE bMaxPacketSize0; /端点0的最大包大小WORD idVendor; /厂商编号WORD idProduct; /产品编号WORD bcdDevice; /设备出厂编号BYTE iManufacturer; /设备厂商字符串的索引BYTE iProduct; /描述产品字符串的索引BYTE iSerialNumber; /描述设备序列号字符串的索引BYTE bNumConfigurations; /可能的设置数量DEVICE_DESCRIPTOR_STRUCT, * pDEVICE_DESCRIPTOR_STRUCT;/实际的设备描述符示例code DEVICE_DESCRIPTOR_STRUCT device_descriptor= /设备描述符sizeof(DEVICE_DESCRIPTOR_STRUCT), /设备描述符的字节数大小,这里是18字节DEVICE_DESCRIPTOR, /设备描述符类型编号,设备描述符是010x1001, /USB版本号,这里是USB01.10,即USB1.1。由于51是大端模式,所以高低字节交换0x00, /USB分配的设备类代码,0表示类型在接口描述符中定义0x00, /USB分配的子类代码,上面一项为0时,本项也要设置为00x00, /USB分配的设备协议代码,上面一项为0时,本项也要设置为00x10, /端点0的最大包大小,这里为16字节0x7104, /厂商编号,这个是需要跟USB组织申请的ID号,表示厂商代号。0xf0ff, /该产品的编号,跟厂商编号一起配合使用,让主机注册该设备并加载相应的驱动程式0x0100, /设备出厂编号0x01, /设备厂商字符串的索引,在获取字符串描述符时,使用该索引号来识别不同的字符串0x02, /描述产品字符串的索引,同上0x03, /描述设备序列号字符串的索引,同上0x01 /可能的设置数为1,即该设备只有一个设置;2.设置描述符/定义标准的设置描述符结构typedef struct _CONFIGURATION_DESCRIPTOR_STRUCTBYTE bLength; /设置描述符的字节数大小BYTE bDescriptorType; /设置描述符类型编号WORD wTotalLength; /此设置返回的所有数据大小BYTE bNumInterfaces; /此设置所支持的接口数量BYTE bConfigurationValue; /Set_Configuration命令所需要的参数值BYTE iConfiguration; /描述该设置的字符串的索引值BYTE bmAttributes; /供电模式的选择BYTE MaxPower; /设备从总线提取的最大电流CONFIGURATION_DESCRIPTOR_STRUCT, * pCONFIGURATION_DESCRIPTOR_STRUCT;2.接口描述符/定义标准的接口描述符结构typedef struct _INTERFACE_DESCRIPTOR_STRUCTBYTE bLength; /接口描述符的字节数大小BYTE bDescriptorType; /接口描述符的类型编号BYTE bInterfaceNumber; /该接口的编号BYTE bAlternateSetting; /备用的接口描述符编号BYTE bNumEndpoints; /该接口使用的端点数,不包括端点0BYTE bInterfaceClass; /接口类型BYTE bInterfaceSubClass; /接口子类型BYTE bInterfaceProtocol; /接口遵循的协议BYTE iInterface; /描述该接口的字符串索引值INTERFACE_DESCRIPTOR_STRUCT, * pINTERFACE_DESCRIPTOR_STRUCT;4.端点描述符/定义标准的端点描述符结构typedef struct _ENDPOINT_DESCRIPTOR_STRUCTBYTE bLegth; /端点描述符字节数大小BYTE bDescriptorType; /端点描述符类型编号BYTE bEndpointAddress; /端点地址及输入输出属性BYTE bmAttributes; /端点的传输类型属性WORD wMaxPacketSize; /端点收、发的最大包大小BYTE bInterval; /主机查询端点的时间间隔ENDPOINT_DESCRIPTOR_STRUCT, * pENDPOINT_DESCRIPTOR_STRUCT;下面是个设置描述符集合的定义typedef struct _CON_INT_ENDP_DESCRIPTOR_STRUCTCONFIGURATION_DESCRIPTOR_STRUCT configuration_descriptor;INTERFACE_DESCRIPTOR_STRUCTinterface_descritor;ENDPOINT_DESCRIPTOR_STRUCTendpoint_descriptorENDPOINT_NUMBER;CON_INT_ENDP_DESCRIPTOR_STRUCT;设置描述符集合的示例code CON_INT_ENDP_DESCRIPTOR_STRUCT con_int_endp_descriptor=/设置描述符集合/configuration_descriptor /设置描述符sizeof(CONFIGURATION_DESCRIPTOR_STRUCT), /设置描述符的字节数大小,这里为9CONFIGURATION_DESCRIPTOR, /设置描述符类型编号,设置描述符为2(sizeof(CONFIGURATION_DESCRIPTOR_STRUCT)+sizeof(INTERFACE_DESCRIPTOR_STRUCT)+sizeof(ENDPOINT_DESCRIPTOR_STRUCT)*ENDPOINT_NUMBER)*256+(sizeof(CONFIGURATION_DESCRIPTOR_STRUCT)+sizeof(INTERFACE_DESCRIPTOR_STRUCT)+sizeof(ENDPOINT_DESCRIPTOR_STRUCT)*ENDPOINT_NUMBER)/256, /设置描述符集合的总大小0x01, /只包含一个接口0x01, /该设置的编号0x00, /iConfiguration字段0x80, /采用总线供电,不支持远程唤醒0xC8 /从总线获取最大电流400mA,/interface_descritor /接口描述符sizeof(INTERFACE_DESCRIPTOR_STRUCT), /接口描述符的字节数大小,这里为9INTERFACE_DESCRIPTOR, /接口描述符类型编号,接口描述符为30x00, /接口编号为40x00, /该接口描述符的编号为0ENDPOINT_NUMBER, /非0端点数量为2,只使用端点主端点输入和输出0x08, /定义为USB大容量存储设备0x06, /使用的子类,为简化块命令0x50, /使用的协议,这里使用单批量传输协议0x00 /接口描述符字符串索引,为0,表示没有字符串,/endpoint_descriptor /主端点输入描述sizeof(ENDPOINT_DESCRIPTOR_STRUCT),/端点描述符的字节数大小,这里为7ENDPOINT_DESCRIPTOR, /端点描述符类型编号,端点描述符为5MAIN_POINT_IN, /端点号,主输入端点ENDPOINT_TYPE_BULK, /使用的传输类型,批量传输0x4000, /该端点支持的最大包尺寸,64字节0x00 /中断扫描时间,对批量传输无效, /主端点输出描述sizeof(ENDPOINT_DESCRIPTOR_STRUCT),/端点描述符的字节数大小,这里为7ENDPOINT_DESCRIPTOR, /端点描述符类型编号,端点描述符为5MAIN_POINT_OUT, /端点号,主输出端点ENDPOINT_TYPE_BULK, /使用的传输类型,批量传输0x4000, /该端点支持的最大包尺寸,64字节0x00 /中断扫描时间,对批量传输无效;其中关于端点的类型定义如下/定义的端点类型#define ENDPOINT_TYPE_CONT

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论