Treasure101 发表于 2025-7-15 11:05

L476使用USB主机MSC和设备CDC

配置STM32CubeIDE中的L476RG(使用FreeRTOS),以实现USB主机MSC(FatFS)和设备CDC(虚拟串口VCOM)功能。但我发现这似乎OTG设置只是插入了一个空dummy stub,没有更多内容。我只能单独配置USB主机或设备模式。有人解决过这个问题吗?最终的解决方案是否必须将主机和设备模式的代码手动合并到一个项目中?

公羊子丹 发表于 2025-7-26 07:22

我之前用 L476 做过双角色 USB,确实 CubeMX 只给了最简单的 OTG 结构,得手动改。

周半梅 发表于 2025-7-26 07:23

OTG 要支持主机 MSC 和设备 CDC 一起跑,协议栈必须自己合并,CubeIDE 默认拆不开。

帛灿灿 发表于 2025-7-26 07:23

FreeRTOS 下搞 OTG 会麻烦点,最好把主机和设备各自任务分开写,再做状态切换。

童雨竹 发表于 2025-7-26 07:24

我当时直接把 USB Host 和 USB Device 两个中间件都生成出来,然后手动挑文件合成的。

万图 发表于 2025-7-26 07:25

有时候 OTG 需要外接 ID 引脚或切换电路,楼主板子这块怎么做的?

Wordsworth 发表于 2025-7-26 07:26

ST 的官方例程里基本没现成双角色,参考 F4/H7 的 OTG 例程能找到点思路。

Bblythe 发表于 2025-7-26 07:26

如果只是想要插 U 盘的同时做 CDC,考虑用双芯片也许简单点,一个 MCU 做主机,一个 MCU 做 CDC。

Pulitzer 发表于 2025-7-26 07:27

注意 MSC 和 CDC 会争 USB Core,调度和中断要小心,不然枚举容易失败。

Uriah 发表于 2025-7-26 07:28

有条件可以先把主机和设备功能分开单独验证好,再尝试组合,调试量会小很多。

Clyde011 发表于 2025-7-26 07:29

楼主要是后面有好的合并方法分享一下,我这边也打算搞个双角色的 L4 项目!

小夏天的大西瓜 发表于 2025-7-27 23:13

配置STM32CubeIDE中的L476RG
页: [1]
查看完整版本: L476使用USB主机MSC和设备CDC