stm32f103c8t6的代码移植到ch32f103c8t6,stm32端点2是正常工作的
ch32尝试了,端点2和端点3读出来的数据不对
ch32先使能了USB_HP_CAN1_TX_IRQ,要不然触发不了USB_HP_CAN1_TX_IRQ
USB 高优先级中断(通道 19):仅能由同步和双缓冲批量传输的正确传输事件触发,目的是保证最 大的传输速率
触发中断后进入,EP3_OUT_CALLBACK
g_blaster_rx_req = TRUE
开始缓冲区拷贝数据
到s_recv_buffer这个64字节数组,
拷贝出来的数据前几次是和stm32一样,后面就和stm32拷贝的数据出来的数据不一样了
下面这里是配置描述符,和设置端点的操作
/* USB配置描述符 */ /* All Descriptors (Configuration, Interface, Endpoint, Class, Vendor */ const uint8_t Blaster_ConfigDescriptor[BLASTER_SIZ_CONFIG_DESC] = { /* Configuration Descriptor */ /* 00 */ 0x09, /* bLength: Configuration Descriptor size */ USB_CONFIGURATION_DESCRIPTOR_TYPE, /* bDescriptorType: Configuration */ BLASTER_SIZ_CONFIG_DESC, /* wTotalLength: Bytes returned */ 0x00, 0x01, /* bNumInterfaces: 1 interface */ 0x01, /* bConfigurationValue: Configuration value */ 0x00, /* iConfiguration: Index of string descriptor describing the configuration*/ 0x80, /* bmAttributes: Bus powered(bit6=0) */ 0xE1, /* MaxPower 450mA(225*2) */ /* Interface Descriptor */ /* 09 */ 0x09, /* bLength: Interface Descriptor size */ USB_INTERFACE_DESCRIPTOR_TYPE,/* bDescriptorType: Interface descriptor type */ 0x00, /* bInterfaceNumber: Number of Interface */ 0x00, /* bAlternateSetting: Alternate setting */ EP_NUM - 1, /* bNumEndpoints */ 0xFF, /* bInterfaceClass: NA */ 0xFF, /* bInterfaceSubClass : NA */ 0xFF, /* nInterfaceProtocol : NA */ 0, /* iInterface: Index of string descriptor */ /* Endpoint Descriptor */ /* 18 */ 0x07, /* bLength: Endpoint Descriptor size */ USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType: Endpoint descriptor */ EP1_IN, /* bEndpointAddress: Endpoint 1 IN */ 0x02, /* bmAttributes: Bulk endpoint */ ENDP1_TXSIZE, /* wMaxPacketSize: 64 Bytes max */ 0x00, 0x01, /* bInterval: Polling Interval (1 ms) */ /* 25 */ 0x07, /* bLength: Endpoint Descriptor size */ USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType: Endpoint descriptor */ EP3_OUT, /*bEndpointAddress:端点2输出这里修改为EP3*/ 0x02, /*bmAttributes:批量端点*/ ENDP2_RXSIZE, /*wMaxPacketSize:最大64字节*/ 0x00, 0x01, /*bInterval:轮询间隔(1毫秒)*/ /* 32 */ };
ENDP3端点设置操作
端点缓冲区设置,这里我不确定有没有设置正确
ENDP0,ENDP1是正常的能识别驱动
各位大佬帮忙看看到底啥问题啊
热门产品 :
CH32V317: 互联型青稞RISC-V MCU