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 查看芯片设计手册
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Ω上拉电阻)
浙公网安备 33010602011771号