http://bluefish.blog.51cto.com/214870/1239087
1 引言
随着USB2.0版本的发布,USB越来越流行,已经成为一种标准接口。现在,USB支持三种传输速率:低速(1.5Mb/s)、全速(12Mb/s)和高速(480Mb/s),四种传输类型:块传输、同步传输、中断传输和控制传输。USB应用灵活方便,能满足多种外设的需要。随着个人便携式电子产品的增长和嵌入式技术的飞速发展,USB主机已不再局限于单纯的PC,可以是含有USB主控器的任何设备,如PDA、MP3播放器等。在USB2.O规范中也增加了USB嵌入式设备的标准——On-The-Go(OTG),它使外设可以在主机和设备之间相互切换,即当其连接至PC时,它是1个USB设备,而与其他USB设备相连接时,它便作为USB主机。
2 USB OTG
2.1 USB OTG简介
DSBOTG是USB2.O版本的补充,并不是独立的标准,它保留了USB2.0的所有特点。OTG使2个USB外设在脱离PC的情况下可以直接通信。为了实现这种功能,在OTG中有一个新的概念——双功能设备(DRD:Dual-RoleDevice)。1个DRD能满足下列特征:
●具有一定的USB主机能力和提供1个外设列表;
●作为外设时能够实现全速操作(或高速操作);
●作为主控机时能支持全速操作(低速或高速)
●支持主机协商协议(HNP)和会话请求协议(SRP);
●仅有1个微型AB连接端口;
●能够向电源总线提供不小于8mA的电流。
要实现主机功能,主机必须存储大量的设备驱动程序,并且向电源总线提供一定的电流。对于嵌入式USB主机来说,提供大量的设备驱动程序是不现实的也没有必要,1个嵌入式USB主机只需支持部分特定设备,这些设备就是它的外设列表。
2.2 主机协商协议(HNP)
在USB标准中,主机采用A型接口,称为A类设备(A-Device);外设采用B型接口,称为B类设备(B-Device)。1个DRD既可以作为主机,也可以作为外设。那么,当2个DRD互连时,哪个设备作为主机,为什么要作为主机?为了解决这两个问题,在OTG中提出了新的协议——主机协商协议(HNP)。在OTG中还定义了一种新的接口——微型AB插座(mini-ABreceptacle)以及微型A插头(mi-ni-Aplug)和微型B插头(mini-Bplug)。在微型AB插座、微型A插头和微型B插头中增加了1个引脚——ID引脚,如图l所示。
在微型A插头中,ID引脚接地,在微型B插头中,ID引脚悬空。在OTG中,如果设备的ID引脚接地(即mini-A插头连接的设备,如图l右侧的设备),则此设备默认为主机,否则为外设。同时,在设备连接使用过程中,通过主机协商协议,允许主机和外设功能互换。例如,假设图1左边的B-Device为1个手持PDA,右边的A-Device为1个打印机。由于连接线的关系,打印机初始化为主机。但是打印机的驱动程序存在PDA中,这时需要PDA作为主机,打印机作为外设。通过HNP可以方便实现此功能,而不必拔下连接线调换插头方向,重新连接打印机和PDA。
2.3 会话请求协议(SRP)
OTG收发器一般用在嵌入式设备中,这类设备普遍采用电池供电,对功耗要求很严。为了节省电源,在OTG标准中,当电源总线没有使用时,允许A类设备挂起电源总线。当1个B类设备要工作时,它必须通过某种方法通知A类设备向电源总线供电。为了实现这一功能,在OTG中提出了会话请求协议(SRP)。在OTG中,1个会话定义为A类设备向电源总线VBUS有效供电的时间。需要注意的是,在OTG中电源一直都是由A类设备(连接mini-Aplug的DRD)提供的。由于主机协商协议,A类设备也可能作为外设使用,此时,电源也必须由A类设备提供。当A类设备挂起VBUS后,B类设备进入休眠状态。当B类设备需要再次工作时,它可以通过向数据线发送1个脉冲信号(Data-linePulsing)或向电源总线发送一个脉冲信号(VBUSPulsing)来请求A类设备向电源总线供电。OTG要求无论是DRD设备还是普通的B类设备,都必须具有发送会话请求的功能;同时,普通的A类设备或者DRD设备都必须能够响应1个会话请求。