• 正文
  • 相关推荐
申请入驻 产业图谱

如何在独立模式下用 USBX 将 STM32 配置为 USB 双角色

10/27 13:33
92
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

摘要

本文是意法半导体(ST)分步指南:把 NUCLEO-U545RE-Q 配成双角色器件,用 **USBX 中间件独立模式**(不跑 ThreadX 或 FreeRTOS™)。从硬件连线到固件,最终板卡能在 HID 主机与 CDC 设备两种角色间切换。

技术术语

- 双角色器件(DRD):同一端口按当前连接与角色逻辑,既可当主机也可当设备

- 设备模式:STM32 作为 USB 外设,连接到 PC 等主机

- 主机模式:STM32 作为 USB 主机,控制已连接的 USB 设备

引言

STM32CubeMX 并不原生支持双角色。就算能选双角色选项,也不会把 USBX 中间件文件和双角色逻辑生成齐全。本文按步骤在独立模式下把 USB 双角色做起来;文末附工程。

本指南基于 STM32CubeIDE 2.1.0、STM32CubeMX 6.17.0、STM32CubeU5 1.8.0,在带 STM32U545RE 的 NUCLEO-U545RE-Q 上验证,可裁到其他支持 USBX 的板。

注意:

- 参考板:确认板卡同时支持设备与主机模式。某些情况需硬件改动(如 B-IoT-STM32U585、NUCLEO-H563ZI 等)。检查 VBUS 引脚与 Power VBUS。

- USB 控制器:部分产品为 USB OTG,部分为 USB DRD,固件中变量与实例命名不同。本例 STM32U545 为 USB DRD。本文通过按下 USER 按键在模式间简单切换。指南从基本硬件连接到固件实现。

1. 硬件与软件前置条件

- NUCLEO-U545RE-Q
- STM32CubeIDE V2.1.0
- STM32CubeMX V6.17.0
- STM32Cube firmware U5 v1.8.0
- 两根 USB 2.0 Type-C 公头转 Type-A 公头线缆
- 一根 Type-A 母头转 Type-C 公头转接器

2. 开发

对 NUCLEO-U545RE-Q,CubeMX 默认没有可用的双角色选项。所以要建 两个工程:一个主机、一个设备,把两种模式需要的文件和函数都拿齐。

3. 配置设备工程

STM32CubeIDE:[File → New → STM32 project] → Board selector 选 NUCLEO-U545RE-Q。弹出板级选项中取消全部 BSP,点 [OK]。打开 `.ioc` 后 [Pinout → Clear pinouts]。

Connectivity → USB-DRD-FS:Mode = device_Only_FS;NVIC 中激活 USB global interrupt。

Middleware → USBX:使能 Core system;UX device FS 下使能 Device CoreStack FS 与 DeviceControllers FS;在 device class FS 中使能 CDC ACM。

USBX 设置:UX device memory pool size 分配 10 KB;USBX device system stack size 分配 8 KB。

Platform settings:Found solutions 选 USB_DRD-FS。

时钟:确保 USB 得到 48 MHz(最简单用 HSI48)。命名并生成代码。

4. 配置 DRD 工程

做法:先建主机工程,再把设备工程里必要的文件与代码盖进去。

同样新建 NUCLEO-U545RE-Q 工程,取消 BSP,Clear pinouts。

USB-DRD-FS:Mode = Host_Only_FS;激活 USB global interrupt。

USBX:使能 Core system、host CoreStack FS、host controllers FS;Host class FS 下使能 core、keyboard、mouse(在 HID class 下)。

将 PB5 设为 GPIO output;Platform settings 的 Drive_VBUS_FS 窗口 Found Solutions 中选中它。**Drive_VBUS 引脚因产品而异,请查原理图。

USBX 设置:USBX host system stack size 分配 **28*1024**。

使能 PC13 为 GPIO EXTI;System core/GPIO 下使能 EXTI Line 13。使能 USART1 异步模式。RCC 中 CRS SYNC Source 选 USB。时钟保证 USB 干净 48 MHz。命名并 Generate Code。

5. 双角色工程目录配置

把设备侧必要文件/文件夹加入 DRD 工程。

从设备工程 `Drivers/STM32U5xx_HAL_Driver/Src` 复制 `stm32u5xx_hal_pcd.c` 与 `stm32u5xx_hal_pcd_ex.c` 到 DRD 工程同路径;头文件同理从 `Inc` 复制。

下表列出需转移的文件与路径。**路径为演示用,实际取决于工程命名与保存位置。

| 设备工程路径 | 需复制到 DRD 同路径的文件 |
| --- | --- |
| `Device_project\Drivers\STM32U5xx_HAL_Driver\Src` | `stm32u5xx_hal_pcd.c`;`stm32u5xx_hal_pcd_ex.c` |
| `Device_project\Drivers\STM32U5xx_HAL_Driver\Inc` | `stm32u5xx_hal_pcd.h`;`stm32u5xx_hal_pcd_ex.h` |

6. 代码实现

将附件工程中的代码片段加入指定 USER CODE 区域,按下表:

| 文件夹/文件 | 代码位置 |
| --- | --- |
| Main.c | USER CODE BEGIN includes / PV / PFP / BEGIN 2 / 3 / 4 |
| Main.h | USER CODE BEGIN EFP |
| stm32u5xx_hal_msp.c | USER CODE BEGIN 1 |
| stm32u5xx_it.c | USER CODE BEGIN PV;EXTI13_IRQn 1;USB_IRQn 1 |
| USBX/App · App_usbx_device.c/.h | USER CODE BEGIN EFP;USER CODE BEGIN 1 |
| Ux_device_cdc_acm.c/.h | (按附件工程) |
| Ux_host_keyboard.c/.h | (按附件工程) |
| ux_host_mouse.c/.h | 整文件内容 |
| Ux_system-tasks_run.c | `_ux_system_tasks_run` 函数 |
| Ux_host_stack_hnp_polling_thread_entry.c | 删除文件内容 |

在 `Ux_user.h` 中取消注释:

```c
#define UX_DEVICE_BIDIRECTIONAL_ENDPOINT_SUPPORT
#define UX_DEVICE_CLASS_CDC_ACM_TRANSMISSION_DISABLE
```

并注释:

```c
//#define UX_HOST_SIDE_ONLY
// #define UX_DEVICE_SIDE_ONLY
```

7. 结果

构建并烧录。应用初始为主机模式。用 Type-C 公头转 Type-A 母头转接器,将鼠标或键盘接到板卡 USB 连接器(CN3)。打开串口监视器,波特率 **115200 bit/s**,应能看到鼠标/键盘活动。

按下 USER 按键后切到设备模式。断开鼠标,将 CN3 接到 PC,应出现新的 USB 串口设备,并重复打印 “hello world”。

结论

到这里,建双角色工程所需信息已经齐了;其他 class 可按同样步骤配。

本应用 不是完整 USB OTG;支持的是 双角色数据(DRD):按 USB 线缆连接,在主机与设备间切换角色。

来源:https://community.st.com/stm32-mcus-60/how-to-configure-stm32-as-usb-dual-role-using-usbx-in-standalone-mode-168595

参数以意法半导体官方最新资料为准。

意法半导体

意法半导体

意法半导体拥有49,000名半导体技术的创造者和创新者,掌握半导体供应链和先进的制造设备。作为一家半导体垂直整合制造商(IDM),意法半导体与二十多万家客户、成千上万名合作伙伴一起研发产品和解决方案,共同构建生态系统,帮助他们更好地应对各种挑战和新机遇,满足世界对可持续发展的更高需求。意法半导体的技术让人们的出行更智能,让电源和能源管理更高效,让云连接的自主化设备应用更广泛。我们正按计划在所有直接和间接排放(包括范围1和范围2)、产品运输、商务旅行以及员工通勤排放(重点关注的范围3)方面实现碳中和,并在2027年底前实现100%使用可再生电力的目标。 详情请浏览意法半导体公司网站:www.st.com.cn

意法半导体拥有49,000名半导体技术的创造者和创新者,掌握半导体供应链和先进的制造设备。作为一家半导体垂直整合制造商(IDM),意法半导体与二十多万家客户、成千上万名合作伙伴一起研发产品和解决方案,共同构建生态系统,帮助他们更好地应对各种挑战和新机遇,满足世界对可持续发展的更高需求。意法半导体的技术让人们的出行更智能,让电源和能源管理更高效,让云连接的自主化设备应用更广泛。我们正按计划在所有直接和间接排放(包括范围1和范围2)、产品运输、商务旅行以及员工通勤排放(重点关注的范围3)方面实现碳中和,并在2027年底前实现100%使用可再生电力的目标。 详情请浏览意法半导体公司网站:www.st.com.cn收起

查看更多

相关推荐

意法半导体拥有49,000名半导体技术的创造者和创新者,掌握半导体供应链和先进的制造设备。作为一 家半导体垂直整合制造商(IDM),意法半导体与二十多万家客户、成千上万名合作伙伴一起研发产品和 解决方案,共同构建生态系统,帮助他们更好地应对各种挑战和新机遇,满足世界对可持续发展的更高需 求。意法半导体的技术让人们的出行更智能,让电源和能源管理更高效,让云连接的自主化设备应用更广 泛。我们正按计划在所有直接和间接排放(包括范围1和范围2)、产品运输、商务旅行以及员工通勤排 放(重点关注的范围3)方面实现碳中和,并在2027年底前实现100%使用可再生电力的目标。 详情请浏 览意法半导体公司网站:www.st.com.cn