usb协议中设备连接是主从模式,具体定义自行了解usb协议比较直观的认识,如下:
USB iousbhost开发是指驱动过后板子就可以连接USB接口连接的器件,读取和装载数据了
USB Device是指驱动过後,板子可以当做一个USB移动设备通过USB连接到电脑上,类似U盘
手机只有一个外接usb口为了方便用户使用,如otg上插上一条可以支持U盘插入的線手机就可以直接访问U盘的内容,不需要经过PC手机给外设供电。若手机连上PCPC上的usb口基本为iousbhost开发端,为方便使用手机端作为device端比较方便合理。因此手机端的usb支持iousbhost开发、device模式的自动切换OTG即是增加了iousbhost开发、device协商机制的usb口。
iousbhost开发、device的电路设计不同定义好角色后不可以转變。如果需要转变就是下面介绍的OTG。
分别的电路图见上面博客介绍在实际使用中,若无客制化需求在linux开发中,驱动都是已经有的
各自的角色在设备上电后,根据电路自行执行确定的角色驱动
otg数据线设计比普通的usb数据线多了一条ID线。OTG连接如下:
OTG口就是手机端的充电ロusb口接入PC后连接U盘。
usb口接上设备后在otg口端检测ID脚的电平高低,OTG决定作为iousbhost开发或device端若id脚为低电平作为iousbhost开发端,对外供电;若id脚悬空則作为device端。详见博文《
rk3288平台与linux设备两个设备连接,android端打开rndis换了一个设备后,一样的连接发现rndis开关为灰色,也即没有rndis设备被识别到為什么?
硬件把另外一端的usb连接线的DET脚电平拉高供电就能正常使用。
分析OTG的定义此处otg端作为了device端。从android设备命令查看:
值为2确实被作為device端了。这时通过命令
把otg口设置为iousbhost开发端rndis也无法识别,说明对端就是iousbhost开发端iousbhost开发与iousbhost开发端是不能通信的。
usb协议只能是iousbhost开发与device间通信若不能通信,两端都是device或都是iousbhost开发非OTG口是不能动态设置usb口为iousbhost开发端或者device端,一个确定的开发板usb的角色由设计电路决定。按照usb协议定义嘚电气标准通用usb驱动会自动适配usb驱动。