阅读:1143回复:1
关于D12 Endp1的问题
我做了一个USB键盘,现在枚举通过了,在XP上可以看到"USB 人体学输入输出设备",现在有个问题就是键盘不可以工作,经过我的观察发现,原来根本就产生不了IN中断。我用的是Endp1作为中断IN和中断OUT端点。
我用BusHound附带的BusCommder工具,向设备发送命令,通过端点0 Control In/Out 发送获得设备描述符,配置描述符,字符串描述符命令都可以接收到设备返回的内容,我用端点1的OUT 端点发送数据到设备,也可以成功。但是我要是用端点1的IN 端点 想要让设备给主机发送数据,却不能通过,这时BusCommand就不可以使用了,像死了一样。并且Goodlink灯也没有动静,其他每次发送命令都可以看到灯有闪烁的现象。定点调试也反应了同样的问题,可以看到其他情况都可以进入对应的中断,就是IN不可以进入中断。我想知道为什么会出现IN端点不可以使用呢? 我把我的描述符发过来大家看看有没有问题。我用的是凌阳16位单片机,是小端模式,和51有点不一样。 const USB_DEVICE_DESCRIPTOR DeviceDescr = { sizeof(USB_DEVICE_DESCRIPTOR), USB_DEVICE_DESCRIPTOR_TYPE, 0x00010000, 0, //USB分配的类代码 (已更改用于HID设备) 0, //USB分配的子类代码 0, //USB分配的协议代码 EP0_PACKET_SIZE, 0x00040071, //idVendor 0x00060066, //idProduct 0x00010000, //bcdDevce 0,//1, //iManufactor 0,//2, //iProduct 0,//3, //iSerialNumber 1 //bNumConfigurations }; // 配置描述符 const USB_CONFIGURATION_DESCRIPTOR ConfigDescr = { sizeof(USB_CONFIGURATION_DESCRIPTOR), //09 USB_CONFIGURATION_DESCRIPTOR_TYPE, //02 CONFIG_DESCRIPTOR_LENGTH, //29 1, //0x0001 1, //1 0, //0 0xa0, //总线供电,支持远程唤醒 //0xa0 0xc8 //400mA //0xc8 }; // 接口描述符 const USB_INTERFACE_DESCRIPTOR InterfaceDescr = { sizeof(USB_INTERFACE_DESCRIPTOR), //09 USB_INTERFACE_DESCRIPTOR_TYPE, //04 0, //00 0, //00 NUM_ENDPOINTS, //02 0x03,//原来是USB_CLASS_CODE_TEST_CLASS_DEVICE, 0x01,//原来是USB_SUBCLASS_CODE_TEST_CLASS_D12, 0x01,//原来是USB_PROTOCOL_CODE_TEST_CLASS_D12, 0 }; //HID描述符 const USB_HID_DESCRIPTOR HidDescr= { sizeof(USB_HID_DESCRIPTOR), //09 0x21, //HID描述符 0x00010010, //HID版本号 0x21, //国家代码 0x01, //随后的描述符数,这里只有一个报告描述符 0x22, //随后的描述符类型,这里为报表描述符 (unsigned long int)sizeof(ReportDescr) //报表描述符的长度 }; // 端点1输入描述符 const USB_ENDPOINT_DESCRIPTOR EP1_TXDescr = { sizeof(USB_ENDPOINT_DESCRIPTOR), //07 USB_ENDPOINT_DESCRIPTOR_TYPE, //05 0x81, //输入端点 USB_ENDPOINT_TYPE_INTERRUPT, EP1_PACKET_SIZE, //16字节 0x0a //中断扫描时间:10ms }; // 端点1输出描述符 const USB_ENDPOINT_DESCRIPTOR EP1_RXDescr = { sizeof(USB_ENDPOINT_DESCRIPTOR), USB_ENDPOINT_DESCRIPTOR_TYPE, 0x01, //输出端点 USB_ENDPOINT_TYPE_INTERRUPT, EP1_PACKET_SIZE, 0x0a //中断扫描时间:10ms }; |
|
沙发#
发布于:2008-01-30 10:52
那位朋友给我看看
|
|