USB系列之“OTG”

OTG技术在实际使用过程中非常普遍,本文就针对其实现进行简单介绍。


OTG技术(On-The-Go的缩写)就是在没有HOST的情况下,实现从设备间的数据传送。主要应用于各种不同的设备或移动设备间的连接,进行数据交换。既能充当HOST又能用做DEVICE,即DRD(Dual-role-devices);OTG设备依然可以连接到PC上用做普通的外设,即POD(Peripheral-Only Device)。USB OTG中引入了两个新的协议,SRP(Session Request Protocol)和HNP(Host Negotiation Protocol),即会话请求协议和主机协商协议。

如果接入OTG设备,系统控制器会判断外部设备的ID脚的电平,决定是什么样的设备插入:如果ID是高电平,则是B接头插入,此时OTG设备就做主模式(HOST Mode);如果ID为低电平,则是A接口插入,然后OTG设备就会使用HNP对话协议来决定它跟外设哪个做HOST,哪个做DEVICE。

还有种主动OTG设置,就是接入外设后,在OTG设备中点击HOST使能,会强制将ID拉低。此时的HOST和DEVICE关系就确定。

SRP用于B设备向A设备请求建立会话和使用总线。OTG系统中的A设备一般采用电池供电,因此,OTG系统电源管理是非常重要的。为了节省OTG系统的功耗,OTG规定A设备在没有总线活动的时候,可以关掉VBus上的电源。这样,当一个B设备连接到A设备上之后,就要初始化SRP,并发送给A设备,请求A设备在VBus上提供电流支持,进而进行通信。在OTG中,1个会话定义为A类设备向电源总线VBUS有效供电的时间。DRD既可作为A设备,也可作为B设备,因此DRD必须支持初始化SRP和响应SRP,POD只能作B设备,所以只能初始化SRP。

HNP用于两个OTG设备互连时角色切换。当2个DRD互连时,哪个设备作为主机,为什么要作为主机?为了解决这两个问题,在OTG中提出了新的协议——主机协商协议(HNP)。在OTG中还定义了一种新的接口——Mini AB插座(Mini AB receptacle)以及Mini A插头(Mini A plug)和Mini B插头(Mini B plug)。在微型AB插座、微型A插头和微型B插头中增加了1个引脚——ID引脚,为了实现HNP,简而言之,两个OTG设备互连时,可以通过HNP协议协商主从地位。协商过程如下:

OTG最早定义了一个Mini AB的插座(后来出现了Micro AB插座,且更普遍使用),他能直接接入Mini A或者Mini B插头,Mini AB有一个ID引脚上拉至电源端,Mini A插头有一个与地连接好的ID(R<10Ω),Mini B插头有一个与地连接的开路ID引脚(R>100kΩ)。为了易于区分两用设备,通常Mini A为白色,多为主机接口,Mini B为黑色,多为从机接口,Mini AB为灰色,多为双重角色接口。

当2个OTG设备连接到一起的时候,Mini A插头的ID引脚会注入一个"0"状态,Mini B插头的ID引脚为"1",ID为0的OTG设备默认为主机(A device),ID为1的OTG设备默认为从机(B device)。

Mini A插头中,ID引脚接地,在Mini B插头中,ID引脚悬空。在OTG中,如果设备的ID引脚接地,则此设备默认为主机,否则为外设。同时,在设备连接使用过程中,通过主机协商协议,允许主机和外设功能互换。假设B-Device为1个手持PDA,A-Device为1个打印机。由于连接线的关系,打印机初始化为主机。但是打印机的驱动程序存在PDA中,这时需要PDA作为主机,打印机作为外设。通过HNP可以方便实现此功能,而不必拔下连接线调换插头方向,重新连接打印机和PDA。

为支持OTG功能,Mini/Micro USB接口扩展了一个ID引脚(第4脚)。

  • A设备端ID脚接地,则初始状态为HOST,例如支持OTG设备做主设备时。

  • B设备端ID脚悬空,默认上拉为高电平,则初始状态为Device,例如支持OTG设备做从设备时。

移动设备如需支持OTG,内部ID引脚需要默认上拉为高;VBUS是输入输出双向引脚。对于DEVICE是power supply输入脚;对于HOST需要输出一个5V电源给DEVICE。



电路描述:VBUS连接到VCC5V_USB,同时外部VCC5V经过控制芯片也输出到VCC5V_USB,作为HOST时需要用到给外部供电,ID脚弱下拉作为比较器的输入,输出作为HOST/DEVICE检测,同时比较器的输入还可以通过控制器控制,其比较器的参考端可以根据控制器的电平进行调整。

作为从设备插入PC端口时,其识别过程如下:

系统默认状态时,ID为高,VCC5V_USB无输出,当系统通过OTG_VBUS检测到VBUS的上升沿触发中断,因为PC端会有一个5V从VBUS给过来,进入中断处理函数进一步设置ID脚状态,ID脚为高表示设备应该切换到从设备模式;

作为主设备时,其配置过程如下:

系统通过OTG_ID检测到OTG_USB_ID下降沿触发中断(实际是插入的USB第四脚直接短接到第五脚地),进入中断处理,切换到主设备模式,通过OTG_VBUS_DRV驱动输出VCC5V_USB;

同时,该电路还可以根据不同的时序需要通过程序进行A、B设备切换,并且能通过调整分压电阻适配不同电平的控制器系统。

USB Type C的OTG实现可参见《USB系列之“Type C通道配置”》系列文章,其中的CC引脚就是实现DFP和UFP切换的。