USB OTG协议基础

一、应用场景

USB OTG是USB On-The-Go的缩写,是近年发展起来的技术,是USB2.0版本的补充。 传统意义上,USB接口的设备只能定义为一个功能,要么是HOST,如PC;要么是设备,如U盘、移动硬盘、数码相机等;HOST可以对设备进行数据操作,而设备不能从HOST读取数据,也不能与其他设备之间进行数据交换。要实现设备间的数据交换,必须经过HOST中转。  OTG技术实现了2个USB外设在脱离PC的情况下可以直接通信。

二、基本概念

2.1  A设备和B设备

OTG设备通过Mini-A,Mini-B以及Mini-AB接口进行连接。


OTG设备分类:

只能作为主机的设备:配备有mini usb A型插座,只能插入mini usb A型插头

只能作为从机的设备:配备有mini usb B型插座,只能插入mini usb B型插头

可以做主/从机的设备:配备有mini usb AB型插座,可以插入mini usb A型或者mini usb B型插头

(注1:mini usb A型插头的ID引脚内部接到低电平,mini usb B型插头的ID引脚内部接到高电平)

(注2:mini usb A型插头只能插入mini usb A型插座,mini usb B型插头只能插入mini usb B型插座,它们都能插入mini usb AB插座)

A、B设备定义:

设备的ID引脚为低电平,则该设备为A设备,并且作为默认的主机,并且始终为总线提供供电。

设备的ID引脚为高电平,则该设备为B设备,并且作为默认的从机。


A、B设备由它们接口ID引脚电平确定,所以一旦两个设备连接后,A、B设备的角色不会改变,但是设备的主从特性却是可以在通信中改变的。


2.2 SRP(session request protocol)

通过数据线上的脉冲,请求A设备打开VBUS并且开始一个Session。Session为从VBUS打开到关闭这一段时间。A设备允许回应SRP,B设备允许发起SRP。一个能够支持HNP的B设备应该能够发起SRP。当A插头插入时关闭VBus的Host必须支持回应SRP,VBus总是打开的Host不必响应SRP。

作用:告诉A设备,我B设备,要准备传数据了,请打开你的VBUS。

对象:B设备用来发起对话请求,A设备则必须响应B设备的SRP。


2.3 ADP(attach detection probing)

USB主从设备或USB OTG设备,如何知道USB总线上有没有挂接其它USB设备呢?USB设备会周期性地检测USB端口的电容值,如果USB端口电容值变化足够大,大到可以确定有新的USB设备接入了,那么USB A型设备会为USB总线提供电源,并检测设备连接;而USB B型设备则发起一个会话请求(SRP),并等待A型设备的响应。 

作用:提供设备检测是否有对端设备插入。

对象:USB主从设备皆可


注:对于支持ADP协议的A设备,它能够实时监测到对端是否有设备插入,此时B设备可以不支持SRP协议。对于不支持ADP协议的A设备,B设备必须支持SRP来通知A设备,自己已经连接,请求打开VBUS。为了适用更多的情况,B设备一般都支持SRP协议。


2.4 HNP(Host Negotiation Protocol)

当前的USB Host通过HNP Polling(类似Polling Hub)通过轮询GetStatus命令返回的数据中的Host request flag查询对端设备是否请求变为Host,Polling间隔为1-2秒。
当当前的A设备决定允许B设备转变为Host以后通过SetFeature()打开b_hnp_enable,B设备作为主机,A设备作为从机,本次Session结束后Host又回到A设备手里。 

作用:OTG设备通过HNP来切换Host/Device角色。

对象:A设备和B设备必须都是具有双功能的OTG设备


注:A设备一般都做为主机角色,作为从机也是暂时性的。


2.5 OTG设备描述符

在设备枚举时,A设备通过GetDescriptor向B设备请求OTG描述符。OTG描述符也应当作为GetConfiguration的一部分返回。其中的bmAttributes标示B-Device是否支持ADP/HNP/SRP
标准设备特性,通过SetFeature设置。
b_hnp_enable :设置此特性,显示B设备被允许进行HNP,A设备必须在T(HOST_REQ_SUSP)时间内挂起总线。
a_hnp_support:早期OTG版本的兼容特性,设置这个特性指示B设备对端的A设备支持HNP。A设备应当对B设备设置此特性如果A设备支持HNP。
GetStatus()中数据部分OTG Status最低位为Host Request flag,指示当期的USB Device角色期望变为USB Host角色。


三、设备连接过程

OTG 设备/Embedded Host 与 仅作为外设的B设备(自带A型插头)
Host端检测到A插头插入,停止ADP,打开VBus,因为B设备与A插头连为一体,此时B设备必定与Host连接,Host检测到外设连接,开始枚举。

OTG 设备/Embedded Host 与 仅作为外设的B设备(不自带A型插头)
Host端检测到A插头插入,停止ADP,打开VBus,如果B设备是线缆连接完毕,则在将A插头插入后整个连接过程与上面无异;如果此 时B设备未连接到Host,则设备连接超时,VBus再次关闭,等待下一次ADP的改变(线缆连接完毕),再次打开VBus,此时如果设备通过A插头连接到主机,则开始正常总线枚举。

OTG设备与 OTG设备
Host端检测到插头插入,则打开VBus,如果没有外设检测到,则关闭VBus,打开ADP,Device端检测到插头插入,则打开SRP,如果线缆没有插入,则SRP超时,Device端开始进行ADP Probing,当线缆连接完毕,Device端侦测到ADP变化,发送SRP请求Host打开VBus,Host回应SRP并且打开VBus,完成设备 连接。

四、参考博文

http://blog.chinaunix.net/uid-9688646-id-1998331.html

http://blog.csdn.net/evilcode/article/details/6551959




  • 2
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值