[应用相关] 在CubeIDE中可以同时开发多个USB CDC(USB IAD)

[复制链接]
 楼主| onlycook 发表于 2025-6-21 16:39 | 显示全部楼层 |阅读模式
USB, CD, dc, IDE, AD
  • 基础工程生成:在CubeIDE中创建工程,选择目标芯片,配置时钟、调试接口等基本参数。
  • USB设备配置:在Connectivity选项中选择USB Device功能,使能中断。在Middleware中选择USB_Device选项,将USB功能配置为虚拟串口(CDC)。
  • 修改设备描述符:找到usbd_desc.c文件中的设备描述符数组USBD_FS_DeviceDesc,将设备类型改为组合设备类型,修改设备类、子类和设备协议代码。例如,将原本的0x02,0x02,0x00改为0xEF,0x02,0x01。同时,修改设备的VID和PID。
  • 修改PMA端点分布:进入usbd_conf.c文件,找到USBD_LL_Init函数,修改PMA端点初始化。根据实际使用的CDC数量,合理分配端点。例如,若使用两个CDC,需要为每个CDC分配输入输出端点以及命令控制端点。
  • 修改CDC初始化函数:找到USBD_CDC_Init函数,添加多个CDC的端点初始化操作。
  • 修改配置描述符和接口描述符:根据实际需求,修改配置描述符和接口描述符,确保每个CDC都有正确的接口定义。

公羊子丹 发表于 2025-6-23 07:23 | 显示全部楼层
我之前也做过双CDC,改描述符那块确实挺容易搞错。
周半梅 发表于 2025-6-23 07:24 | 显示全部楼层
改完端点后,用 USBlyzer 看下枚举结果就清楚了。
帛灿灿 发表于 2025-6-23 07:25 | 显示全部楼层
如果用的是STM32F1,PMA分配空间真得小心,不然直接死机。
童雨竹 发表于 2025-6-23 07:26 | 显示全部楼层
多CDC用串口调试起来还挺方便,就是前期配置麻烦点。
万图 发表于 2025-6-23 07:27 | 显示全部楼层
你这个流程太清晰了,我正好想搞复合设备,收藏了!
Wordsworth 发表于 2025-6-23 07:28 | 显示全部楼层
有没有用TinyUSB或者其他协议栈试过?Cube生成的结构有点死板。
Bblythe 发表于 2025-6-23 07:29 | 显示全部楼层
改配置描述符的时候容易漏接口关联字段,之前踩坑过。
Pulitzer 发表于 2025-6-23 07:29 | 显示全部楼层
如果两个CDC的数据量都大,建议用双缓冲,不然丢包。
Uriah 发表于 2025-6-23 07:30 | 显示全部楼层
改完描述符之后记得刷新Windows设备管理器,有时候驱动会缓存。
Clyde011 发表于 2025-6-23 07:31 | 显示全部楼层
有没有后续考虑加HID或者MSC?这样还能做个多功能接口设备。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

479

主题

1983

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部

479

主题

1983

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部