This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AM335x OTG VBUS电路设计的一些注意要点

最近碰到有些客户遇到USB的使用问题,主要表现在U盘不识别,VBUS 错误等。最后分析出的结果很多都是与VBUS的设计相关。所以在这里简单地分享下VBUS电路设计的一些注意事项。

AM335x采用的是两路USB OTG控制器。所谓的OTG,就是USB模块可以在host模式和device模式之间切换工作。相比早期芯片里的USB HOST控制,OTG控制器不仅在内部状态机设计更加复杂,而且增加了几路外部信号以及相对应的检测,比如ID脚以及VBUS检测。但是许多客户在设计中往往都只将关注点放到了ID脚的处理上,而简单地认为VBUS处理与USB  HOST控制器相同,只要保证500mA正常工作电流即可。之所以说VBUS是一个非常重要的检测信号,是因为在OTG 控制器在USB 设备识别、HOST 和device模式切换过程中,VBUS都作为一个控制信号或者说是触发开关,而在USB HOST控制器里,VBUS仅仅只是作为供电电源。

以下列出了在VBUS设计上的一些注意要点,

1. 在HOST模式,VBUS上需连接不小于120uF的电容。一般来说,120uF-150uF是典型值。

以下是Ti 官方GPEVM USB1接口部分的电路截图,USB1做为HOST口使用,

USB刚一开始连接,会瞬间需要高于500mA的电流。这时如果VBUS的电流供电能力不足,就会在5V上产生跌坑。这个跌坑一方面可能会引起USB 设备工作的异常,另一方面,当这个跌坑低于4V时,AM335x一侧会停止进行下一步的枚举过程,同时进入到VBUS 错误处理(或者叫VBUS过流处理)并输出相应错误信息。完成处理后重新开始HOST 或DEVICE工作模式的检测。而电容的主要目的就是为了在出现跌坑时,有个及时放电的过程以保证电压的稳定。

考虑到AM335x和AM37x采用的是同一个USB  OTG IP,所以下面Ti  wiki网页中AM37x OTG VBUS上电容设计建议也可以作为AM335x设计的参考,

http://processors.wiki.ti.com/index.php/AM37x/DM37x_Schematic_Checklist#USB_OTG

2. 建议VBUS供电采用USB电源管理芯片,如Ti  TPS2051BD

以下是Ti官方 GPEVM上TPS2051BD电路部分截图,

 

除了USB电源芯片可以保证提供足够所需的电流外,更重要的是,AM335x可以通过USBx_DRVVBUS这个脚控制VBUS电源的开关。一旦在HOST模式发生VBUS 错误或者说过流错误,AM335x会先通过DRVVBUS暂时关闭VBUS电源,以防止重新开始OTG工作模式检测时误判断为device模式。为了帮助工程师理解这一过程,AM335x 技术参考手册(TRM, technical reference manual, spruh73i)第16.3节  Functional Description详细介绍了OTG工作流程。

另外,上图中红色部分圈出的USBx_DRVVBUS上接的上/下拉电阻也要根据所选USB电源芯片EN脚极性做正确的选择。以TPS2051BD为例,EN为高电平有效,即当输入高电平时,TPS2051BD会输出5V。在使用这种电源芯片时,请使用下拉电阻。否则,芯片一上电就会在VBUS上产生5V电压,有可能导致OTG模块错误的工作在device模式下,并且无法正常切换至HOST模式,换句话说就是无法识别u盘。相反,如果电源芯片的EN为低电平有效,则需要采用上拉电阻形式。电阻阻值的选择可以参考GPEVM设计,也可以根据实际情况,适当调整阻值大小获得合适的驱动能力。