STM32 F4复合USB设备,带有2个Bulk接口,正确的FIFO配置

时间:2017-08-24 02:25:45

标签: usb device stm32f4

我使用STM32CubeMX版本4.22生成MSC usb设备并将其修改为具有2个自定义批量接口。接口0有2个BULK端点IN和OUT。接口1有两个备用设置。 Alt设置0有0个端点,Alt设置1有2个BULK端点IN和OUT。

端点定义为:

定义INTERFACE0_IN_EP 0x81

定义INTERFACE0_OUT_EP 0x01

定义INTERFACE1_IN_EP 0x82

定义INTERFACE1_OUT_EP 0x02

我的设备枚举正常,接口0按预期工作。主机发送设置接口1,Alt设置1请求,然后我激活接口1端点(0x82和0x02)。

接口1未按预期工作,我确信它与我的FIFO设置有关。我得到了INTEROACE1_OUT_EP的dataOut调用,但是当我尝试写入INTERFACE1_IN_EP主机时,我只写了3个字节,而我写了24个字节。在此事务之后,我立即获得接口1端点的CLEAR FEATURE请求。

这是我当前的FIFO设置:  HAL_PCDEx_SetRxFiFo(& hpcd_USB_OTG_FS,0xC0); // 80  HAL_PCDEx_SetTxFiFo(& hpcd_USB_OTG_FS,0,0x40); // EP0  HAL_PCDEx_SetTxFiFo(& hpcd_USB_OTG_FS,1,0x80); // EP1

HAL_PCDEx_SetTxFiFo(& hpcd_USB_OTG_FS,2,0x40); //< - 如果我不添加此行,则主机无法返回任何内容,添加此行后主机仅在INTERFACE1_IN_EP上接收3个字节。

请帮我正确配置这些FIFO设置,以便第二个界面也可以按预期工作。

1 个答案:

答案 0 :(得分:1)

STM32中的USB FIFO只有0x140 x 4(= 1280字节)。 但是你使用了0x180(= c0 + 40 + 80)x 4(= 1536bytes)。

相关问题