摘要:USB OTG(On-The-Go)是USB 2.0规范的补充,它使外设可以在无主机参与的情况下直接互连进行通信工程.本文讨论了USB OTG补充规范的新增特性,包括OTG事务请求协议SRP和主机流通协议HNP、连接器和电缆、两用OTG设备和外设式OTG设备、驱动程序以及数据流模型。
关键词:USB 2.0 OTG 规范
USB的广泛应用其正在成为外设与PC机及膝上型电脑连接的工业标准USB外设主要是便携式设备,随着其数量的不断增多,设备之间无主机参与的直接通信成为亟待解决的问题。我们开发了基于USB总线(接口芯片为 Philips公司的PDIUSBD12)的数据采集系统,取得了满意的效果。但在开发USB1.1设备时遇到的设备互连直接通信的解决方案.USB 2.0 虽然在速度等方面有很大的改进,但同样要依赖计算机主机进行通信。
2001年底,USB开发者论坛(USB Implementers Forum,USB IF)发布了专门用于USB外设间“可移动互连”的USB2.0补充规范USB On-The-Go,其目标是使外设以主机的身份和另外特定的一组外设直接通信。本文中归纳USB 2.0补充规范OTG的相关技术,并主要讨论其新增特性。
1 新的协议
OTG补充规范对USB2.0的最重要的扩展是其更具节能性的电源管理和允许设备以主机和外设两种形式工作。OTG有两种设备类型:两用OTG设备(Dual-role device)和外设式OTG设备(Perip-heral-only OTG device) 。两用OTG设备完全符合USB2.0规范,同时它还要提供有限的主机能力考核成绩和一个MiniAB插座、支持主机流通协议(Host Negotiation Protocol,HNP),并和外设式OTG设备一样支持事务请求协议(Session Request Protocol,SRP).当作为主机工作时,两用OTG设备可在总线上提供8mA的电流,而以往标准主机则需要提供100~500mA的电流。
两个两用OTG设备连接在一起时可交替以主机和从机的方式工作,这个特点兼容了现有USB 规范主机/外设的结构模型。OTG主机同样负责补始化数据通信的任务,比如:总线复位、获取USB各种描述符和配置设备。这些配置完成后,两个OTG设备便可以分别以主机和从机方式传输信息,两个设备主从角色交换的过程由主机传输协议(HNP)定义。以下以两用OTG设备为例讨论SRP和HNP。
1.1 事务请求协议SRP
在以往的USB系统运行过程中,主机提供5V的电源和不低于100mA的总线电流。当OTG主机(指以主机方式工作的两用OTG设备,又称A-device)连接到有线电源时这种方法是适用的,但像手机这样的自供电移动设备则不能承受如此大的电能浪费。为了节约电源延长电池的使用寿命,当总线上没有活动时,OTG主机将挂起总线电源VBUS。 SRP协议可使OTG从机(指外设式设备或者以外设方式工作的两用设备,又称B-device,此处指后者)请求A-device重新使能VBUS,而后 A-device使用HNP协议交换两个设备的工作方式,这两步完成后由新的OTG主机开始事务传输。B-device可在前一事务结束2ms后的任意时间开始SRP,SRP的时序波形见图形1。
B-device将先后执行数据线脉冲调制(data-line pul-sing)和VBUS脉冲调制(VBUS pulsing) 。它通过使能数据线上拉电阻(全速和高速设备为D+,低速设备为D-)5~10ms实现前者,后者通过驱动VBUS实现。VBUS必须要有足够长的时间对其电容充电,这个时间应能保证不大于13μF的电容充电至2.1V(OTG设备的电容是6.5μF或更小),从而不会对标准主机的96μF或更高的电容充电至2.0V。该限制保证了从B-device引来的VBUS电流不会破坏标准主机的端口。
A-device检测到数据线脉冲调制或者VBUS脉冲调制后,首先复位总线,然后发送 Set_feature命令而先不进行设备的枚举,此时B-device尚处在默认的从机状态。如果Set_feature命令成功执行,说明B- device为两用OTG设备,A-device(使用HNP协议)挂起VBUS准备让B-device交换为主机方式接管总线。如果 Set_feature命令执行失败,说明B-device为外设式OTG设备,于是A-device使能VBUS准备开始一个传输事务(此时,A- device只是被唤醒,并未改变工作方式)。当A-device认为总线上没有传输需要时,挂起VBUS以结束该事务。这种A-device自动检测B -device是否支持HNP协议的特征称为"No Silent Failure"。
1.2 主机流通协议HNP
当两用设备连接了一个Mini-A插头或者Mini-B插头时,它相应的便以OTG主机或者OTG外设的默认方式工作。A-device为默认主机,所以由它提供VBUS电源,且在检测到有设备接入时复位总线、八举并配置B-device。
A-device在完成对B-device的使用后,可以通过查询B-device的 OTG性能描述符来判断是否支持HNP协议(即是否为两用OTG设备)。如支持HNP,B-device将返回有效的OTG性能描述符,A-device 则产生一个Set_feature命令(即HNP_Enable)来通知B-device可以在总线挂起的时候以主机方式工作,随后A-device挂起总线。HNP的时序波形见图2。
B-device通过上拉电阻(全速时)或者下拉电阻(高速时)拉低D+以示连接断开。随后,作为对B-device断开的响应,A-device使能它的数据线并开始以从机方式工作。完成这些转换后,B-device和A-device便各自以主机角色和外设角色使用总线。如果该B-device属于两用OTG设备且A-device不再使用它了,A-device便重发Set_feature命令并挂起总线。若B-device申请角色转换时出错,A -device则拉低VBUS以结束该事务。当B-device正常结束传输事务时便挂起VBUS使能其上拉电阻,重新以从机方式运行。A-device 检测到总线挂起后,发出一个连接断开信号并重新以主机方式工作。
2 连接器和电缆
2.1 连接器
USB IF在OTG中定义了更小的连接器,可以同时用于主机式和外设式的设备、具有更低的电源需求、扩展的电源保护模式和利于上层软件开发的简洁设计。
OTG和现有的USB2.0规范完全兼容,一个主要的机械上改进是它的新式连接器。USB 2.0定义了三种连接器对(插头和插座):Standard-A、Standard-B和Mini-B。Mini-B连接器是专为较小的外设(如移动电话等)开发的。OTG规范增加了第四种插头:Mini-A,两种插座:Mini-A和Mini-AB。这些连接器比最初的USB连接器要小许多(如: Mini-A插头截面积只有Standard-A插头的38%),更适合于便携式设备。
Mini-AB插座用于两用设备。Mini-A新增的ID脚(以前的USB插头不含此脚)在连接Mini-AB时接地短路,而Mini-B则使该脚断开,这样两用设备便可识别连接设备的类型以决定设备的默认角色。
Mini-A和Mini-B插头是严格配对适用的,如:不能将Mini-A插头和Mini-B插座配合使用。但是,Mini-AB插座适合于以上两种插头。在外形上,Mini-A更新近于椭圆形,而Mini-B更接近于正方形。另外,他们的插头和插座内部的塑料都有颜色:Mini-A为白色,Mini-B为黑色,Mini-AB为灰色。
2.2 电缆
USB 2.0规范定义了两种电缆:Standard-A至Standard-B和Standard-A至Mini-B。OTG新增了两种电缆:Mini-A至 Standard-B和Mini-A至Mini-B。Mini-A-to-Mini-B电缆的延迟被减少到可以在“A端”使用适配器,如:用 Standard-A插头连接OTG两用设备需要一个Standard-A插座至Mini-A插头的适配器,而且Mini-A插头连接Standard- A插座时需要一个Mini-A插座至Standard-A插头的适配器。