基于8148调试 USB1接口时发现,接口一直不能扫描到外围的设备花了很多时间查找,特此总结
1.usb的drvvbus一直输出为低没找到原因。
2.查看内核的打印信息发现一直会报告:
“hub 2-0:1.0: over-current change on port1”
按照FAE的通过命令设置USB1为host模式:echo
F”>/proc/driver/musb_hdrc.1,发现每次执行都会报告
“hub 2-0:1.0: over-current change on port1“。
3.查看手册没看到芯片如何做过流检测的,如何触发的,特意找了一块8168的板子发现也是usb1报告有问题,可实际上这个接口那个板子都没引出。还好有ti的demo板,同样的kernel测试demo板没有这样的问题!!
4.到此判定了一定是我们的硬件设计问题了,重新看手册,
原来是USB作为host时也需要使用USB_VBUS_IN信号,不是作为slave才需要的,8148的板卡没接这个管脚。找8168板卡测试了分别断开和连接上vbusin,果然连接后USB正常。断开后就报告over-current问题!!!
总结:vbus_in是芯片作为是否过流检测的依据之一,需要连接!!!