【问题标题】:STM32 F4 composite usb device with 2 Bulk Interfaces, correct FIFO configuration具有 2 个批量接口的 STM32 F4 复合 USB 设备,正确的 FIFO 配置
【发布时间】:2018-02-01 18:25:57
【问题描述】:

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

端点定义为:

定义 INTERFACE0_IN_EP 0x81

定义 INTERFACE0_OUT_EP 0x01

定义 INTERFACE1_IN_EP 0x82

定义 INTERFACE1_OUT_EP 0x02

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

接口 1 未按预期工作,我确信它与我的 FIFO 设置有关。我收到了 INTERFACE1_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); //

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

【问题讨论】:

  • 抱歉忘了提,我使用的是STM32F412,FS usb,内部物理,最大数据包大小为64

标签: usb device stm32f4


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-14
    • 2022-06-18
    • 2011-09-11
    • 1970-01-01
    • 2021-07-30
    相关资源
    最近更新 更多