You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

STM32U585基于USBX实现DFU+VCP复合设备仅DFU识别问题咨询

问题说明

在STM32U585 MCU上基于USBX中间件开发集成DFU、VCP(CDC ACM)功能的USB复合设备时,参考两个官方独立例程移植代码,单独运行例程功能正常,合并工程后已通过ux_device_stack_class_register注册DFU与CDC ACM两类设备,但启动USB外设后PC端仅能识别DFU类设备,怀疑端点FIFO配置错误导致CDC ACM无法正常枚举。

开发环境

  • MCU型号:STM32U585QIIx
  • STM32CubeMX版本:6.5.0
  • 固件包版本:STM32Cube FW_U5 V1.1.0
根因分析

该问题绝大多数情况是FIFO配置缺失导致,附带存在描述符配置错误的可能:

  1. STM32U5的USB OTG FS模块在设备模式下共有1.25KB(1280字节,折合320个32位word)的专用FIFO RAM,所有端点的收发缓存都从这块空间分配,必须为所有用到的IN端点单独配置发送FIFO,为所有OUT端点配置共享的接收FIFO,分配不能重叠、不能超过总空间上限。
  2. 单DFU例程仅使用默认控制端点EP0完成所有传输,原有FIFO配置只覆盖了EP0,没有为CDC ACM类用到的3个额外端点分配FIFO,导致CDC相关端点无法正常收发数据,枚举过程中主机无法获取CDC类的描述符信息,自然只能识别到枚举顺序靠前的DFU设备。
解决方案

第一步:确认端点分配无冲突

先核对复合设备的端点规划,避免地址冲突:

  • EP0(默认控制端点):双向,最大包长64字节,供DFU类、标准枚举请求共用
  • CDC ACM类额外占用3个端点:
    • 中断IN端点:地址0x81(端点1,方向为设备到主机),最大包长8字节,用于发送串口状态通知
    • 批量OUT端点:地址0x02(端点2,方向为主机到设备),最大包长64字节,用于接收主机下发的串口数据
    • 批量IN端点:地址0x82(端点2,方向为设备到主机),最大包长64字节,用于向主机发送串口数据
  • DFU类不需要额外端点,所有传输复用EP0即可。

第二步:按规则配置FIFO

FIFO配置单位为32位word(即4字节),所有配置必须在调用HAL_PCD_Start前完成:

  1. 配置共享接收FIFO(RxFIFO)
    RxFIFO供所有OUT端点共用,仅需配置1次,从FIFO RAM起始地址开始分配,大小需要覆盖最大OUT包长+协议开销,按当前端点规划配置为64 word(256字节)足够:
    HAL_PCDEx_SetRxFiFo(&hpcd_USB_OTG_FS, 0x40);
    
  2. 按端点号从小到大依次配置每个IN端点的独立发送FIFO(TxFIFO),从RxFIFO结束地址之后连续分配,不能重叠:
    • 配置EP0的发送FIFO:最大包长64字节,分配17 word(68字节)
      HAL_PCDEx_SetTxFiFo(&hpcd_USB_OTG_FS, 0, 0x11);
      
    • 配置CDC中断IN端点(EP1)的发送FIFO:最大包长8字节,分配3 word(12字节)
      HAL_PCDEx_SetTxFiFo(&hpcd_USB_OTG_FS, 1, 0x3);
      
    • 配置CDC批量IN端点(EP2)的发送FIFO:最大包长64字节,分配17 word(68字节)
      HAL_PCDEx_SetTxFiFo(&hpcd_USB_OTG_FS, 2, 0x11);
      

上述配置总占用FIFO空间为64+17+3+17=101 word,远小于320 word的总上限,不存在溢出风险。

第三步:排查其他易漏配置

如果配置完FIFO仍无法识别,需要检查以下两个配置项:

  • 核对配置描述符总长度:复合设备的配置描述符需要按顺序包含DFU接口+DFU功能描述符、CDC控制接口+CDC功能描述符+CDC中断IN端点描述符、CDC数据接口+CDC批量OUT/IN端点描述符,总长度计算错误会导致主机无法读取完整描述符,只能识别第一个设备类。
  • 核对类注册参数:调用ux_device_stack_class_register注册类时,传入的接口号、端点地址必须和描述符中定义的完全一致,避免接口号冲突、端点地址传参错误。

内容的提问来源于stack exchange,提问作者mejha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 02:51:21