关于USB的那点糗事

最近,在做一款产品,里面用到了一个USB3.0接口,在做产品功能设计的时候,由于对USB的认识存在误区,导致了设计出现了错误,现记录一下,防止以后再发生类似的笑话 ):

误区一:认为USB3.0/2.0是两个独立的接口

我们使用的是一款5G模组,下面是产品手册上关于USB接口的描述:
在这里插入图片描述
注意,红框标注的部分。起初,我只注意到了,该USB接口符合USB2.0和USB3.0规范,就天真的认为,其为两个独立的接口,一个是USB2.0,另一个是USB3.0,所以,设计了如下的USB设备架构:
在这里插入图片描述
可以看到,USB2.0作为串口扩展,USB3.0作为调试口。但是,通过与模块厂家技术人员沟通之后,人家明确说,模块只有一个USB Phy,意思是USB2.0和USB3.0是同一个USB物理接口,只不过其符合USB2.0和USB3.0规范。其实,产品手册说的很清楚,提供了一个集成的USB接口,只不过,该接口支持USB3.0和USB2.0规范,哎,小学语文没有过关啊!-_-||

误区二:认为USB HUB可以同时接Host和Device

刚开始设计USB设备架构的时候,还进入一个十分低级的误区,那就是,天真的认为,USB HUB之后,既可以接USB Device(例如USB转UART芯片),也可以接USB Host(例如PC),如下图:
在这里插入图片描述
真是无知啊,一个USB接口,怎么可能同时即做Host,又做Device,即便通过USB HUB也是不可能的啊!USB HUB只是为USB Host服务的,其只是扩展了USB所能连接的USB设备的数量,但,HUB的两端,绝对不能,同时接两个HOST,那就违背了USB的设计原则:同一USB系统中,同时只能有一个HOST,记住,只能有一个!!

上面两个误区,可以表明,对于USB,我其实一无所知的,但,有趣的是,我竟然自以为是的设计了一套,自认为可以工作的USB设备架构,所幸,这是在设计阶段出现的问题,如果,硬件设计出来之后,再暴露问题,岂不呜呼哀哉!!所以,对于技术,我们要怀有敬畏,不能不懂装懂,更不能自以为是的去指导别人,否则,后果不堪设想!!

猜你喜欢

转载自blog.csdn.net/linux_embedded/article/details/124084676