2017-08-24 19 views
0

我使用STM32CubeMX版本4.22生成MSC usb設備並將其修改爲具有2個定製批量接口。接口0有2個BULK端點IN和OUT。接口1有兩個備用設置。替代設置0有0個端點,替代設置1有2個BULK端點IN和OUT。具有2個批量接口的STM32 F4複合USB設備,正確的FIFO配置

端點被定義爲:

限定INTERFACE0_IN_EP 0×81

限定INTERFACE0_OUT_EP 0×01

限定INTERFACE1_IN_EP爲0x82

限定INTERFACE1_OUT_EP 0×02

我的設備枚舉精細和接口0作品預期。主機發送Set Interface 1,Alt Setting 1請求,然後激活Interface 1端點(0x82和0x02)。

接口1未按預期工作,我確信它與我的FIFO設置有關。我得到dataOut調用INTERFACE1_OUT_EP,但是當我嘗試寫INTERFACE1_IN_EP主機時,只有3字節回寫,而我寫24字節。在此事務之後,我立即得到CLEAR FEATURE對接口1端點的請求。

這裏是我當前的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設置,以便第二個接口也可以按預期工作。

+0

對不起忘了,我正在使用STM32F412,FS USB與內部物理與最大數據包大小爲64 – user3542575

回答

0

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