SXSBJSXYT

保持热爱,奔赴山海

 

USB设备无法识别问题解决记录

USB硬件原理图
USB硬件原理图

1. 问题描述

在使用STM32F103RCT6开发USB Mass Storage Class设备时,遇到了PC无法识别USB设备的问题。具体表现为:

  • 硬件电路检查无误
  • 软件配置按照标准流程完成
  • CubeMX生成的USB MSC代码正常
  • 但PC端完全检测不到USB设备

2. 我的硬件配置

2.1 开发板信息

  • MCU: STM32F103RCT6
  • USB接口: Type-C
  • 外部晶振: 8MHz

2.2 USB电路设计

  • CC1/CC2: 通过5.1kΩ电阻下拉到地(Type-C标准配置)
  • USB_DP (PA12) / USB_DM (PA11): 直接连接到Type-C数据线
  • ESD保护: 使用保护二极管
  • 电源: 3.3V稳压供电

3. 我的软件配置

3.1 CubeMX配置

  • Connectivity → USB → Device (FS)
  • Middleware → USB_DEVICE → Mass Storage Class (MSC)
  • 时钟配置: HSE(8MHz) → PLL(×9) → SYSCLK(72MHz) → USB(÷1.5) → 48MHz

4. 问题排查过程

4.1 硬件检查

  • ✅ USB引脚连接正确
  • ✅ Type-C CC引脚配置正确
  • ✅ 电源供电正常
  • ✅ 晶振工作正常

4.2 软件排查

  • ✅排除软件问题(详情略)

4.3 更换板卡做验证

  • 依然无法读取到USB设备,难道代码有问题?
  • 更换了F429的验证板,奇迹间发现居然可以识别到,我C!F4可以,F1不可以?

4.4 查看芯片设计手册

F103芯片设计手册-USB
        To be compliant with the USB 2.0 full-speed electrical specification, the USB_DP (D+) pin should be pulled up with a 1.5 kΩ resistor to a 3.0-to-3.6 V voltage range.

        问题找到了,给USB_DP(D+)接了1.5K的上拉电阻就可以识别到了!!!有时候不要太相信硬件同事哦。

        我看网上有些成熟的方案他们也并没有接1.5K的上拉电阻,应该是MCU内部内置上拉电阻:(引脚内部集成了1.5kΩ上拉电阻)

posted on 2025-09-19 19:30  SXSBJSXYT  阅读(54)  评论(0)    收藏  举报  来源

导航