最近有些客户自己绘制的板子遇到USB的使用问题,主要表现在USB设备不识别,VBUS 报错等。最后分析出的结果很多都是掉进了USB VBUS设计上的坑里。所以在这里简单地分享下USB VBUS设计注意事项。我们拿AM335x平台作为例子来说明。
▼先上一张AM335x RM里关于USB OTG引脚的说明图
相比其他的平台,ti的AM335x对VBUS的定义比较特殊,从上图可以看到USBx_VBUS不再是一个简单的电源输入,而是作为USB的电压检测输入,这一点很重要,一会再说。
AM335x采用的是两路USB OTG控制器。
所谓的OTG,就是USB模块可以在host模式和device模式之间切换工作。相比早期芯片里的USB HOST控制,OTG控制器不仅在内部状态机设计更加复杂,而且增加了几路外部信号以及相对应的检测,比如ID脚以及VBUS检测。但是许多客户在设计中,往往都只将关注点放到了ID脚的处理上,而简单地认为VBUS处理与USB HOST控制器相同。其实VBUS是一个非常重要的检测信号,OTG 控制器在USB 设备识别、HOST 和device模式切换过程中,VBUS都作为一个触发开关来用,而在普通的USB HOST控制器里,VBUS仅仅只是作为供电电源使用。
USB刚一开始连接,会瞬间需要高于500mA的电流。这时如果VBUS的电流供电能力不足,就会在5V上产生跌坑。
▼下图即为我们为一客户排查问题时抓到的跌落波形
这个电压跌落一方面可能会引起USB 设备工作的异常,另一方面,当这个电压跌落低于4.4V时,AM335x会停止进行下一步的枚举过程,同时进入到VBUS 错误处理(或者叫VBUS过流处理)并输出相应错误信息。完成处理后重新开始HOST 或DEVICE工作模式的检测。
这个跌落的产生很有可能是本身电源电路设计问题,启动或插拔设备时5V电源供电能力不够。
■ 由于客户的产品为样机阶段,我们建议优化电源设计,同时在USB_VBUS上按照官方推荐添加120uF的电容。电容的主要目的就是为了在出现跌坑时,有及时放电的过程以保证电压的稳定。
■ 如果不修改电源设计,这个问题还有一种处理方案,刚刚上面提到了AM335x的VBUS只是电压检测而已,并不会过很大的电流,所以只需添加一个RC滤波电路把这个跌落滤除即可,经过测试此方案可行,即使外部5V跌落依然存在,但是经过RC后到达VBUS上的电压没有变化,USB设备识别正常。
其实如果使用其他的平台还有另一种方案,AM335X的VBUS阈值电压是4.4V,是不可以修改的,但是像IMX6系列或者S5P4418这些CPU的VBUS阈值是可以修改的,如果使用类似这些可以调整阈值的平台,也可以通过降低阈值来达解决这个问题,不需要改PCB就可以正常使用USB设备(当然这是下策)。
▼下图为IMX6Q RM中提到的VBUS阈值设置
USB VBUS的“坑”就先给大家分享到这里,希望对您的设计和排查问题有一定帮助。
|