USB host、usb device、USB OTG的判断
USB host、usb device、USB OTG的判断
- 经典博客
- 概念
- host、device
- OTG
- 识别
- host、device
- OTG
- 实际开发中遇到的问题
- 总结
经典博客
文章 | 链接 |
---|---|
OTG数据线与普通USB数据线有什么区别? | https://www.jb51.net/shouji/332556.html |
USB OTG简介、与普通USB线的区别 | https://blog.csdn.net/mao0514/article/details/46345861 |
linux usb驱动——host与device电路 | https://www.cnblogs.com/mahj/p/8480085.html |
开机自动打开USB调试模式和配置android为USB OTA模式 | https://blog.csdn.net/longkg/article/details/8626271 |
USB HOST与 USB OTG的区别及工作原理 | https://blog.csdn.net/rainbowbirds_aes/article/details/86557077 |
RK平台下USB_OTG提供的接口和返回的状态 | https://blog.csdn.net/wangubuntu/article/details/17723793 |
USB Host、USB Device和USB otg的理论简析 | https://blog.csdn.net/DIYfashaoyou/article/details/49895111 |
概念
host、device
usb协议中,设备连接是主从模式,具体定义自行了解usb协议,比较直观的认识,如下:
USB Host是指驱动过后,板子就可以连接USB接口连接的器件,读取和装载数据了。
USB Device是指驱动过后,板子可以当做一个USB移动设备,通过USB连接到电脑上,类似U盘
OTG
手机只有一个外接usb口,为了方便用户使用,如otg上插上一条可以支持U盘插入的线,手机就可以直接访问U盘的内容,不需要经过PC,手机给外设供电。若手机连上PC,PC上的usb口基本为host端,为方便使用,手机端作为device端比较方便合理。因此手机端的usb支持host、device模式的自动切换。OTG即是增加了host、device协商机制的usb口。
识别
host、device
host、device的电路设计不同,定义好角色后不可以转变。如果需要转变,就是下面介绍的OTG。
分别的电路图见上面博客介绍。在实际使用中,若无客制化需求,在linux开发中,驱动都是已经有的。
各自的角色在设备上电后,根据电路自行执行确定的角色驱动。
OTG
otg数据线设计比普通的usb数据线多了一条ID线。OTG连接如下:
OTG口就是手机端的充电口,usb口接入PC后连接U盘。
usb口接上设备后,在otg口端检测ID脚的电平高低,OTG决定作为host或device端。若id脚为低电平作为host端,对外供电;若id脚悬空,则作为device端。详见博文《https://blog.csdn.net/mao0514/article/details/46345861》。
实际开发中遇到的问题
rk3288平台与linux设备,两个设备连接,android端打开rndis。换了一个设备后,一样的连接,发现rndis开关为灰色,也即没有rndis设备被识别到。为什么?
硬件把另外一端的usb连接线的DET脚电平拉高供电,就能正常使用。
分析OTG的定义,此处otg端作为了device端。从android设备命令查看:
cat /sys/bus/platform/drivers/usb20_otg/force_usb_mode
值为2,确实被作为device端了。这时通过命令
echo 1 > /sys/bus/platform/drivers/usb20_otg/force_usb_mode
把otg口设置为host端,rndis也无法识别,说明对端就是host端,host与host端是不能通信的。
总结
usb协议只能是host与device间通信。若不能通信,两端都是device或都是host。非OTG口是不能动态设置usb口为host端或者device端,一个确定的开发板,usb的角色由设计电路决定。按照usb协议定义的电气标准,通用usb驱动会自动适配usb驱动。
USB host、usb device、USB OTG的判断相关推荐
- android usb host hid,Android USB Host与HID通讯
前端时间捣鼓一个HID的硬件, 需要和android通信, 网上搜索了一圈,收获不小. 其中代码之处有些地方需要注意的, 特此注明一下: /*** USB HOST 连接 HID *@authorIV ...
- 网络摄像头转usb接口_Arduino + USB Host Sheild 实现USB鼠标转PS/2接口
制作缘由 公司内网只有PS/2接口,希望可以使用无线鼠标(貌似没有PS/2接口的).而那种USB转PS/2的转接头只是简单的连线,需要键盘或鼠标本身支持PS/2模式才可以正常工作,现代的USB鼠标接收 ...
- usb host 驱动 - device 拔插
1. usbhid 设备拔插 1.1 usb device disconnect 1.1.1 上层卸载usb 设备驱动 生成应用通过ioctl 卸载usb 设备. [ 709.471619] [T29 ...
- 关于usb host和device 相关内容网址
1.USB+HOSTDEVICE控制器的设计与验证: http://wenku.baidu.com/link?url=5HsA8qaSWFqpUEseNb9U9YC3fbRmrhb5IkTuZJByv ...
- linux usb host复位,Linux USB Host-Controller的初始化代码框架分析
Linux USB Host-Controller的初始化代码框架分析 http://blog.csdn.net/zkami usb_hcd_omap_probe (const struct hc_d ...
- S3C2440 WINCE6将USB DEVICE改成USB HOST,实现两个USB HOST
S3C2440一般默认的是一个USB DEVICE,一个USB HOST,即一个主口,一个从口,先来看看USB Device与USB Host相关知识. USB Host: 最底层就是USB Host ...
- USB学习6---Linux Android USB软件架构设计
下面学习针对高通平台的HS-USB(HS:high speed高速)堆栈(stack)软件架构设计和源代码布局的细节. Android HS-USB堆栈基于下面几点: Gadget driver fr ...
- USB Host Device And OTG
USB是一种数据通信方式,也是一种数据总线,而且是最复杂的总线之一. 硬件上,它是用插头连接.一边是公头(plug),一边是母头(receptacle).例如,PC上的插座就是母头,USB设备使用公 ...
- Android + kernel USB host 如何判断插入的设备是高速还是低速的设备
d+ d- 0 0 PC 0 1 错误设备 1 0 非标准充电器 1 1 ...
最新文章
- 【ACM】杭电OJ 2019
- mybatis配置文件不在resources目录下时需进行的额外配置方法
- 【数据字典】国标数据字典
- Windows 活动目录(AD)服务器系统升级到2012之升级完成后工作(八)
- 配置hibernate_测试Hibernate的最低配置
- POJ1177 Picture 线段树+离散化+扫描线
- Convert、Parse、TryParse、(int)等区别(细节小记)
- fameview搅拌机控件_搅拌机爱好者齐聚第十五届年会
- 数据科学入门与实战:玩转pandas实战项目分析航班晚点情况
- virtual 关键字以及虚函数的介绍
- 2000年建模b题matlab,2013数学建模B题matlab代码
- 中国被动元件市场规模调研与发展趋势预测报告2022版
- 阿里云网站域名备案流程全过程(图文讲解)
- 合并报表口诀_《中级会计实务》合并报表学不会?据说把他的讲义抄6遍就能过!...
- 计算机重装系统后黑屏,重装系统过程中电脑黑屏后修复的方法-电脑自学网
- HDU 6627 equation(模拟,分类讨论)
- 【Android应用开发技术:媒体开发】音频
- [WinError 10060]错误
- 【C语言】指针进阶(2)
- NSGAII快速非支配遗传算法二代学习笔记1