您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > USBOTG技术概述
USBOTG技术概述-1-USBOn-The-Go技术概述USB-OTG实际上是USBImplementersForum组织对于传统USB接口的一个追加协议,直接建立在USB2.0基础之上。它修改了USB接口的针脚定义和接口外形,对USB2.0标准最重要的扩展是它更具节能性的电源管理和允许设备以主机和外设(外围设备)两种形式工作(图1)。USBOTG定义了两种设备类型:双用设备(英文全称为Dual-RoleDevice,以下简称为DRD)和单外设设备(英文全称为Peripheral-OnlyDevice,以下简称POD)。DRD具备Host和外设的两种功能,但也正是因为具有双重角色任务,DRD必须有切换角色等新功能;POD基本与外设功能近似,因此在这里我们主要讨论DRD设备。要成为一个USBHost,必须具有存储外设驱动程序、提供足够的USB端口电流和相对应Host插座的能力。而它所要实现的基本功能包括三个部分:管理和控制总线,包括提供USB端口电源管理;检测外设的接入和断开;初始化总线上所有数据包传输等等。1.USBOTG的接插件USB2.0协议规范中定义了3种Host与外设的连接方式:Host上的标准A插头和插座、外设上的标准B插头和插座以及外设上可选择的MiniB插头和插座。USBOTG主要是为了应用在便携式移动USB设备上,要求减小插头和插座的大小。为此,OTG1.0作为USB2.0的补充,新定义了两种接插件:MiniA插头和插座、MiniAB插头和插座。(提示:在USB-OTG规范中,A设备代表主设备,充当Host的角色,一般指以主机方式工作的DRD设备,;B设备代表从设备,充当外设的角色。)MiniAB插座正是为OTGDRD的特点精心设计的。MiniA插座是设计在Host上的,用于连接外设的MiniA插头;同理,MiniB插座设计在外设上,及来连接Host上的MiniB插头。因此,不同的插座类型,区分了不同的USB设备。当OTGDRD需要进行设备角色变换时,就需要相应的插座类型,所以OTDDRD正是凭借两种特性来充当双用——MiniAB巧妙地应用机械原理,一个插座可以连接MiniA和MiniB插头,而系统又可以通过ID信号线来识别。当然,为了方便用户识别,厂商们对接插件的封装颜色进行了不同的定义:MiniA插头及插座采用白色、MiniB插头及插座采用黑色、MiniAB插座则采用灰色。USBOTG技术概述-2-两个DRD设备连接在一起时可交替以主机和从机的方式工作,这个特点兼容了现有USB规范主机/外设的结构模型。OTG主机同样负责初始化数据通信的任务。比如:总线复位、获取USB各种描述符和配置设备。这些配置完成后,两个OTG设备便可以分别以主机和从机方式传输信息,两个设备主从角色交换的过程由主机协商协议(HNP)定义。以下我们以DRD设备来讨论SRP和HNP协议。2.会话请求协议——SRP在以往的USB系统运行过程中,主机提供5V的电源和不低于100mA的总线电流。当OTG主机连接到有线电源时这种方法是适用的,但像手机这样的自供电移动设备则不能承受如此大的电能浪费。一般OTG系统中的A设备采用的是电池供电,这就决定了OTG系统电源管理是非常重要的。因此,为了节省OTG系统的电源开支,OTG规定A设备在没有总线活动时可以关掉Vbus上的电源。这样,当一个B设备连接到A设备上之后,就要初始化SRP,并发给A设备,请求A设备在Vbus提供电流支持,进而进行通信。OTG中,DRD可以作为A设备,也可以作为外设设备,因此,DRD必须支持初始化SRP和响应SRP;而POD只能作B设备,所以只能初始化SRP(图2)。SRP中,B设备有两种方式可以向A设备发送请求,要求建立SRP:一种是数据线脉冲,一种是Vbus脉冲。任何一个A设备只要求能响应一种SRP方式,而B设备必须能初始化两种SRP方式——-当B设备先初始化一种SRP,而A设备无法响应的话,则B设备就要用另一种SRP方式。A设备检测到数据线脉冲调制或者Vbus脉冲调制后,首先复位总线,然后发送Set_feature命令而先不进行设备的枚举,此时B设备尚处在默认的从机状态。如果Set_feature命令成功执行,说明B设备为DRD设备,A设备(使用HNP协议)挂起Vbus准备让B设备交换为主机方式接管总线。如果Set_feature命令执行失败,说明B设备为外设式OTG设备,于是A设备使能Vbus准备开始一个传输事务。当A设备认为总线上没有传输需要时,挂起Vbus以结束该事件。3.主机流通协议——HNP在上面我们已经提及OTGDRD采用MiniAB型插座,因此DRD既可以作为Host,也可以作为外设。而在某个OTG连接中,这个DRD到底是作Host(即A设备),还是作为外设(B设备),则要根据接入的另一个OTG设备来定的。如果接入的是OTGPOD,那么这个DRD肯定是充当A设备角色。但如果接入的是另一个DRD,那么这两个DRD之间就可以HNP协议来随时切换Host角色(图3)。USBOTG技术概述-3-一次完整的HNP流程是这样的:B设备希望控制总线,成为Host;在A设备发送了SetFeature命令后,B设备就可以请求控制总线;A设备挂起总线,通知B设备可以控制总线;B设备发送信号,断开与A设备的连接;A设备改变自身设置;这样A设备就可以充当外设的角色,放弃对总线的控制权,这时B设备就成为了Host。4.驱动程序与PC主机不同,便携式设备没有便捷的方式和足够的空间装载新的驱动程序。因此,OTG规范要求每个DRD设备有一个支持的外设式OTG目标设备的列表,列表中包括设备的类型和制造商等信息。USBIF正计划定义“OTGType”规范。对于符合此规范的设备,OTG主机只须提供一个驱动程序即可,这将使OTG主机无须为每个设备提供单独的驱动程序,从而支持尽量多的OTG外设(图4)。与PC机不同,OTG两用设备的驱动程序栈是由USB主机栈和USB设备栈构成,以满足两种工作方式的需要。OTG驱动程序通过连接器的不同或者是否支持NHP交换设备的工作方式来决定使用USB主机栈还是USB设备栈。当OTG两用设备以主机方式工作时,USB主机栈工作。其中的主机控制器驱程序负责USB主机栈与硬件端点的数据交换。当OTG两用设备以从机方式工作时,USB设备栈工作。其中的设备控制器驱动程序负责USB设备栈与硬件端点的数据交换。OTG驱动程序负责处理DRD设备的工作方式转换,同时,它还可以返回其结果(如设备是否支持HNP)并处理总线错误。应用层程序通过OTG驱动程序开始或者结束一个传输事务,通过USB主机栈或设备栈与硬件层交换数据。可以说,OTG的确为USB应用带来了新的突破,而目前各数码、外设厂商也纷纷推出了基于OTG功能的产品。这些产品号称是脱离了PC机的束缚,是数码伴侣的一次革命,大有OTG可以一统天下的趋势。那么,OTG真的如此美好吗?答案是否定的!1.传输速度慢USBOTG技术概述-4-OTG虽然属于USB2.0协议的补充,但它的实际传输速度要比USB2.0的数据传输速度慢上许多,而且传输过程中数码相机不能拍摄,对传输时的条件要求苛刻。即使使用最新的OTG2.0版本,1张256MB的存储卡影像传输时间都在5分钟以上,而且要确保传输数据的成功,最好是将相机和存储装置平放在桌子上,稍不留神就会造成传输的失败!但处在野外环境中,试想一下,有谁愿意平端着相机等待5分钟的时间,而且在此期间,还不能使用数码相机拍摄!2.兼容性仍须改进目前支持OTG功能的外设、数码产品已经相当丰富,光是数码相机就有几十个品牌的产品,近千种型号!OTG作为近两年才开发的一种技术,虽然要求每个DRD设备有一个支持的外设式OTG目标设备的列表来对OTG设备提供支持,但目前数码产品升级换代速度极快,同时DRD设备的驱动列表不能像刷新BIOS那样容易升级,因此往往无法支持新OTG设备,要支持所有OTG设备的难度可想而知!而且即使是一般OTG产品的兼容性列表标明本产品可以使用在哪些数码相机上,但即使是标明可以适用的数码相机,在实际使用中也会经常出现死机,或者工作异常,无法传输等问题,因此目前各厂商一般推荐用户在使用OTG设备时最好使用同一品牌的产品。当然,通过USB直接管理外围设备的USBOTG已经吸引了越来越多的技术设计者的注意,但是不同设备间的直接验证成为了非常复杂的问题。一个USBOTG的认证过程成为了限制以前设备实现USBOTG的障碍,这需要众多的外部设备生产商间的协同与沟通,同时也需要在未来新的产品中一步到位地加入USBOTG。3.来自竞争者的压力此外,虽然USB接口在数码设备中的普及率是最高的,但是USBOTG也并非为实现数码设备直连的惟一解决方案,比如IEEE1394有以索尼为首的众多家电厂商的支持,是不会轻易认输的。以上的种种原因阻碍了OTG技术的发展、普及进程。这就是为什么OTG技术在推出后,至今不能普及的原因。因此目前OTG功能一般体现在在数码伴侣上,只能作为一种附带功能,毕竟其固有特点在目前是无法将它作为一个主打功能使用的。当然,现在一些负责任的厂商已经看到了OTG技术本身的优缺点,在推出产品时既考虑了它的优点,也在避免它所带来弊病……总的来说,USBOTG规范是USB2.0规范的补充而不是替代品,PC主机和标准外设并没有被取代。当然,OTG在这些外设间引入了点对点的通信方式,这使得便携式产品的发展有了更加广阔的空间,只要能迅速地得到广大数码外设制造厂商的支持,USBOTG还是很有潜力的一项通用标准……
本文标题:USBOTG技术概述
链接地址:https://www.777doc.com/doc-2865290 .html