实现USB硬件的正确方法是什么?

2019-07-14 17:55发布

我的USB硬件出现问题,从我的STM32F4微控制器通信到计算机。某些计算机设置有问题,有些类型的主板USB经常断开,其他类型的主板连接稳定。在一些地方读书我意识到这可能是由线路阻抗引起的。目前我在USB_DM和USB_DP线路中使用22R电阻。我决定取下这些电阻,使线路保持大约0R,并在USB_DP线路上放置一个上拉电阻。这解决了我在一些断开的计算机设置中的问题。但我想知道正确的硬件,以便我在微控制器和计算机之间没有断线问题。第一张图片下面是我使用的第一个硬件。然后,第二张图像显示了我为能够操作USB所做的更改。 1.png

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
8条回答
新星之火12138
2019-07-15 02:40
正确实施USB硬件的方法是遵循所有制造商的建议。如果硬件开发人员没有USB实现经验,最好的方法是查看开发板/工具包上的原理图和布局。
在这种特殊情况下,实施具有若干缺陷。首先应该注意的是,这是一种全速设备,传输线效应(以及源终端)起着次要作用。然而,为了“玩得好”,制造商使用22R系列电阻器,显然是为了补偿廉价FS PHY实现IP常见的电气驱动器缺陷。这个原理图来自Olimex开发板: 2.png
我见过的STM32Fxx的所有应用原理图都使用了22R。
有一点很清楚,22R在第二个原理图中上拉D +是绝对不合适的。
其次,如果这是仅设备设计,则必须完成两件事:
来自Type-B连接器的VBUS必须转到某些I / O引脚,如“OTG_FS_VBUS”,以便系统能够检测连接电缆上是否存在VBUS,以及
VBUS电容应大于1 uF但小于10 uF。
另一个细节是ESD保护电路应偏置3.3V,而不是+ 5V。
但是,这些是对设备操作和接口稳定性不重要的细微细节。
鉴于对“某些主机”的“频繁断开”问题的模糊描述,而不是与其他主机有关,我猜测问题是USB接口时钟超出范围。不同的USB主机可能对USB频率偏差具有不同的容差,这是界面不稳定的最常见被忽视的原因。
为了确定,你应该在STM32F板上的USB端口上运行眼图测试。有文件关于如何执行这个测试,这取决于你的装备。
USB规范要求最大偏离12Mbps数据速率+ -2000 ppm。一些主机可以容忍+ -5000 ppm,约2200ppm。系统晶体振荡器很可能没有正确调谐,接口时钟完全关闭。典型的行为是,在USB数据包很短的枚举过程中,一切都可能正常,但是较长的数据包将失去同步,数据损坏将随之而来。
通常,当某些接口表现出片状时,首先要确保信号幅度和频率完全符合接口规范。“随机工程”,例如更换电阻器或推动疯狂的引体向上通常是没有用的。

一周热门 更多>