USBHOST/DEVICE/OTG概念:
OTG控制器可以做host,也能做device,控制器的角色通常由USBID电平来决定。完整的USB2.0OTG控制器硬件讯号如下:
USB_ID:输入讯号,由USBOTG合同定义,用于辨识USB口所接设备的默认角色(hostordevice)。USB_ID默认上拉,处于device状况,假如要控制器步入host状态,需外接mini-A口或micro-A口将USB_ID短接到地。
也可以由软件进行强制切换,通过控制/sys/bus/platform/drivers/usb20_otg/force_usb_mode实现,可以有如下三种值:
由硬件即USBID决定强制host模式强制device模式HOST模式和OTG模式区别
OTG和HOST的区别就是HOST支持的设备多一点,但须要有对应的从设备插口联接能够实现数据传输,而OTG传输便捷,不须要别的机器上有从设备的插口才能传输。
USBOTG的工作原理
OTG补充规范对USB2.0的最重要的扩充是其更具节能性的电源管理和容许设备以主机和外设两种方式工作。OTG有两种设备类型:两用OTG设备(Dualroledevice)和外设式OTG设备(PeripheralonlyOTGdevice)。两用OTG设备完全符合USB2.0规范,同时,他还要提供有限的主机能力和一个MiniAB插头、支持主机流通合同(HostNegotiationProtocol,HNP),并和外设式OTG设备一样支持事务恳求合同(SessionRequestProtocol,SRP)。当作为主机工作时,两用OTG设备可在总线上提供8mA的电压,而往年标准主机则须要提供100~500mA的电压。
2个两用OTG设备联接在一起时可交替以主机和从机的形式工作,这个特征兼容了现有USB规范主机/外设的结构模型。OTG主机负责初始化数据通讯的任务,例如:总线复位、获取USB各类描述符和配置设备。这种配置完成后,2个OTG设备便可以分别以主机和从机形式传输信息,2个设备主从角色交换的过程由主机传输合同(HNP)定义。
1.1主机(Adevice)和从机(Bdevice)的初始功能
设备的初始功能是通过定义联接器来实现的。OTG定义了一个称作MiniAB的袖珍插槽,他能直接接入MiniA或则MiniB接口,MiniAB有一个ID引脚上拉至电源端,MiniA插座有一个与地联接好的ID(R100kΩ)。当2个OTG设备联接到一起的时侯,MiniA插座边的ID引脚会注入一个“0”状态,MiniB插座边的ID引脚为“1”,ID为0的OTG设备默认为主机(Adevice),ID为1的OTG设备默认为从机(Bdevice)。图1对上述内容进行了图解。
1.2对话恳求合同SRP(SessionRequestProtocol)
这个合同容许Adevice(可以是电瓶供电)在总线未使用时通过切断Vbus来节节电源消耗,也为Bdevice启动总线活动提供了一种方式。任何一个Adevice,包括PC或便携式笔记本,都可以响应SRP;任何一个Bdevice,包括一个标准USB外设,都可以启动SRP;要求一个双重功能设备既能启动SRP,又能响应SRP。
1.3主机流通合同HNP(HostNegotiationProtocol)
HNP是一种拿来实现Adevice和Bdevice主机/从机转换的合同(实际上是线缆的反转)。主/从机功能交换的结果表现在下述过程中:
(1)利用上拉电阻来发送信号给从机。 (2)A device可在B device上设置“HNP Enable”特性。 (3)B device断开上拉。 (4)A Device与上拉电阻相连,表明A device从属于从机。 (5)A device给Vbus供电。 (6)B device检测A device的上拉。 (7)复位/列举/使用A device。
1.4驱动程序
与PC主机不同,便携式设备没有方便的方法和足够的空间装载新的驱动程序。因而,OTG规范要求每位两用OTG设备有一个支持的外设式OTG目标设备的列表,列表中包括设备的类型和制造商等信息。
与PC机不同,OTG两用设备的驱动程序栈由USB主机栈和USB设备栈构成以满足两种工作方法的须要。OTG驱动程序通过联接器的不同或则是否有NHP交换设备的工作方法来决定使用USB主机栈还是USB设备栈。
当OTG两用设备以主机形式工作时,USB主机栈工作。其中的主机控制器驱动程序负责USB主机栈与硬件端点的数据交换,USB驱动程序枚举并保存设备的信息,目标外设主机类驱动程序支持目标设备列表里的设备。主机类驱动程序由芯片制造商提供,同时linux查看usb驱动,OTG提供通用的主机类驱动程序(可以更改以用于非通用设备)。
当OTG两用设备以从机形式工作时,USB设备栈工作。其中的设备控制器驱动程序负责USB设备栈与硬件端点的数据交换linux查看usb驱动,USB合同层负责处理USB合同规范,设备类驱动程序的功能取决于该两用设备的功能(如数码拍照机、存储设备、打印机等)。
OTG驱动程序负责处理两用OTG设备的工作方法转换,同时,他还可以返回其结果(如设备是否支持HNP)并处理总线错误。应用层程序通过OTG驱动程序开始或则结束一个传输事务,通过USB主机栈或设备栈与硬件层交换数据。
1.5数据流模型
OTG主机和设备被界定为功能层、USB设备层和USB插口层3个不同层次,如图2所示。
USB插口层为OTG主机和OTG设备提供化学联接,USB系统软件使用主机控制器来管理主机与USB设备的数据传输。USB系统软件相对于主机控制器而言linux系统入门学习,处理的是以顾客角度观察的数据传输及顾客与设备的交互。USB设备层为USB主机系统软件提供一个可用的逻辑设备。主机通过与之功能匹配的顾客软件实现其各类功能。
OTG设备与往年的USB设备一样有两种通道:数据流通道和消息通道。数据流通道没有定义好的结果,而消息通道则有固定的结构。并且,每位通道都有一定的带宽、传输类型、传输方向和缓冲区大小。自供电设备配置一个默认的控制通道,由他提供该设备的配置和状态等信息。
一问一答:哪些是USBOTG?
USBOTG是USB2.0的补充规范
2.USBOTG针对USB2.0的最重要扩充是哪些?更具节能性的电源管理和容许设备以主机和外设两种方式工作。
USB2.0中定义三种类型:
HOST(主机),Device(设备),HUB
OTG新增两种设备:Dual-roledevice(两用设备),Perip-heral-onlyOTGdevice(OTG外设)
USB2.0中定义了三种联接器对(插座和插头):
Standard-A(主机),Standard-B(外设),Mini-B(较小的外设)
OTG新增插座:Mini-A
OTG新增插头:Mini-A和Mini-AB(同时支持Mini-A或Mini-B的插座)
其中插座和插头内部的塑胶颜色:Mini-A为红色,Mini-B为白色,Mini-AB为黄色
USB2.0中定义了两种线缆:
Standard-A至Standard-B,Standard-A至Mini-BOTG降低的两种线缆:Mini-A至Standard-B,Mini-A至Mini-B
OTG的Dual-roledevice(两用设备)必须具备:有限的主机能力可作为全速的外设(可选的高速形式)可作为全速的主机(可选的低速或高速形式)OTG目标设备的列表及驱动程序
5)支持SRP,HNP
6)一个Mini-AB插头
7)VBUS上不大于8mA的电压输出
8)与用户通信的方法
Perip-heral-onlyOTGdevice(OTG外设):Androidusb怎样实现既可以发觉accessory设备,同时也可以发下host设备
做usb通讯,首先要先弄清楚哪边是HOST那儿是SLAVE例如你的android手机做host,要获得slave,用UsbDevice表示slave要是你的android手机做slave,要获得hostlinux嵌入式开发,用UsbAccessory表示host