USB以其具有高速度、低成本、低功耗、即插即用和使用维护方便等优点,使得USB接口的设备正在以惊人的速度发展。随着USB应用领域的逐渐扩大,人们对于USB的期望也越来越高,希望USB能应用在各种计算机领域中,尤其是在移动数据领域中,希望能通过PDA等移动设备来直接与USB外设通信,使得USB能应用在没有PC的领域中。正是在这种新的需求下,USB On-The-Go(USB OTG)技术应运而生。本文主要介绍了USB OTG技术的性能特点、芯片类型及其主要应用领域。
1 USB OTG 的性能特点
1.1 Mini-AB插座和插件
USB 2.0协议规范中定义了3种主机与设备的连接方式对:主机上的标准A插头和插座、外设上的标准B插头和插座以及外设上可选择的Mini B插头和插座。USB OTG主要是为了应用在便携的移动USB设备上,要求减小插头和插座的大小。为此,OTG 1.0作为USB 2.0的补充,新定义了2种接插件:Mini A插头和插座、Mini AB插座。Mini AB插座正是为 OTG DRD的特点精心设计的。Mini A插座是设计在主机上的,用于连接外设的Mini A插头;同理,Mini B插座设计在外设上,用于连接主机的Mini B插头。因此,不同的插座类型,区分了不同的USB 设备。当OTG DRD需要进行设备角色变换时,就需要相应的改变插座的类型。所以,OTG DRD 上应该同时具有2种插座。Mini AB正是巧妙地应用机械原理,一个插座可以连接Mini A和Mini B插头,而系统又可以通过ID信号线来识别是Mini A还是Mini B插头。同时,为了方便用户识别,对接插件的封装颜色进行了不同的定义:Mini A插头和插座采用白色(White),Mini B插头和插座采用黑色(Black),Mini AB插座采用灰色(Gray)。
1.2 OTG的电气层协议
USB OTG通过五角接口和五线电缆传输数据。除了传统的 四个针脚外,第五个针脚为“ID”脚,ID脚决定了初始化的主从角色:在Mini-A插头中,ID短路接地,所连设备被初始化为主;在Mini-B插头中,ID悬空,所连设备被初始化为从。在软件控制下,主从角色也可以利用主设备转换协议(HNP)进行互换。图1为USB OTG 主从角色的设定。

图1 USB OTG 主从角色的设定
主设备可提供低功率输出,最小为8mA的电流到USB电缆,当不传输时可关掉VBUS。在VBUS关闭时,如从属设备需要使用总线,则可请求主设备开启VBUS,为VBUS重新供电。低功耗可支持USB设备在电池供电的情况下正常工作,延长电池寿命,节省能源。
1.3 OTG的软件结构 OTG的软件结构包括3部分:OTG系统硬件驱动,包括会话请求协议(SRP) 和主机交流协议(HNP);OTG系统外设软件,实现标准的USB类,来实现特定的USB外设功能;OTG系统主机软件,包括主机驱动程序、操作系统支持软件以及支持外设的类库。
1.3.1 OTG硬件驱动
●会话请求协议SRP 会话请求协议(Session Request Protocol,简写为 SRP)用于B设备向A设备请求建立会话和使用总线。 OTG规范对USB协议最大的扩展就是让双重角色的USB外设具有有限的主控设备能力,能够提供动态的能源管理以及自动转换主控设备或者外围设备功能,这是通过SRP和HNP实现的。 在一个标准的USB系统中,主控设备在设备连接的整个过程中无论总线是否空闲,始终向USB总线提供标准的5V/100mA能量,这样的要求对于能源有限的便携式设备比如手机来说就很苛刻。为了能够节省能源,USB2.0为OTG主控设备(A设备)提供了一种方法以便在USB总线上没有数据传输时暂时关掉VBUS以节省能量,并且A设备能在外围设备(B设备)发出请求后重新提供VBUS并重新启动一个新的数据传输任务。 作为USB外设的B设备可以在前一个任务完成2ms之后的任何时刻启动SRP。B设备这样做可以提供“资料线暂停(data-line pulsing)”和“VBUS暂停(VBUSpulsing)”。A设备一直在总线上检测“数据线暂停”和“VBUS暂停”,并在它认为适当的时候通过启动VBUS来开始下一个任务。这个任务一直进行到A设备认为在总线上没有传输的需要的时候,这时A设备就结束了这个任务。
● 主机交流协议HNP 主机交流协议(Host Negotiation Protocol,简写为HNP)用于初始B设备与初始A设备之间切换主机角色。 当一个双重身份的设备与一个Mini-A插件连接时,这个设备缺省作为主控设备使用;当它与一个Mini-B插件连接时,这个设备缺省作为外围设备使用。但如果需要转换该设备的身份是,并不需要用户进行任何操作,一个作为缺省从端作用的双重身份的设备可以通过HNP协议来改变身份。 一次完整的HNP流程是这样的:B设备希望控制总线,成为主机;在A设备发送了SET_FEATURE命令后,B设备就可以来请求控制总线;A设备挂起总线,通知B设备可以控制总线;B设备发送信号,断开与A设备的连接;A设备启动D+信号在线的上拉电阻,将D+置高;这样,A设备就开始作为外设,放弃了总线的控制权,B设备成为了主机;在B设备完成了对总线的控制,就需要上拉其上的D+电阻,放弃总线控制权。当然,这一系列的HNP活动,不仅仅是通过信号在线的电平变化来实现的。电平变化只是一种标志,真正内部对总线的控制权的变化,则要通过软件来实现。
1.3.2 OTG系统外设软件 考虑到USB协议的复杂性,用户在进行USB主机系统软件设计时,可先侧重实现一部分功能,以后再逐步实施和完善。这里侧重Mass Storage 类协议软件。
● Mass Storage 类协议 Mass Storage 类(也就是大容量类)主要用于为软盘接口、ATA接口、IDE硬盘接口及Flash内存等设备建立的USB接口,类代码(bInterfaceClass字段的值)为0x08。这一类的特点是数据交换量大,有可能直接涉及 |