STM32
直播中

小麦地

13年用户 1728经验值
私信 关注
[问答]

STM32H747 USB接口,插拔第一次连接的上,之后就再也连接不上,为什么?

状态 :STM32H747 全新板子,没有烧任何程序,boot0 拉高。上电 USB口强制进入DUF模式。
操作及现象
1、第一次上电,通过USB连接电脑 。可以识别成 DFU in FS  mode  如图。
2、没有其他任何操作 仅仅是插拔USB线缆。  电脑就识别不了,显示(未知USB设备,设备描述符请求失败)如图
3、多次上电,多次插拔,都不能识别了。
4、这块板子 通过SWD烧录程序,调用UART串口调试是正常的。就是USB 接口废了。
各位大神,看看这是什么问题,手头的板子都是一个现象。就USB口不行。


回帖(1)

挽你何用

2025-7-15 17:00:54

根据您描述的现象,STM32H747的USB接口在第一次插拔后无法再识别(显示“未知USB设备,设备描述符请求失败”),而其他功能(如SWD烧录、UART)正常,结合多块板子出现相同问题,以下是系统性分析和解决方案:




问题原因分析




  1. VBUS检测电路设计缺陷(首要嫌疑)



    • 关键问题:STM32的USB OTG模块需要检测VBUS电压(5V)来确认USB连接。您的电路可能未使用分压电阻或分压比例错误,导致VBUS检测引脚(PA9 for OTG_FS)在插拔时受到超过3.3V的电压冲击。

    • 现象解释

      • 首次上电时VBUS从0V缓慢上升,芯片可能侥幸检测成功。

      • 热插拔时VBUS瞬间达到5V,直接灌入未分压的GPIO,导致内部保护二极管击穿(即使重新上电也无法恢复)。





  2. ESD或电源冲击损坏



    • 热插拔USB时产生的静电或浪涌,若电路缺乏TVS二极管等保护措施,可能损坏USB数据线(DP/DM)或VBUS检测引脚。




  3. USB数据线问题



    • DP/DM未串联22Ω匹配电阻,导致信号反射或通信不稳定。

    • 数据线对地短路或虚焊(首次能识别,说明硬件通路初始正常)。




  4. 芯片内部USB模块初始化Bug(较低概率)



    • STM32H7的ROM-DFU固件可能在热插拔时存在状态机错误,但重新上电应复位该状态,与您现象不符。






硬件电路检查清单




  1. VBUS检测电路(优先级最高)



    • 检查PA9(OTG_FS_VBUS)引脚是否通过分压电阻连接VBUS。 正确设计

      • 使用电阻分压(如33kΩ + 100kΩ),将5V降至约3.3V(5V × 33k/(100k+33k) ≈ 1.24V,需计算调整)。

      • 确保电压不超过3.3V(GPIO耐压上限通常3.6V)。


    • 检测方法

      • 测量PA9对地电压,插入USB时应≤3.3V;若≥4V则电路错误。





  2. USB数据线保护



    • DP/DM(PA11/PA12)必须串联22Ω电阻(靠近MCU放置)。

    • 添加ESD保护器件(如TVS二极管USBLC6-2SC6)到DP/DM和VBUS。




  3. 电源与接地



    • USB插座屏蔽层、VBUS电容(≥4.7μF)需可靠接地。

    • 确保3.3V电源稳定(USB插入时测量有无跌落)。




  4. 时钟配置



    • 确认HSE晶振正常工作(USB依赖48MHz时钟,由HSI或PLL提供,但DFU模式通常用内部RC,可不查)。






快速验证步骤




  1. 分压电路验证



    • 若设计无分压:临时断开PA9与VBUS的连线,通过外部电阻分压(推荐值:100kΩ接VBUS → PA9 → 33kΩ接地)再测试插拔。

    • 若已有分压:测量分压值,并检查电阻是否虚焊。




  2. DP/DM信号检测



    • 示波器测量PA11/PA12:

      • 插入USB时应有1.5V-3.3V脉冲(枚举信号)。

      • 若恒为高/低电平,可能引脚损坏。





  3. 替代测试法



    • 烧录简单的USB-CDC程序(非DFU),用SWD下载后测试USB通信。若仍失败,确认硬件损坏。

    • 代码片段(Keil AC6):
      // 启用USB FS CDC
      #include "usbd_cdc.h"
      USBD_HandleTypeDef husb;
      int main() {
      MX_USB_DEVICE_Init();  // CubeMX生成的初始化
      while (1) { /* CDC通信测试 */ }
      }






修复方案




  1. 硬件修改



    • 必做:VBUS检测引脚增加分压电阻(推荐100kΩ+33kΩ分压)。

    • 必做:DP/DM串联22Ω电阻并添加TVS二极管(型号:USBLC6-2SC6)。

    • 检查:USB插座接地是否良好,VBUS电容≥4.7μF。




  2. 软件恢复尝试



    • 若引脚损坏不严重,通过BOOT0复位可能恢复:

      • 断开USB,BOOT0拉低,上电复位。

      • BOOT0重新拉高,再连接USB(部分案例有效)。





  3. 更换芯片



    • 若PA9/PA11/PA12对地短路(万用表二极管档测量接近0Ω),需更换MCU。






预防措施




  1. PCB设计



    • VBUS必须分压到≤3.3V(不可直连PA9)。

    • DP/DM走线等长,匹配电阻靠近MCU。

    • 电源入口添加PTC自恢复保险丝。




  2. 插拔操作



    • 避免带电插拔(先断电再操作)。






总结


问题核心是VBUS检测电路设计不当导致PA9引脚损坏(占90%概率)。通过测量PA9电压、检查分压电阻和添加保护电路即可定位。其他可能需依次排查匹配电阻和ESD保护。修改后应能稳定进入DFU模式。

举报

更多回帖

发帖
×
20
完善资料,
赚取积分