uint8_t gu8DeviceDescriptor[] = {
LEN_DEVICE, /* bLength */
DESC_DEVICE, /* bDescriptorType */
0x00, 0x02, /* bcdUSB */
0x00, /* bDeviceClass */
0x00, /* bDeviceSubClass */
0x00, /* bDeviceProtocol */
CEP_MAX_PKT_SIZE, /* bMaxPacketSize0 */ //64
/* idVendor */
USBD_VID & 0x00FF,
(USBD_VID & 0xFF00) >> 8,
/* idProduct */
USBD_PID & 0x00FF,
(USBD_PID & 0xFF00) >> 8,
0x00, 0x02, /* bcdDevice */
0x00, /* iManufacture - index of string*/
0x00, /* iProduct - index of manufacturer string*/
0x00, /* iSerialNumber - index of product string */
0x01 /* bNumConfigurations */
};
uint8_t gu8ConfigDescriptor[] = {
LEN_CONFIG, /* bLength */
DESC_CONFIG, /* bDescriptorType */
LEN_CONFIG_AND_SUBORDINATE, 0x00, /* wTotalLength */
0x02, /* bNumInterfaces */ //此配置支持的接口数量
0x01, /* bConfigurationValue */ //用SetConofiguration()选择此配置,所指定的配置号
0x00, /* iConfiguration */ //用于描述此配置的字符描述符的索引号
0x80 | (USBD_SELF_POWERED << 6) | (USBD_REMOTE_WAKEUP << 5),/* bmAttributes */ //0x80
USBD_MAX_POWER, /* MaxPower */ //0x64 or 0xfa
/*********** I/F descr: HID ***********/
LEN_INTERFACE, /* bLength */
DESC_INTERFACE, /* bDescriptorType */
0x00, /* bInterfaceNumber */ //接口索引号
0x00, /* bAlternateSetting */ //备用的接口描述符编号
0x01, /* bNumEndpoints */ //此接口使用的端点数
0x03, /* bInterfaceClass */ //接口类型
0x00, /* bInterfaceSubClass */ //接口子类型
HID_NONE, /* bInterfaceProtocol */ //接口遵循的协议,此非键盘鼠标
0x00, /* iInterface */ //用于描述此接口的字符描述符的索引号
/* HID Descriptor */
LEN_HID, /* Size of this descriptor in UINT8s. */
DESC_HID, /* HID descriptor type. */
0x10, 0x01, /* HID Class Spec. release number. */
0x00, /* H/W target country. */
0x01, /* Number of HID class descriptors to follow. */
DESC_HID_RPT, /* Dscriptor type. */
/* Total length of report descriptor. */
HID_DEVICE_REPORT_DESCRIPTOR_SIZE & 0x00FF,
(HID_DEVICE_REPORT_DESCRIPTOR_SIZE & 0xFF00) >> 8,
/* EP Descriptor: interrupt IN. */
LEN_ENDPOINT, /* bLength */
DESC_ENDPOINT, /* bDescriptorType */
(INT_IN_EP_NUM | EP_INPUT), /* bEndpointAddress */
EP_INT, /* bmAttributes */
/* wMaxPacketSize */
EPC_MAX_PKT_SIZE & 0x00FF,
(EPC_MAX_PKT_SIZE & 0xFF00) >> 8,
HID_DEFAULT_INT_OUT_INTERVAL, /* bInterval */
/* EP Descriptor: interrupt OUT. */
LEN_ENDPOINT, /* bLength */
DESC_ENDPOINT, /* bDescriptorType */
(INT_OUT_EP_NUM | EP_OUTPUT), /* bEndpointAddress */
EP_INT, /* bmAttributes */
/* wMaxPacketSize */
EPD_MAX_PKT_SIZE & 0x00FF,
(EPD_MAX_PKT_SIZE & 0xFF00) >> 8,
HID_DEFAULT_INT_OUT_INTERVAL, /* bInterval */
/***** I/F descr: Descriptor of Mass Storage interface *****/
LEN_INTERFACE, /* bLength */
DESC_INTERFACE, /* bDescriptorType */
0x01, /* bInterfaceNumber */ //接口索引号
0x00, /* bAlternateSetting */ //备用的接口描述符编号
0x02, /* bNumEndpoints */ //所使用的端点数
0x08, /* bInterfaceClass */ //接口类型: 0x08- Mass Storage
0x06, /* bInterfaceSubClass */ //接口子类型: 0x05- SFF-8070i 适用移动存储设备 /0x06- SCSI
0x50, /* bInterfaceProtocol */ //接口协议: 0x50-Only BULK
0x00, /* iInterface */ //用于描述此接口的字符描述符的索引号
/* EP Descriptor: bulk in. */
LEN_ENDPOINT, /* bLength */
DESC_ENDPOINT, /* bDescriptorType */
(BULK_IN_EP_NUM | EP_INPUT), /* bEndpointAddress */
EP_BULK, /* bmAttributes */
/* wMaxPacketSize */
EPA_MAX_PKT_SIZE & 0x00FF, //size 512
(EPA_MAX_PKT_SIZE & 0xFF00) >> 8,
0x00, /* bInterval */
/* EP Descriptor: bulk out. */
LEN_ENDPOINT, /* bLength */
DESC_ENDPOINT, /* bDescriptorType */
(BULK_OUT_EP_NUM | EP_OUTPUT), /* bEndpointAddress */
EP_BULK, /* bmAttributes */
/* wMaxPacketSize */
EPB_MAX_PKT_SIZE & 0x00FF, //size 512
(EPB_MAX_PKT_SIZE & 0xFF00) >> 8,
0x00 /* bInterval */
};
其中宏“CEP_MAX_PKT_SIZE”值为64,宏“LEN_CONFIG_AND_SUBORDINATE”值也为64, Setup时按上述各项配置发送以上就不行了,问题在哪? |