USB是目前流行的有线电连接技术,但它是属于外围连接主机的架构,所以如果没有PC的话,其余外围装置将无法彼此沟通。如今,用户需要的是外围装置能够彼此直接连接,省去PC充当中介的角色,这在数字家庭网络中尤其重要。而USB On-The-Go (OTG) 正是要提供这样的解决方案。
技术挑战
USB OTG标准除了对装置做出新的定义(A装置是主机,B装置是外围)以外,也同时对移动装置的设计规格,提出了许多严格的规范。其中,电源的管理是最大的挑战,例如:USB OTG规定以电池供电的移动装置,必须能够利用普通的锂离子或锂高分子(lithium polymer)电池产生一个5V的电压。此外,它还定义了一个电压,用来监控和管理省电模式。
一个OTG装置的电源管理系统必须能输出一个4.4V~5.25V的电压,其电流至少要有8 mA。因此,对于大多数移动装置而言,其电压转换器(voltage converter)必须要能够将3V~4.2V的电压转换成4.4V~5.25V的电压。使用高效率的电压转换器,是维持电池寿命所必备的条件。
USB OTG也规定电压上升时间不能超过100 ms,以应付外围装置需求大量的电流。在这种情况下,A装置必须关闭VBus,并结束对话(session)。因此,电压转换器的开启(turn-on)时间最好能小于数ms。
OTG装置的互通,是靠四种电压侦测器(voltage detector)不断地侦测的大小,这四种侦测器的电压侦测范围分别是:(大于)4.4V、(0.8V至)4V、(0.8V至)2V、(0.2V至)0.8V。藉由和这四种电压范围,A、B装置就能够了解目前的通信状态。实作上,电压侦测器的无负载电流量(quiescent current)必须非常小,以达到省电的要求。尤其是2.0V的电压侦测器更需要如此,因为当A装置关闭总线时,它仍然可以透过此电压侦测器,知道有“对话请求通信协议(Session Request Protocol;SRP)”的信号来临。USB OTG也具有另一个USB没有的功能:B装置在省电模式下,它仍然可以叫醒。
当VBus未供电时,A装置在VBus上的电阻值必须只有40KΩ~100KΩ,并且VBus的泄漏电压值必须小于0.2 V。OTG装置的VBus去耦合电容值必须在1F~6.5F之间,但是标准的USB主机至少必须有96F。电容值如此规定的目的,是要让OTG装置的电容值(最大6.5F)与标准USB主机的电容值(最小96F)做一区分,电压侦测器必须将电容的充电时间考虑进去,以使两个6.5F的电容能实时充电超过2.1V,这是两个OTG装置互相连接时所必需的;而OTG装置和标准的USB主机互相连接时,96F+1F(1F是OTG装置所允许的最小电容值)的充电电压是维持在2V以下,因此,电压侦测器就可以辨别出要连接的对方是否是OTG装置或是标准的USB主机。这是很重要的,因为标准的USB主机并没有发送SRP信号的能力,双方的去耦合电容之充电电压维持在2V以下,在此情况下,VBus的逆向电流不至于损坏USB主机。
OTG装置是可以直接使用电压转换器,来提供VBus脉冲信号。但是,这种方法会浪费掉功率。比较好的方法是使用电流源,因为它不需要考虑到电容的充电时间,简化了计时(TIming)作业。电流源对电容充电,可以提供线性的电压锯齿(ramp)脉冲;相较之下,电压源对电阻电容(RC)充电时,会产生指数曲线,这不是VBus所要的理想脉冲。
USB OTG规定,在B装置可以开始发出SRP信号之前,在初始化条件中有一项是VBus必须小于0.8V。为了要让VBus的电压准位能够迅速降低,加速SRP作业,可以藉由切换至一个下拉(pull-down)电阻来释放VBus的电能。不过,对此放电电阻的唯一限制是,它的电流不能超过8 mA,因为若超过8 mA,就等于OTG装置开机时的工作电流了。
与上述的硬件实体层挑战一样,OTG软件堆栈的挑战也很艰巨。其实,单纯的OTG软件主要仅包含OTG应用程序和驱动程序两种而已。但是,若OTG装置本身又兼具USB主机与外围的角色,那么像OHCI、UHCI、EHCI、类别驱动程序(主机端)、功能驱动程序(外围端)等标准的USB软件堆栈都必须具备才行。这是因为USB OTG是USB 2.0的补充标准,所以,国外软件厂商一般是以整套软件堆栈的方式来销售,如图1所示。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)