采用AM3354芯片,新旧板子设计方案一样,在旧板子上USB功能正常,在新板子上,发现USB功能异常:USB0,USB1均没有任何反应(没有报错,没有反应),做了如下问题排查:
(1)程序肯定没有问题,在老的板子上运行,USB功能是OK的
(2)将USB的USB_DRVBUS引脚强制为GPIO功能进行发波测试,确认USB_DRVBUS,USB_VBUS的功能都是OK的,说明硬件PCB及连线没有问题(所有的电源都测过是OK的)
(3)通过串口终端,对比在新旧板子上的启动打印信息,发现打印信息完全一样,没有USB异常方面的信息
综上,感觉在新的板子上,USB压根没有启动一样,但是,又肯定不是软件和硬件的问题,两个板子唯一的区别就是CPU不是同一个批次的,不知道是不是CPU存在BUG啊?有什么原因会造成USB没有任何反应呢?请指教!
Gary Wu:
有无做交叉试验?
即在新的板子上焊老的板子上通批次的芯片试试
jinlei zhang:
回复 Gary Wu:
有做过交叉试验,发现新的板子就是不行,老板子怎么都可以!经过对比分析,新旧板子是一样的,写了测试程序,将DRVBUS当成IO控制,波形都是OK的,说明硬件电路是没有问题的,实在是找不到原因了!从测试结果来看,并没有报告任何USB方面的异常信息,感觉USB驱动程序压根没有启动!请问,有什么可能的原因会导致USB驱动程序不动作呢?请高手指教,谢谢!
leo chen:
回复 jinlei zhang:
呵呵,越是诡异的问题,越是简单的原因,我倾向于好好检查电路图和PCB。包括焊接的电阻,电容之类的
Gino E:
回复 leo chen:
你好,
不知道你的问题有没有解决,如果没有,以下问题可能有助于你问题的解决。
1. 你们USB口 是做什么用的, host, device还是OTG?
2. ID脚是如何处理?
3. 我假设在系统启动时,你的USB已经被初始化完成。插入外部USB device后,DRVBUS的状态是什么?
4. USB 模块的供电正常么, USB PHY和USB CORE。
jinlei zhang:
回复 Gino E:
你好!非常感谢你的回复!
1、两个USB都是作为host
2、ID引脚:一个下拉至GND,一个悬空
3、DRVBUS一点反应都没有(启动过程也没有任何关于USB的异常错误信息),曾强制将VBUS直接连5V,还是没有任何反应
4、VDDHV6,USB3V3,USB1V8各个引脚的电源均进行了测试,都是OK的
软件肯定是没有问题的(同样的程序烧到老板子上,USB功能正常),应该是硬件存在问题,但是,整个板子只有USB功能没有反应(其他外设LCD,TS,NET,UART,CAN…所有外设功能都已经调通了,功能都没有问题),按理来说,USB就几根线而已,实在找不到原因了?请高手指点迷津啊!谢谢
Gino E:
回复 jinlei zhang:
1. 设为HOST模式后(ID拉低),DRVBUS在未插入USB的情况下,始终是低?
2. 直接给外部USB设备供电, 同时AM335x USBx_VBUS脚上也供5V,还是没有反应?
如果DRVBUS始终为低的话,有可能USB的PHY和CORE没有工作(当然也有可能你设置的DRVVBUS的PINMUX不对,设置成GPIO了)。能把你启动的LOG信息以及你USB部分的原理图贴出来么?
jinlei zhang:
回复 Gino E:
非常感谢你的解答!
问题原因找到了,是由于ID下拉电阻100K太大了,更改为10K就一切正常了!