| | | |
那可能是固件驱动有问题
下位机固件应该对主机的GerReport命令作出正确响应,例如本站USB开源项目的实例代码如下(当然您的接口芯片不同,需要根据实际情况完善)
- void get_descriptor(void)
- {
- INT8U bDescriptor = MSB(ControlData.DeviceRequest.wValue);
-
-
-
- if (bDescriptor == USB_DEVICE_DESCRIPTOR_TYPE)
- {
- code_transmit((INT8U *)&DeviceDescr, sizeof(USB_DEVICE_DESCRIPTOR));
- }
- else if (bDescriptor == USB_CONFIGURATION_DESCRIPTOR_TYPE)
- {
- if (ControlData.DeviceRequest.wLength > CONFIG_DESCRIPTOR_LENGTH)
- {
- ControlData.DeviceRequest.wLength = CONFIG_DESCRIPTOR_LENGTH;
- }
- code_transmit((INT8U *)&(usb_descr.ConfigDescr), ControlData.DeviceRequest.wLength);
-
-
-
- }
-
-
- else if(bDescriptor == USB_REPORT_DESCRIPTOR_TYPE)
- {
-
-
- ControlData.pData=(INT8U *)(MouseReportDescriptor);
-
-
-
-
- code_transmit((INT8U *)(MouseReportDescriptor),sizeof(MouseReportDescriptor));
- }
-
- else
- {
-
- stall_ep0();
-
- }
-
- }
回复楼主 回复第3楼
|