在 STM32H5 项目做 USB‑VCP 虚拟串口、DFU 复位升级场景,会遇到一类隐蔽硬件坑:按下 MCU 硬件复位键,PC 主机没有检测到 USB 设备断开;MCU 复位完成重新运行后,串口工具打开 COM 端口报错异常。插拔 USB 线缆设备识别正常,很多开发者会误判为芯片 USB 外设故障。
该问题并非芯片缺陷,来自第三方非官方开发板的惯性硬件设计:沿袭 STM32F1 时代方案,在 USB‑DP 信号额外并联外部 1.5kΩ 上拉电阻。H5 系列 USB PHY 内部已经集成 DP 上拉,复位时芯片内核、外设全部复位,但外部电阻持续生效,USB 主机依旧识别设备在位。本文还原故障现象、根因、电路对比,同时顺带解析同一块第三方板卡暴露出的 VCAP 内核稳压电容设计错误,给出硬件评审清单与规避方案。
资料获取:实战经验 | LAT1689 MCU复位期间PC端仍然认为USB连接未断开
1 故障现象
测试硬件:网购第三方 STM32H523 核心板。
- 按住 NRST 复位按键,MCU 进入硬件复位状态,芯片程序停止执行;
- PC 端 USB 驱动没有弹出设备断开事件,设备管理器中 VCP 虚拟串口仍然存在;
- 释放复位,MCU 重新启动,USB 重新枚举,串口终端软件打开 COM 口报错;
- 直接拔插 USB‑Type‑C 线缆,PC 可以正常识别设备插拔,串口工作完全正常;
- 业务痛点:产品需要通过 MCU 复位触发 DFU 固件升级,复位不断开会导致升级流程异常。
开发人员早期误认为是 STM32H5 芯片 USB 外设本身存在 BUG,对比 STM32F103 旧平台没有该现象。
2. 根因定位:USB‑DP 额外外接 1.5kΩ 上拉电阻
USB 全速设备识别原理
USB 全速设备依靠DP 引脚 1.5kΩ 上拉到 3.3V,通知主机设备已接入。
- STM32F1/F3 系列 USB 外设内部没有集成 DP 上拉电阻,原理图必须外接 1.5kΩ 上拉;
- STM32H5、H7、G0、G4 等新一代 MCU,USB PHY 内置 1.5kΩ DP 上拉电阻,由 USB 外设寄存器控制接通 / 断开,硬件原理图不允许再额外增加外部上拉。
第三方开发板照搬 F103 的老旧设计,在 DP 引脚增加外部 1.5kΩ 上拉,与芯片内部电阻并联。
- 正常上电插拔:芯片内部上拉和外部电阻同时工作,USB 枚举没有明显异常;
- MCU 硬件复位阶段:内核、外设寄存器全部复位,芯片内部上拉被关闭;但是外部 1.5kΩ 电阻不受 MCU 复位影响,持续把 DP 拉高。PC USB 主机判定设备依然保持连接,不会触发断开、重枚举流程,复位重启之后虚拟串口就会出现打开失败。
把外部 1.5kΩ 上拉电阻移除后,USB 复位断开识别功能恢复正常。
3. 同板卡暴露的另一处严重隐患:VCAP 内核稳压电容错误
该第三方开发板除 USB 上拉错误外,VCAP 内核电源外围电路同样不符合 ST 官方参考设计。
- STM32H5 拥有两个 VCAP 引脚,官方要求:两个 VCAP 引脚短接,每个引脚各放置一颗 2.2μF 低 ESR 陶瓷电容,电容必须尽可能紧贴芯片引脚,用于内部 LDO/SMPS 内核稳压。
- 这块第三方板卡仅放置一颗 100nF 电容,容量严重不足。会带来内核供电不稳,高温、大负载工况下存在死机、工作异常的隐性风险,问题不一定会在简单点灯测试中暴露。
参考官方文档 AN5711 STM32H5 硬件开发入门,做原理图评审必须核对 VCAP 电容规格、容值、布局约束。
4. 工程落地排查清单
现象 1:MCU 硬件复位,PC 识别不到 USB 断开,VCP 串口打开报错
- 检查原理图 USB‑DP 引脚,H5/H7/G4/G0 等系列禁止外接 1.5kΩ 上拉电阻,上拉由 USB PHY 内部硬件实现;STM32F1/F3 才需要外部 DP 上拉。
- 测量硬件复位状态下 DP 引脚电平,如果复位后 DP 依旧是高电平,基本确认外部存在上拉源。
- 移除外部 DP 上拉电阻,复测复位‑USB 断开识别。
- 硬件无法修改的折中软件方案:复位前固件将 DP/DM 配置为 GPIO 推挽输出低电平,模拟 USB SE0 断开信号,但硬件复位瞬间该软件动作失效,仅适用于软件软复位场景,不能解决 NRST 硬件复位场景。
现象 2:系统偶发死机,内核运行不稳定
- 核对 VCAP 引脚数量,两颗 VCAP 引脚必须短接;
- 每个 VCAP 引脚配 2.2μF 低 ESR 陶瓷电容,电容 PCB 布局必须靠近焊盘;
- 禁止使用 100nF 小容值电容替代官方推荐 2.2μF。
选型评估提示
- 做芯片评估优先选用 ST 官方 NUCLEO 系列开发板,原理图经过官方验证;
- 网购第三方小众核心板,不能直接默认原理图正确,关键 USB、电源部分必须对照 ST 参考手册、应用笔记做原理图评审,否则会引入隐蔽 BUG,误导芯片性能评估。
5. 小结
- MCU 硬件复位 PC 识别 USB 不断开,典型诱因:STM32H5 等新一代芯片 USB‑DP 引脚额外增加外部 1.5kΩ 上拉电阻。F1/F3 需要外接 DP 上拉,H5/G4/G0/H7 内置上拉,不能沿用 F1 时代设计惯性。
- 外部上拉电阻不受 MCU NRST 硬件复位控制,复位时 DP 持续为高,USB 主机误认为设备保持连接,导致 VCP 串口、DFU 升级流程异常。移除外部上拉电阻即可解决该硬件问题。
- 同第三方板卡出现 VCAP 内核稳压电容选型错误,属于隐性风险,简单功能测试很难暴露,会造成内核供电不稳。VCAP 引脚电容容值、数量、布局需要严格遵循 AN5711 官方参考。
- 第三方非官方开发板不能直接当作设计参考,硬件设计必须对照 ST 应用笔记重新评审,避免把板卡设计缺陷带入量产产品。
6. FAQ
Q:为什么软件软复位不会复现这个问题,只有硬件 NRST 复位才出现?
A:软件复位时外设寄存器不一定全部复位,USB 内部 DP 上拉可能维持开启;NRST 硬件复位会彻底复位全部片上外设,内部上拉关闭,此时外部上拉电阻的影响完全暴露。
Q:产品硬件已经做出来,DP 已经焊上 1.5K,有没有补救办法?
A:硬件上最好去掉该电阻;软件无法干预 NRST 硬件复位瞬间的引脚电平,软件方案不能彻底解决硬件复位场景的 USB 识别问题。
Q:STM32H5 做 USB‑DFU 升级,对硬件有什么强制要求?
A:DP 不能外部上拉;VBUS 检测电路按 AN4879 实现;VCAP 电容严格按官方规格;BOOT0 启动引脚配置正确。
免责声明:本文全部基于 ST 官方 LAT1689 文档,量产硬件原理图请以 ST 官方应用笔记、芯片 datasheet 为准。
252