阅读:679回复:0
metalwing和jinghuiren各位高手请进!关于D12!
我按照usbprint11说明中的设置重新设置了描述符,枚举过程图如下:
可是为何我进行设置配置之后,请求失败呢? 一下将各描述符贴出,请各位指出不足之处。多谢! USB_DEVICE_DESCRIPTOR DeviceDescr = { sizeof(USB_DEVICE_DESCRIPTOR), // 设备描述符长度, =0x12 USB_DEVICE_DESCRIPTOR_TYPE, // 设备描述符类型, =0x01 0x0110, // 协议版本, =1.10 0, // 设备类型 0, // 设备子类 0, // 设备协议 EP0_PACKET_SIZE,// 端点0最大数据包大小, =0x10 0x0471, // PHILIPS公司的设备ID 0x0111, // 设备制造商定的产品ID 0x0100, // 设备系列号 0, // iManufacturer 0, // iProduct 0, // iSerialNumber 1 //可能配置数 }; //配置描述符 USB_CONFIGURATION_DESCRIPTOR ConfigDescr = { sizeof(USB_CONFIGURATION_DESCRIPTOR), // 配置描述符的长度, =0x09 USB_CONFIGURATION_DESCRIPTOR_TYPE, // 配置描述符的类型, =0x02 CONFIG_DESCRIPTOR_LENGTH, // 描述符总长度 =0x2e 1, // 只支持1个接口 1, // 配置值 0, // 字符串描述符指针(无) 0x40, // 自供电 0x32 // 最大功耗(100mA) }; //接口描述符 USB_INTERFACE_DESCRIPTOR InterfaceDescr = { sizeof(USB_INTERFACE_DESCRIPTOR), // 接口描述符长度, =0x09 USB_INTERFACE_DESCRIPTOR_TYPE, // 接口描述符类型, =0x04 0, // 接口数,只有1个 0, // 可选配置,只有1个 0x01, // 除端点0的端点索引数目 =0x04 USB_DEVICE_CLASS_PRINTER, // 设备类型 打印机类 1, // 子类代码 0x01, // 协议代码 0 // 字符串描述符指针(无) }; //端点1发送描述符 USB_ENDPOINT_DESCRIPTOR EP1_TXDescr = { sizeof(USB_ENDPOINT_DESCRIPTOR), // 端点描述符长度, =0x07 USB_ENDPOINT_DESCRIPTOR_TYPE, // 端点描述符类型, =0x05 0x81, // 端点1IN USB_ENDPOINT_TYPE_INTERRUPT, // 中断传输, =0x03 EP1_PACKET_SIZE, // 端点最大包的大小, =0x10 10 // 传输间隔时间, =10ms }; //端点1接收描述符 USB_ENDPOINT_DESCRIPTOR EP1_RXDescr = { sizeof(USB_ENDPOINT_DESCRIPTOR), // 端点描述符长度, =0x07 USB_ENDPOINT_DESCRIPTOR_TYPE, // 端点描述符类型, =0x05 0x01, // 端点1OUT USB_ENDPOINT_TYPE_INTERRUPT, // 中断传输, =0x03 EP1_PACKET_SIZE, // 端点最大包的大小, =0x10 10 // 传输间隔时间, =10ms }; //端点2发送描述符 USB_ENDPOINT_DESCRIPTOR EP2_TXDescr = { sizeof(USB_ENDPOINT_DESCRIPTOR), // 端点描述符长度, =0x07 USB_ENDPOINT_DESCRIPTOR_TYPE, // 端点描述符类型, =0x05 0x82, // 端点2IN USB_ENDPOINT_TYPE_BULK, // 批量传输, =0x02 EP2_PACKET_SIZE, // 端点最大包的大小, =0x40 0 // 批量传输时该设置无效 }; //端点2接收描述符 USB_ENDPOINT_DESCRIPTOR EP2_RXDescr = { sizeof(USB_ENDPOINT_DESCRIPTOR), // 端点描述符长度, =0x07 USB_ENDPOINT_DESCRIPTOR_TYPE, // 端点描述符类型, =0x05 0x02, // 端点2OUT USB_ENDPOINT_TYPE_BULK, // 批量传输,=0x02 EP2_PACKET_SIZE, // 端点最大包的大小, =0x40 0 // 批量传输时该设置无效 }; USB_TOTAL_DESCRIPTOR TotalDescriptor= { sizeof(USB_CONFIGURATION_DESCRIPTOR), // 配置描述符的长度, =0x09 USB_CONFIGURATION_DESCRIPTOR_TYPE, // 配置描述符的类型, =0x02 CONFIG_DESCRIPTOR_LENGTH, // 描述符总长度 =0x2e 1, // 只支持1个接口 1, // 配置值 0, // 字符串描述符指针(无) 0x40, // 自供电 0x32, // 最大功耗(100mA) sizeof(USB_INTERFACE_DESCRIPTOR), // 接口描述符长度, =0x09 USB_INTERFACE_DESCRIPTOR_TYPE, // 接口描述符类型, =0x04 0, // 接口数,只有1个 0, // 可选配置,只有1个 0x01, // 除端点0的端点索引数目 =0x04 0x07, //USB_DEVICE_CLASS_PRINTER, // 设备类型 打印机类 0x01, // 子类代码 0x01, // 协议代码 0, // 字符串描述符指针(无) sizeof(USB_ENDPOINT_DESCRIPTOR), // 端点描述符长度, =0x07 USB_ENDPOINT_DESCRIPTOR_TYPE, // 端点描述符类型, =0x05 0x81, // 端点1IN USB_ENDPOINT_TYPE_INTERRUPT, // 中断传输,=0x03 EP1_PACKET_SIZE, // 端点最大包的大小, =0x10 10, // 传输间隔时间, sizeof(USB_ENDPOINT_DESCRIPTOR), // 端点描述符长度, =0x07 USB_ENDPOINT_DESCRIPTOR_TYPE, // 端点描述符类型, =0x05 0x01, // 端点1OUT USB_ENDPOINT_TYPE_INTERRUPT, // 中断传输,=0x03 EP1_PACKET_SIZE, // 端点最大包的大小, =0x10 10, // 传输间隔时间, sizeof(USB_ENDPOINT_DESCRIPTOR), // 端点描述符长度, =0x07 USB_ENDPOINT_DESCRIPTOR_TYPE, // 端点描述符类型, =0x05 0x82, // 端点2IN USB_ENDPOINT_TYPE_BULK, // 中断传输, =0x03 EP2_PACKET_SIZE, // 端点最大包的大小, =0x40 0, // 批量传输时该设置无效 sizeof(USB_ENDPOINT_DESCRIPTOR), // 端点描述符长度, =0x07 USB_ENDPOINT_DESCRIPTOR_TYPE, // 端点描述符类型, =0x05 0x02, USB_ENDPOINT_TYPE_BULK // 中断传输, EP2_PACKET_SIZE, // 端点最大包的大小, 0 // 批量传输时该设置无效 }; |
|
|