想问下论坛大佬们关于USB OTG的问题。
我用全志H6做的一个核心板,想用USB0的OTG功能让H6做从机用DragonHD测试DDR频率。修改了USB0的原理图,去掉了USB0_DRVBUS和SY6280AAC功率开关芯片, 强制H6只做从机,使用电脑直接供电VBUS, 并连接GND, DM, DP到电脑。现在的问题是用两头USB3.0 Male TYPE A数据线连接后,没有任何反应,电脑端device manager没有任何设备被识别到,也没有“叮”的声音。
目前我猜测的原因有几个:1. OTG不支持USB3.0; 2. H6软件部分有地方没改成OTG模式; 3.PCB设计问题,USB差分走线有点不标准,没有完整参考层? 但又感觉USB2.0的速度不高好像不太需要?目前线宽5mil, 线距6mil(线边缘之间),做了等长(<10mil).1.6mm板厚,2层板。
相关原理图截图如下:
相关PCB设计图如下:
麻烦大家帮忙看看啥原因,有没有什么easy fix。如果真的是PCB问题,我就重新再画再打板吧。。。新手估计不出来哪里问题比较大。
感谢!!
离线
多做一点说明:H6最小核心板的基本功能没有问题,上面说的2层板是外设板子。核心板用MINI-PCIE插到外设板子上。这个USB就是外设板子上的。
离线
它确实不支持3.0,别搞那么高端,粗糙一点没准还能跑。还有插windows上试试看,windows识别usb比较厉害,有时候linux识别不出来。还有做otg不是还有个id脚吗,那个是不是要强制接地,不知道悬空有没有影响,otg一般都用五个脚的。还有dpdm线是不是还有个1.5k的上拉电阻来决定高低速度的,这个不接有的电脑也能识别,不知道有没有影响
最近编辑记录 microxp (2024-08-19 21:46:38)
离线
@microxp
OK, 我再搞个USB2.0的线试一试。
上面的电脑测试就是windows上做的,没反应。
那个id脚我也不是很明白,是照着立创有个大神的图画的,和ORANGE pi 3 lts (https://drive.google.com/file/d/11tVALHvTHNn3oUxkV5ggLSKQVnBsGRnp/view)的基本一致,都没带id脚,上下拉电阻也都没有,有点奇怪。
感谢提供这些思路!!:)
离线
没翻以前的图纸,这个USB0不是下载的那个口吧?
DragonHD工作原理就是给内存里download一个固件,然后跳转运行这个固件,这固件做的事情就是usb通信和DDR测试。 所以需要连接到可以下载代码的那个usb口,切其他usb口的模式到device是没有用的,重启后它不是下载口 下载口是固定的
离线
@arychen
对的,usb0就是那个下载口,只有这个口可以下固件测ddr。
但就算是没调成下载模式/驱动没装好,硬件连接应该至少有点反应才对,这点比较奇怪。
离线
@arychen
对的,usb0就是那个下载口,只有这个口可以下固件测ddr。
但就算是没调成下载模式/驱动没装好,硬件连接应该至少有点反应才对,这点比较奇怪。
你能下代码吧 那下载模式就是可以的,在强制下载模式下执行PC上的测试工具就行了。
现在你的没反应,是指系统起来adb口找不到吧?
离线
@arychen
我还没下载过代码,不知道下载功能行不行。现在就是不管是否启动了dragonHD,usb硬件连接电脑没有反应,没有找到设备,也没有响声。按理说,不管是否下载代码或者跑什么pc端软件,usb插上至少得有个硬件设备层面的反应才对。测了usbbus是有5v电压的。
adb是Android Debug Bridge? 我没跑安卓系统,跑的ubuntu(orange pi提供的ubuntu),从tf卡启动的。
今天usb2.0的线会到,试一试2.0的线看看再汇报。
离线
测试了usb2.0的线,也不行,啥反应没有。
感觉可能是PCB问题了。。。。
离线
先试下强制下载模式,下载口PC能不能认出来吧 你的固件可能usb就配的host模式,所以插电脑上没啥东西
离线
测试了usb2.0的线,也不行,啥反应没有。
感觉可能是PCB问题了。。。。
usb没那么难吧,直接飞线都可以呀,反正就四根线,直接拿飞线接上看就行了
离线
先试下强制下载模式,下载口PC能不能认出来吧 你的固件可能usb就配的host模式,所以插电脑上没啥东西
这个怎么强制下载模式?要改固件的哪些地方?
离线
先试下强制下载模式,下载口PC能不能认出来吧 你的固件可能usb就配的host模式,所以插电脑上没啥东西
目前的改动是修改了 /boot/dtb-5.10.75-sun50iw6/allwinner/里面的dtb文件(没找到dts文件,通过反编译dtb到dts,然后又编译回去)。具体是找到了usb-otg那个设备,改动dr-mode从"host"到"peripheral". 然后重启。但是还是不行,连线依然没有任何反应。
还需要修改别的地方吗?大家帮忙看一下,感谢!!
离线
应该是主线linux吧,uname -a 的output:
Linux orangepi3-lts 5.10.75-sun50iw6 #2.2.2 SMP Wed Apr 20 09:45:07 CST 2022 aarch64 aarch64 aarch64 GNU/Linux
最近编辑记录 剑圣UZI (2024-08-22 14:53:30)
离线
应该是主线linux吧,uname -a 的output:
Linux orangepi3-lts 5.10.75-sun50iw6 #2.2.2 SMP Wed Apr 20 09:45:07 CST 2022 aarch64 aarch64 aarch64 GNU/Linux
参考这个看看:请问下主线 V3s Linux 如何在程序运行中自动切换USB模式: otg/host/peripheral
离线
@晕哥
试了一下这个方案,我的结果和其中cityf那个人一样:
echo "peripheral" > /sys/devices/platform/soc/5100000.usb/musb-hdrc.5.auto/mode
echo "host" > /sys/devices/platform/soc/5100000.usb/musb-hdrc.5.auto/mode
然而, 一点反应都没有。
无论写什么, 里面都是:
# cat /sys/devices/platform/soc/5100000.usb/musb-hdrc.5.auto/mode
b_idle
离线
问题解决了。不需要特别的设置设备树的usb peripheral和USB gadget driver。(但我修改了dr_code=“peripheral”)
需要进入FEL mode,或者叫下载模式,这个模式下H6自动作为USB device,连接PC作为host进行通信,不走Linux内核的usb driver。进入FEL的方式是:H6关机;拔出TF卡,重新上电(或者保险起见按住UBOOT按钮上电),连接USB线到PC。这样H6不会正常启动,而是进入下载模式,且能被PC识别成unknown device(会听见叮的一声)。
下一步是安装DragonHD的驱动,驱动在软件包内,设置路径在Windows的device manager内自动搜索driver就可以装上,这样之前的unknown device就变成:"USB Device(VID_1f3a_PID_efe8)",表明可以正确识别了。
最后一步是打开DragonHD软件,选择芯片型号和CLK频率,先点击启动,后重新插入USB线到PC,这样就可以正常测试了。不然会一直显示"未关联设备"。
希望有用~ 感谢大家提供的思路
离线