自己想做个基于2148的USB口与PC通讯的固件驱动,是在KEIL带的HID例子的基础上改,在改动usbdesc.c这个文件的时候,我把KEIL带的虚拟串口例子的描述搬上去,下载到板子上后,系统可以找到一个USB兼容设备,并且找到了两个虚拟的串口,但是我把他改成了只有一个接口的描述后,系统就找不到USB兼容设备了,只是找到了一个未知设备,但是里面的字符串描述符都没问题,哪位大侠可以指点一下<br />#include "type.h"<br />#include "usb.h"<br />#include "usbcfg.h"<br />#include "usbdesc.h"<br /><br />/* Two interface descriptor for 2 Virtual COM port,, each VCOM uses 3 endpoints */<br />/* The total number of endpoints are 6, 2 interrupt IN for modem status reading,<br />2 BULK OUT for COM TX, and 2 BULK IN for COM RX */<br /> <br />#define NUM_ENDPOINTS 2 <br /><br />/* USB Standard Device Descriptor */<br />const BYTE USB_DeviceDescriptor[] = {<br /> USB_DEVICE_DESC_SIZE, /* bLength */<br /> USB_DEVICE_DESCRIPTOR_TYPE, /* bDescriptorType */<br /> WBVAL(0x0100), /* 1.00 */ /* bcdUSB */<br /> 0x00, /* bDeviceClass */<br /> 0x00, /* bDeviceSubClass */<br /> 0x00, /* bDeviceProtocol */<br /> 64, /* bMaxPacketSize0 */<br /> WBVAL(0xC251), /* idVendor */<br /> WBVAL(0x1305), /* idProduct */<br /> WBVAL(0x0110), /* 1.10 */ /* bcdDevice */<br /> 0x04, /* iManufacturer */<br /> 0x24, /* iProduct */<br /> 0x4A, /* iSerialNumber */<br /> 0x01 /* bNumConfigurations */<br />};<br /><br />/* USB Configuration Descriptor */<br />/* All Descriptors (Configuration, Interface, Endpoint, Class, Vendor */<br />const BYTE USB_ConfigDescriptor[] = {<br />/* Configuration 1 */<br /> USB_CONFIGUARTION_DESC_SIZE, /* bLength */<br /> USB_CONFIGURATION_DESCRIPTOR_TYPE, /* bDescriptorType */<br /> WBVAL( /* wTotalLength */<br /> USB_CONFIGUARTION_DESC_SIZE +<br /> USB_INTERFACE_DESC_SIZE +<br /> NUM_ENDPOINTS * USB_ENDPOINT_DESC_SIZE<br /> ),<br /> 0x01, /* bNumInterfaces */<br /> 0x01, /* bConfigurationValue */<br /> 0x00, /* iConfiguration */<br /> USB_CONFIG_BUS_POWERED | /* bmAttributes */<br /> USB_CONFIG_REMOTE_WAKEUP,<br /> USB_CONFIG_POWER_MA(100), /* bMaxPower */<br />/* Interface 0, Alternate Setting 0, Class Code Unknown */<br /> USB_INTERFACE_DESC_SIZE, /* bLength */<br /> USB_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */<br /> 0x00, /* bInterfaceNumber */<br /> 0x00, /* bAlternateSetting */<br /> NUM_ENDPOINTS, /* bNumEndpoints */<br /> USB_DEVICE_CLASS_VENDOR_SPECIFIC, /* bInterfaceClass, USB_CLASS_VENDOR_SPECIFIC */<br /> 0xFF, /* bInterfaceSubClass, USB_SUBCLASS_CODE_UNKNOWN */<br /> 0xFF, /* bInterfaceProtocol, USB_PROTOCOL_CODE_UNKNOWN */<br /> 0x00, /* iInterface, STR_INDEX_INTERFACE = no_string */<br />/* Endpoint, EP1 Interrupt In */<br /> USB_ENDPOINT_DESC_SIZE, /* bLength */<br /> USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType */<br /> USB_ENDPOINT_IN(1), /* bEndpointAddress */<br /> USB_ENDPOINT_TYPE_INTERRUPT, /* bmAttributes */<br /> WBVAL(0x0040), /* wMaxPacketSize */<br /> 0x20, /* 32ms */ /* bInterval */<br />/* Endpoint, EP2 Bulk Out */<br /> USB_ENDPOINT_DESC_SIZE, /* bLength */<br /> USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType */<br /> USB_ENDPOINT_OUT(1), /* bEndpointAddress */<br /> USB_ENDPOINT_TYPE_INTERRUPT, /* bmAttributes */<br /> WBVAL(0x0040), /* wMaxPacketSize */<br /> 0x20, /* 32ms */<br />/* Terminator */<br /> 0 /* bLength */<br />}; |
|