先理论上分析一下这三者之间的区别与联系。

一、先说USB的引脚定义:

我们PC上目前常用的USB接口为USB3.0和USB2.0,但是以个人短浅的经验,在ARM上基本还都是以USB2.0和USB1.1为主。接口定义以这个为准。

一般的USB接口为四根线:红绿白黑–>从左至右!

android usb线与pc通信 安卓usb数据线接线图_Power


红色-USB电源 标有-VCC、Power、5V、5VSB字样

绿色-USB数据线(正)-DATA+、USBD+、DP+、、USBDT+

白色-USB数据线(负)-DATA-、USBD-、DM-、USBDT+

黑色-地线 -GND、Ground

USB接口的输出电压和电流是:+5V/500mA 实际上有误差,最大不能超过+/-0.2V 也就是4.8-5.2V 。USB2.0规范是由USB1.1规范演变而来的。它的传输速率达到了480Mbps,折算为MB为60MB/s。因此,USB2.0可以驱动程序上可以兼容USB1.1。各种USB接口的定义如下图所示:

android usb线与pc通信 安卓usb数据线接线图_Power_02

从左往右依次为:miniUSB公口(A型插头)、miniUSB公口(B型插头)、USB公口(B型)、USB母口(A型插座)、USB公口(A型插头)

android usb线与pc通信 安卓usb数据线接线图_usb_03


android usb线与pc通信 安卓usb数据线接线图_usb_04

Micro-USB接口跟Mini-USB接口的定义是一样的,在我们的手机中普遍应用,这里就不再附图说明。

二、三种方式的理论简析

USB,英文全称:Universal Serial Bus,即通用串行总线。

Host就是主,可以起到控制作用;device(slave)就是从,是被控制的。例如主机的USB口,可以识别U盘或者是其它USB设备,所以主机的USB就是Host接口,而U盘的就是device。OTG就是指既可以做Host口亦可以做device口。

Mini-USBMicro-USB的ID脚在OTG功能中才使用。在OTG中,初始主机设备称为A设备,外设称为B设备。Mini-A插头(即A外设)中的ID引脚接地,Mini-B插头(即B外设)中的ID引脚浮空,默认上拉为高电平。当OTG设备检测到ID引脚接地时,表示默认的是A设备(主机),而检测到ID引脚浮空则认为是B设备(外设)。

如果你的系统仅仅是用做Slave,那么就使用B接口。系统控制器会判断ID脚的电平判断是什么样的设备插入,如果是高电平,则是B接头插入,此时系统就做主模式(master mode)。如果ID为低,则是A接口插入,然后系统就会使用HNP对话协议来决定哪个做Master,哪个做Slave。也就是说,手机既可以做外设,又可以做主机来传送数据,可用电缆的连接方式来决定初始角色(由ID线的状态来决定)。

简单说就是: USB Host是指驱动过后,板子就可以连接USB接口连接的器件,读取和装载数据了,类似PC。
USB Device是指驱动过后,板子可以当做一个USB移动设备,通过USB连接到电脑上,类似U盘。
实际的USB连接线中,是没有USB_ID这根线的。 都是在接口部分直接拉死的的。

对于Host端,只需将连接线的USB_ID pin和地短接即可,
对于Slave端,USB连接线的USB_ID pin是悬空的。(设备内部上拉)。