请技术帮忙支持下,我在使用CH32V307VCT6 USBHS 超过7个端点后无法正确识别USB设备.

在7个端点配置时,是可以正确识别的,8个端点就无法正确识别了,下面是8个端点的配置:



/* USB配置描述符(高速) */
const UINT8  MyCfgDescr_HS[ ] =
{
        0x09, 0x02, 0x4A, 0x00, 0x01, 0x01, 0x00, 0x80, 0x32,
        0x09, 0x04, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x55, 0x00,
        0x07, 0x05, 0x81, 0x02, (UINT8)DEF_USB_HS_EP_SIZE, (UINT8)( DEF_USB_HS_EP_SIZE >> 8 ), 0x00,
        0x07, 0x05, 0x01, 0x02, (UINT8)DEF_USB_HS_EP_SIZE, (UINT8)( DEF_USB_HS_EP_SIZE >> 8 ), 0x00,
        0x07, 0x05, 0x82, 0x02, (UINT8)DEF_USB_HS_EP_SIZE, (UINT8)( DEF_USB_HS_EP_SIZE >> 8 ), 0x00,
        0x07, 0x05, 0x02, 0x02, (UINT8)DEF_USB_HS_EP_SIZE, (UINT8)( DEF_USB_HS_EP_SIZE >> 8 ), 0x00,
        0x07, 0x05, 0x83, 0x02, (UINT8)DEF_USB_HS_EP_SIZE, (UINT8)( DEF_USB_HS_EP_SIZE >> 8 ), 0x00,
        0x07, 0x05, 0x03, 0x02, (UINT8)DEF_USB_HS_EP_SIZE, (UINT8)( DEF_USB_HS_EP_SIZE >> 8 ), 0x00,
        0x07, 0x05, 0x84, 0x02, (UINT8)DEF_USB_HS_EP_SIZE, (UINT8)( DEF_USB_HS_EP_SIZE >> 8 ), 0x00,
        0x07, 0x05, 0x04, 0x02, (UINT8)DEF_USB_HS_EP_SIZE, (UINT8)( DEF_USB_HS_EP_SIZE >> 8 ), 0x00,

}



您好,这边配置8个端点是没有问题的,程序您可以测试一下。

image.png

image.png

image.png

icon_rar.gifV307_USBHS_8Endpoint.zip



非常感谢!可以了.原因是设备描述符.出现如下情况的时候,会出现我说的问题.

/* USB设备描述符 */
UINT8  MyDevDescr[ 18 ] =
{
    0x12,
    0x01,
    0x00, 0x02,
    0x00,
    0x00,
    0x00,
    0x40,
    0x86, 0x1A,
    0x37, 0x55,
    DEF_IC_PRG_VER2,
    DEF_IC_PRG_VER,
    0x01,
    0x02,
    0X00,//序列号描述符索引,这个地方写错了,写成0x00了.造成的结果就是最多可以配置7个端点,超过就会无法识别.正常这里要配置成0x03.
    0x01
};


只有登录才能回复,可以选择微信账号登录