详述USB OTG发展及协议标准

USB On-The-Go 扩大了USB 的应用领域,将USB 从传统的PC 与外设通讯的模式,扩展到移动电子和嵌入式领域中,抛开主机PC,实现通常的外设与外设之间点对点(Point to Point)的数据传输模式。

1 什么是USB On-The-Go

我们先来回顾一下通用串行总线(Universal Serial Bus,简称为USB)发展的历史:

i)1994 年11 月,以Intel 为首的7 家公司(Intel、Compaq、Microsoft、IBM、DEC、Northern Telecom 和NEC)推出了USB 协议的第一个草案,USB 作为一种新型的串行总线,揭开了新一轮的USB 总线的革命,但这时,USB 并不为计算机技术人员所熟知;

ii)1996 年2 月,USB 协议规范1.0 版本发布,版权属于Compaq、Intel、Microsoft和NEC 等4 家公司,并同意任何人可免费使用。自此,USB 开始逐渐被广大技术人员和用户所认可,并逐渐开始成为PC 主板上的标准接口;

iii)1998 年10 月,USB 1.1 版本发布,集中修订了USB 1.0 中的问题,并进一步突出了USB 的优势。到目前,USB 1.1 仍是开发USB 低速(1.5Mbps,Low-Speed)和全速(12Mbps,Full-Speed)设备的标准版本。USB 的低功耗、速度高、成本低、支持即插即用和维护方便等优势更加稳定,USB 开始成为鼠标、键盘、游戏杆、打印机、光驱、硬盘、显示器和数码相机等几乎各种PC 外设与PC 连接的标准协议之一。各种USB 的外设产品如雨后春笋般出现,如USB Flash 读卡器、USB 移动硬盘、USB 数码相机、USB 键盘等,几乎所有的PC 外设都有相应的USB 接口的产品。一时间,USB 成为了最为流行的PC 接口标准,嵌入式软硬件工程师也将USB 应用到自己的设计之中;

iv)2000 年4 月,Compaq、HP、Intel、Lucent、Microsoft、NEC 和Philips 等7 家公司联合发布USB 2.0 协议规范版本。新版本最大的变化就是将USB 的总线速度一下子提高到了480Mbps,即开始支持高速设备(High-Speed)。由此,USB 翻开了新的一页,彻底打破了USB 应用在视频等高速传输领域中的速度瓶颈,大大扩展了USB 应用领域。从低速的鼠标、键盘,到全速的硬盘,再到高速的视频传输,USB 几乎无所不能,可以应用到任何一种PC 外设中。USB 取代串口、并口等传统PC 接口只是个时间问题了。

  从问世,到协议规范2.0 版本,USB 不断在自我完善,走向成熟。从普通计算机用户,计算机工程师,到硬件芯片生产厂商,都已经完全认可了USB。厂商对于USB 的硬件和软件支持的也越来越完备,现在开发一个USB 外设产品,所需要投入的成本和时间大大降低了,几年前是没有办法做到这一点的。但是,随着USB 应用领域的逐渐扩大,人们对于USB的期望也越来越高,希望USB 能应用在各种计算机领域中,尤其是在移动通讯领域中,希望能通过PDA 等移动设备来直接和USB 外设通信,使得USB 能应用在没有PC 的领域中。非PC 应用领域? 这正是USB 一个致命的弱点。USB 的拓扑结构中居于核心地位的是Host,任何一次USB 的数据传输都必须由Host 来发起和控制,所有的USB 外设都只能和Host 建立连接,任何两个外设之间或是两个Host 之间无法直接通信。而目前,大量的扮演Host 角色的是个人电脑PC。因此,“如何将USB 应用到嵌入式领域?如何实现USB 点对点的通讯?”等问题,开始进入了USB 开发者的讨论议程。正是在这种新的需求之下,USB On-The-Go 应运而生。2001 年12 月,USB On-The-Go 版本协议1.0 正式发布(简写为OTG 1.0)。
     USB On-The-Go,顾名思义,是USB 应用在便携式移动设备领域中,因此,我们姑且将其翻译为“便携式USB”(或者“移动USB”),简记成USB OTG。OTG 1.0 作为USB 2.0的补充协议,基本上符合USB 2.0 规范。但是,有所不同的是符合USB OTG 的设备完全抛开了PC,既可以作为Host,也可以作为外设,而与另一个OTG 设备直接实现点对点(Pear to Pear)通讯。因此,这类OTG 设备也被成为是双角色设备(Dual-Role Device,简称为DRD),并能够根据接入设备的特性和数据传输过程中的情况,自动切换为Host 或是外设。例如,一个OTG 数码相机可以直接与OTG 打印机相连,打印图片;两个OTG MP3 播放器可以之间连在一起,实现音乐文件的共享。。。需要注意的是,USB OTG 设备保留了作为普通USB 2.0 外设的功能,可以作为外设直接连接到PC Host 上。

2 USB OTG 设备的功能

     USB OTG 定义了两种设备类型:双角色设备DRD单外部设备(Peripheral-OnlyDevice,简称为POD)DRD 具备Host 和外设的两种功能POD 基本与外设功能近似,因此,我们这里着重讨论DRD。

要成为一个USB Host,必须具有存储外设驱动程序、提供足够的USB 端口电流和A型Host 插座的能力。而其所要实现的基本功能包括3 部分:
i) 管理和控制总线,包括提供USB 端口电源管理;
ii)检测外设的接入和断开,枚举(Enumerate)设备;
iii)初始化总线上所有的数据包传输等活动。

同样,USB 外设也具有特定的功能:
i)  响应USB Host 的命令,执行又Host 发起的发送设备描述符、传送数据等活动;
ii) 远程唤醒处于挂起(Suspend)状态的主机;
iii) 提供自供电(Self-Powered)电源(如果所需电流大于总线能提供的限额,选此项)。

DRD 具有USB Host 和外设的双重功能,但是,正因为具有了双重的角色任务,DRD又必须有切换角色等新的任务和功能,因此,我们可以用(1)式来简单的定义OTG DRD的功能:

DRD = Host + Peripheral + OtherLL(1)

由(1)式可知,完整的USB OTG DRD 还必须具有除了通常的Host 和外设之外的一些功能,当然DRD 的Host 功能是有限的,不要求完全实现PC Host 的功能,不过,这正符合了嵌入式领域中对USB 灵活性和便携性的要求:

i)作为外设,支持12Mbps 的全速模式(或者是480Mbps 的高速模式);

ii)作为Host,也支持全速模式(或者是低速和高速模式);

iii)产生目标外设列表(Targeted Peripheral List,简写为TPL);

iv)会话请求协议(Session Request Protocol,简写为SRP);

v)主机交流协议(Host Negotiation Protocol,简写为HNP);

vi)有且仅有1 个Mini-AB 插座;

vii)至少为总线提供8mA 的电流;

viii)能及时将总线活动状态通知给设备用户。

3 USB OTG 体系的软件描述

3.1 OTG 配置描述符

在OTG 系统处于枚举过程时,A 设备就会发送GetDescriptor 命令给B 设备(开始处于外设状态的设备),要求B 设备发送OTG 配置描述符。配置描述符包括3 个字节,分别是bLength、bDescriptorType 和bmAttributes。

3.2 会话请求协议(Session Request Protocol,简写为SRP)

SRP 用于B 设备向A 设备请求建立会话和使用总线。

一般,OTG 系统中的A 设备采用的是电池供电,因为这些设备是便携式和可移动的,这就决定了,OTG 系统电源管理是非常重要的一个专题。因此,为了节省OTG 系统的电源开支,OTG 2.0 规定A 设备在没有总线活动的时候,可以关掉VBus 上的电源。这样,当一个B 设备连接到A 设备上之后,就要初始化SRP,并发送给A 设备,请求A 设备在VBus上提供电流支持,进而进行通信。OTG 中,DRD 可以作为A 设备,也可以作为B 设备,因此,DRD 必须支持初始化SRP 和响应SRP;POD 只能作B 设备,所以,只能初始化SRP。SRP 中,B 设备有两种方式可以向A 设备发送请求,要求建立SRP:一种是数据线脉冲(Data-Line Pulsing),一种是VBus 脉冲(VBus Pulsing)。具体的脉冲方法在OTG 2.0 中有详细的说明。任何一个A 设备只要求能响应一种SRP 方式,而B 设备必须能初始化两种SRP方式。这样,当B 设备先初始化一种SRP,而A 设备无法响应是,则B 设备就要用另一种SRP 方式。

3.3 主机交流协议(Host Negotiation Protocol,简写为HNP)

HNP 用于初始B 设备与初始A 设备之间切换Host 角色。

OTG DRD 具有Mini AB 型插座,因此,DRD 既可作为Host,也可以作为外设。而在某一个OTG 连接中,这个DRD 到底是作Host(即A 设备),还是作外设(即B 设备),则要根据接入的另一个OTG 设备来定。如果,接入的是OTG POD,那么,毫无疑问,这个DRD 肯定是作A 设备。但,如果接入的是另一个DRD,那么这两个DRD 之间,就可以HNP来随时切换Host 角色。

一次完整的HNP 流程是这样的:B 设备希望控制总线,成为Host;在A 设备发送了SetFeature 命令后,B 设备就可以来请求控制总线;A 设备挂起总线,通知B 设备可以控制总线;B 设备发送信号,断开与A 设备的连接;A 设备启动D+信号线上的上拉电阻,将D+置高;这样,A 设备就开始作为外设,放弃了总线的控制权,B 设备成为了Host;在B设备完成了对总线的控制,就需要上拉其上的D+电阻,放弃总线控制权。当然,这一系列的HNP 活动,不仅仅是通过信号线上的电平变化来实现的。电平变化只是一种标志,真正内部对总线的控制权的变化,则要通过软件来实现。

3.4 OTG 的软件结构

OTG 的软件结构包括3 部分:
i)  OTG 系统硬件驱动:包括SRP 和HNP;
ii) OTG 系统外设软件:实现标准的USB 类,来实现特定的USB 外设功能;
iii)OTG 系统Host 软件:包括Host 驱动程序、操作系统支持软件、支持外设的类库。

时间: 2024-11-03 21:01:00

详述USB OTG发展及协议标准的相关文章

USB OTG简要

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

USB OTG简单介绍

1 引言 随着USB2.0版本号的公布,USB越来越流行,已经成为一种标准接口.如今,USB支持三种传输速率:低速(1.5Mb/s).全速(12Mb/s)和快速(480Mb/s),四种传输类型:块传输.同步传输.中断传输和控制传输.USB应用灵活方便,能满足多种外设的须要.随着个人便携式电子产品的增长和嵌入式技术的飞速发展,USB主机已不再局限于单纯的PC,能够是含有USB主控器的不论什么设备,如PDA.MP3播放器等.在USB2.O规范中也添加了USB嵌入式设备的标准--On-The-Go(O

USB otg 学习笔记

1 USB OTG的工作原理 OTG补充规范对USB 2.0的最重要的扩展是其更具节能 性的电源管理和同意设备以主机和外设两种形式工作. OTG有两种设备类型:两用OTG设备(Dualrole device)和外设式OTG设备 (Peripheralonly OTG device) .两用OTG设备全然符合USB 2.0规范,同一时候,他还要提供有限的主机能力和一个 MiniAB插座.支持主机流通协议(Host Negotiatio n Protocol, HNP),并和外设式OTG设备一样支持

USB OTG学习

1. 概要 OTG设备使用插头中的ID引脚来区分A/B Device,ID接地被称作为A-Device,为连接时候的USB Host,A-Device始终为总线提供电力,ID悬空被称作为B-Device,为连接时候的USB Device,设备的USB Host/USB Device角色可以通过HNP切换.OTG设备连接时不能跨越USB Hub,如果跨越USB Hub则失去HNP功能. 这里要注意A-Device/B-Device与USB Host/Device不是一回事,没有必然的绑定关系.A-

USB OTG介绍(转载)

1. 概要 OTG设备使用插头中的ID引脚来区分A/B Device,ID接地被称作为A-Device,为连接时候的USB Host,A-Device始终为总线提供电力,ID悬空被称作为B-Device,为连接时候的USB Device,设备的USB Host/USB Device角色可以通过HNP切换. OTG设备连接时不能跨越USB Hub,如果跨越USB Hub则失去HNP功能. 这里要注意A-Device/B-Device与USB Host/Device不是一回事没有必然的绑定关系A-D

USB HOST与 USB OTG的区别及工作原理

零 USB背景知识USB是一种数据通信方式,也是一种数据总线,而且是最复杂的总线之一. 硬件上,它是用插头连接.一边是公头(plug),一边是母头(receptacle).例如,PC上的插座就是母头,USB设备使用公头与PC连接. 目前USB硬件接口分三种,普通PC上使用的叫Type:原来诺基亚功能机时代的接口为Mini USB:目前Android手机使用的Micro USB. Host USB是由Host端控制整个总线的数据传输的.单个USB总线上,只能有一个Host. OTG On The

Android技术宅:自制USB OTG数据线

作为一名Android技术宅,USB OTG是你必须了解的,所谓USB OTG就是你可以利用手机或平板上用来充电.与电脑传输数据的micro USB接口来连接其他USB外设,如游戏手柄.鼠标.键盘.U盘甚至移动硬盘(当然你需要额外供电).而一条USB OTG数据线也就是必备的工具了. 成品效果 目前关于能否兼容何种USB外设,以及是否需要root你的Android设备并没有一个明确的标准,不过一般情况下“标准”的Android设备如果没经过root的话是无法挂载USB外设的.只有运行Ice Cr

USB OTG ID 检测原理

OTG 检测的原理是: USB OTG标准在完全兼容USB2.0标准的基础上,增添了电源管理(节省功耗)功能,它允许设备既可作为主机,也可作为外设操作(两用OTG).USB OTG技术可实现没有主机时设备与设备之间的数据传输.例如:数码相机可以直接与打印机连接并打印照片,手机与手机之间可以直接传送数据等,从而拓展了USB技术的应用范围.在OTG中,初始主机设备称为A设备,外设称为B设备.也就是说,手机既可以做外设,又可以做主机来传送数据,可用电缆的连接方式来决定初始角色(由ID线的状态来决定).

MTK 65XX系列通过USB OTG添加Ethernet RJ45有线网卡支持

最近客户要求使用MTk 6572芯片通过USB OTG添加支持有线网卡,我查遍了钩钩了所有网站,都没有相关论述,查看了MTK给的资料,包括FAQ,只说支持USB OTG键盘鼠标和U盘.怎么办?只有我自己来. 但是,按照我对于USB设备机构的理解,只要我们挂在了USB Ethernet的驱动,那么在USB Ethernet插入的时候,应该可以自动匹配到其设备驱动,所以只要我们挂在了USB Ethernet的驱动,那么就应该可以正常工作. 首先,就是回顾如果是非MTK平台,我们如何添加Etherne