开发者社区> helpful> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Something About USB On-The-Go

简介: USB On-The-Go是什么     USB接口的设备现在是随处可见了,打印机、相机、手机、MP3等几乎目前能想到的消费类电子设备都具有USB接口。USB传输速率快,接口简单、支持热插拔的特性,使其在诸多接口中脱颖而出,大有统一天下之势。
+关注继续查看

USB On-The-Go是什么

    USB接口的设备现在是随处可见了,打印机、相机、手机、MP3等几乎目前能想到的消费类电子设备都具有USB接口。USB传输速率快,接口简单、支持热插拔的特性,使其在诸多接口中脱颖而出,大有统一天下之势。但传统的USB协议(USB2.0)限制了在这庞大的设备群中必须有一个HOST作为主子,通常是PC。两个外设之间的数据交换必须通过这个主子中转才能完成,效率较低,不大方便。随着嵌入式设备的爆炸式增长,两个USB设备之间直接进行数据交换的需求越来越强烈,USB On-The-Go就应运而生了。一些手机、PDA和移动设备的厂商在USB2.0的基础上合作开发了USB On-The-Go(OTG)。USB OTG首先解决了USB设备之间点对点的数据交换问题,摆脱了附庸于USB HOST的繁琐。举例来说,有了USB OTG,数码相机可以直接将照片通过打印机打印出来,而不必先将照片拷贝到PC上,再由PC控制打印机打印。

    USB OTG还有以下几个特性:

n         接口更小巧,有效减小了电子产品的体积

n         既能充当HOST又能用做Device,即DRD(Dual-role-devices)

n         OTG设备依然可以连接到PC上用做普通的外设,即POD(Peripheral-Only Device)

n         功耗更低,以延长采用电池供电的USB设备的待机时间

USB OTG接口

    传统的USB设备分为A和B两种。A接口的设备提供电源VBus,用做主子。B接口的设备在通讯过程中作为外设。无论是A接口、B接口还是各自的Mini接口,虽然外形有些差别,但使用的引脚都遵循以下定义:

    1脚:VCC电源

    2脚:D-差分负极

    3脚:D+差分正极

    4脚:GND接地

USB OTG增加了一个ID引脚,它的接口(Mini-AB)定义如下:

1脚:VBus

2脚:D-

3脚:D+

4脚:ID

5脚:GND

USB OTG通过ID信号线来识别是Mini A还是Mini B插头。为了使用方便,不同的接插件颜色不一样:Mini A采用白色,Mini B采用黑色,Mini AB采用灰色。

USB OTG协议简述

USB OTG中引入了两个新的协议, SRP(Session Request Protocol)和HNP(Host Negotiation Protocol),即会话请求协议和主机交流协议。

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

    HNP用于两个OTG设备互连时角色切换。为了实现HNP,A设备必须首先允许B设备通过OTG最新定义的Set_Feature命令来控制总线。一旦该请求被A设备接受,B设备就可以对总线进行控制。如果A设备想给B设备一个机会来控制总线,它将中止对总线的操作,将总线挂起。接着B设备就将D+拉低来终止以前的连接。接着,A设备激活位于D+处的上拉寄存器,完成这个转换。此后,B设备就将作为主控设备使用,而A设备将作为外围设备使用。同样,B设备也可以通过将总线挂起并激活D+上拉寄存器,A设备探测到总线上的变化后,清除D+上拉寄存器并重新作为主控设备使用。简而言之,两个OTG设备互连时,可以通过HNP协议协商主从地位。

WinCE下USB OTG驱动概述

    USB OTG的软件结构包括3部分:

u       OTG控制器的驱动:包括SRP和HNP

u       OTG的外设驱动:实现标准的USB类,来实现特定的USB外设功能

u       OTG系统HOST驱动:包括HOST驱动、操作系统支持软件和支持外设的类库。

    对于移植这一部分的驱动来说,需要注意ID侦测信号、VBUS的控制信号,这两个信号一般连接到MCU的GPIO上,根据硬件修改,而SRP和HNP一般由厂商完成,无需修改。我在调试这一部分时碰到的主要问题是,插入U盘后,OTG驱动检测到U盘插入,并提供了VBUS的供电,但却马上停止通信,无法正常使用U盘,后来经过进一步调试发现是MCU的OTG_VBUS的供电不足5V导致,不能用时的电压为4.6V左右,连接到5V后就没有问题了,目前USB OTG支持U盘,USB键鼠似乎是不能用的。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
self.doubleSpinBox.setGeometry(QtCore.QRect(20, 25, 101, 22))参数讲解
self.doubleSpinBox.setGeometry(QtCore.QRect(20, 25, 101, 22))参数讲解
86 0
SpringBoot中使用Thymeleaf模板
SpringBoot中使用Thymeleaf模板
58 0
problem about can't trigger exit-command in CR
Sent: Wednesday, January 12, 2011 4:29 PM
35 0
springboot使用thymeleaf为模板
jsp已经明显跟不上时代发展了,freemarker用的够够的?换thymeleaf试试吧。springboot官方推荐的是freemarker和thymeleaf,而thymeleaf相对于freemarker更让人感觉强大的,是他可以动态替换标签...
1072 0
10 cool things about Kotlin
10 cool things about Kotlin https://easykotlin.quora.com/10-cool-things-about-Kotlin
740 0
springboot中使用thymeleaf模板
整体步骤: 1.在pom.xml中引入thymeleaf依赖,(Jan 30, 2017)的版本 org.springframework.boot spring-boot-starter-thymeleaf 1.
1090 0
【转】UVa Problem 100 The 3n+1 problem (3n+1 问题)——(离线计算)
1 // The 3n+1 problem (3n+1 问题) 2 // PC/UVa IDs: 110101/100, Popularity: A, Success rate: low Level: 1 3 // Verdict: Accepted 4 // Submission Date: 2011-05-22 5 // UVa Run Time: 0.032s 6 // 7 // 版权所有(C)2011,邱秋。
967 0
About the Importance of Aim in Life
Have an aim in life, or your energies will all be wasted.   ---R. Peters 人生应该树立目标,否则你的精力会白白浪费。 ---彼得斯
668 0
System.Web.Routing入门及进阶 上篇
System.Web.Routing已经作为一个程序集包含在.net3.5sp1中发布了。虽然我们并没有在3.5sp1中发现Asp.net Mvc的踪迹,但是亦以感觉到它离我们不远了。 System.Web.Routing用于在Asp.net的Web应用程序中进行URLRouting。
754 0
+关注
helpful
长期从事嵌入式软件开发,包括µC/OS 、WinCE、Linux和Android等。
216
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载