注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

还东国的博客

行之苟有恒,久久自芬芳

 
 
 

日志

 
 

LINUX驱动学习——内核USB驱动编写八USB的OTG驱动1(转载)  

2013-02-17 20:17:42|  分类: USB系列 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
 

LINUX驱动学习——内核USB驱动编写八USB的OTG驱动1(转载)

 http://blog.csdn.net/ling1874/article/details/5761181

OTG驱动是一个比较新的东西,原来是没有的,前面说过,USB驱动为为三大方面,HOST,DEVICE和OTG。这这篇是转载的。

USB On-The-Go引脚 说明

分类: ARM Linux 2010-07-24 12:55 1465人阅读 评论(2) 收藏 举报

目录(?)[+]

1.USB On-The-Go 是什么

2.USB OTG 接口

3.USB OTG 协议简述

4.WinCE 下USB OTG驱动概述

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键鼠似乎是不能用的

  评论这张
 
阅读(1844)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017