在介绍USBOTG的基础上,着重介绍Maxim公司的MAX3301E型USBOTG电路的特点、内部结构和工作原理。

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),它使外设可以在主机和设备之间相互切换,即当其连接至PC时,它是1个USB设备,而与其他USB设备相连接时,它便作为USB主机。

2 USB OTG

2.1 USB OTG简介

DSBOTG是USB2.O版本的补充,并不是独立的标准,它保留了USB2.0的所有特点。OTG使2个USB外设在脱离PC的情况下可以直接通信。为了实现这种功能,在OTG中有一个新的概念——个DRD能满足下列特征:

●具有一定的个外设列表;

●作为外设时能够实现全速操作(或高速操作);

●作为主控机时能支持全速操作(低速或高速)

●支持主机协商协议(HNP)和会话请求协议(SRP);

●仅有1个微型AB连接端口;

●能够向电源总线提供不小于8mA的电流。

要实现主机功能,主机必须存储大量的设备驱动程序,并且向电源总线提供一定的电流。对于嵌入式USB主机来说,提供大量的设备驱动程序是不现实的也没有必要,1个嵌入式USB主机只需支持部分特定设备,这些设备就是它的外设列表

2.2 主机协商协议(HNP)

在USB标准中,主机采用A型接口,称为A类设备(A-Device)外设采用B型接口,称为B类设备(B-Device)。1个DRD既可以作为主机,也可以作为外设。那么,当2个DRD互连时,哪个设备作为主机,为什么要作为主机?为了解决这两个问题,在OTG中提出了新的协议——个引脚——ID引脚,如图1所示。

左边的B-Device为1个手持PDA,右边的A-Device为1个打印机。由于连接线的关系,打印机初始化为主机。但是打印机的驱动程序存在PDA中,这时需要PDA作为主机,打印机作为外设。通过HNP可以方便实现此功能,而不必拔下连接线调换插头方向,重新连接打印机和PDA。

2.3 会话请求协议(SRP)

OTG收发器一般用在嵌入式设备中,这类设备普遍采用电池供电,对功耗要求很严。为了节省电源,在OTG标准中,当电源总线没有使用时,允许A类设备挂起电源总线。当1个B类设备要工作时,它必须通过某种方法通知A类设备向电源总线供电。为了实现这一功能,在OTG中提出了会话请求协议(SRP)。在OTG中,1个会话定义为A类设备向电源总线VBUS有效供电的时间。需要注意的是,在OTG中电源一直都是由A类设备(连接mini-Aplug的DRD)提供的。由于主机协商协议,A类设备也可能作为外设使用,此时,电源也必须由A类设备提供。当A类设备挂起VBUS后,B类设备进入休眠状态。当B类设备需要再次工作时,它可以通过向数据线发送1个脉冲信号(Data-linePulsing)或向电源总线发送一个脉冲信号(VBUSPulsing)来请求A类设备向电源总线供电。OTG要求无论是DRD设备还是普通的B类设备,都必须具有发送会话请求的功能;同时,普通的A类设备或者DRD设备都必须能够响应1个会话请求。

3 MAX330lE的特点及工作原理

3.1 MAX3301E的特点

目前,很多公司都推出了各自的OTG电路,如Cypress公司的SL8llHS、Philips公司的ISPll61、ISPl362等。下面主要介绍Maxim公司生产的MAX3301E。

MAX3301E是完全集成的USBOn-The-Go(0TG)收发器与电荷泵,不需要PC主机就可以实现移动设备(如PDA、蜂窝电话与数码相机等)之间及与USB外设的连接。使用MAX3301E的嵌入USB主机可以直接与打印机或外部硬件驱动器等设备连接。

MAX3301E集成了USBOTG收发器、VBUS电荷泵、线性稳压器及与I2C总线兼容的2线串行接口。内部电平转换器使MAX3301E可以与+1.65V~+3.6V逻辑接口。MAX3301E中OTG兼容的电荷泵可以在+3V~+4.5V输入电压下工作,输出电流大于8mA时,可以在VBUS上提供OTG兼容的输出。

MAX3301E使那些无法提供或容许USBOTG要求的+5VVBUS电平的高集成度数字设备能够实现USBOTG通信。利用内部比较器控制、测量VBUS,MAX3301E支持USB0TG会话请求协议(SRP)和主机协商协议(HNP)。

MAX3301E内部为VBUS、ID_IN、D+和D-引脚提供了±15kV静电放电(ESD)保护。MAX3301E采用5mmx5mm芯片级(UCSP)和32引脚薄型QFN封装(5mmx5mmx0.8mm),工作温度范围为-40℃~+85℃。

3.2 MAX3301E的内部结构和工作原理

图2示出MAX3301E的内部结构框图,主要由下列模块组成:ID检测器、电荷泵、VBUS比较器、线性稳压器、上拉/下拉电阻器、CARKIT中断检测器、收发器、串行控制模块和电源模块。

众所周知,在普通的USB外设电路中,通过1个连接在D+或者D-的上拉电阻器(通常为15kΩ)来告知主机1个外设的接入和指示需要的操作速度——如果上拉电阻器连接在D+上,表示全速操作;连接在D-上,则表示低速操作。在USB主控电路或集线器电路中,通过连接在D+和D-上的下拉电阻器(通常为15kΩ)表示该电路为USB主控电路或集线器电路。从图3中可以看到,在MAX3301E数据线D+和D-上都设计了上拉和下拉电阻器转换开关,这样就可实现外设和主机功能之间的转换,同时也可实现全速或低速操作选择。

如图4所示,当MAX3301E作为A-Device时,电荷泵向3.3V稳压器和VBUS提供电源(5V,8mA);当MAX3301E作为B-Device时,稳压器的电源也可以设置为由VBUS提供。VBUS比较器负责监控VBUS上的电压,右边的电阻器转换开关VBUS提供脉冲信号。

4 典型应用电路

图5所示是MAX3301E的典型应用电路。

图中,VCC是MAX3301E的工作电压,范围为+3.3V~+4.5V。VL是系统侧逻辑电源输入,连接到系统的逻辑电平,范围为+1.65V~+3.6V。此电平设置逻辑输出的最大电平和逻辑输入的门限。

VBUS、D+、D-、ID_IN、GND组成USBOTG的连接口,需要注意的是,根据USBOTG的规定,VBUS总线上所有的滤波电容之和必须限定在1μF~6.5μF。

SPD是速度选择器输入。将SPD连接至GND选择低数据速率(1.5Mb/s)。将SPD连接至VL则选择全速数据速率(12Mb/s)。同时也可以修改MAX3301E内部的寄存器,关闭SPD的功能。SPD被关闭后,DAT_VP/SE0_VM的速率将由相应的寄存器值给定。

OE/INT控制DAT_VP/SE0_VM和D+/D-的输入或输出状态。当OE/INT为逻辑O时,设备为发送模式,待发送的数据由DAT_VP/SE0_VM进入MAX3301E,然后通过D+/D-发送出去。当OE/INT为逻辑1时,设备处于接收模式,MAX3301E从D+/D-接收数据,然后再通过DAT_VP/SEO_VM传送给控制器。在挂起模式下(SUS=“1”),可以控制OE/INT使其成为中断输出,它检测的中断源与INT相同。

5 结束语

随着USB的发展,USB接口已经成为各种电子产品的标准接口。传统的PC到外设的USB通信方式已经不能满足人们的需要,迫切需要脱离PC的控制,直接实现设备之间的USB连接。由于这种需要,OTG标准应运而产生。随着各大器件和设备制造商对OTG的支持,目前各种具有OTG功能的收发器和电子产品已经走向市场。比如PDA可以通过USB接口连接手机实现无线上网。数码相机或数码伴侣可以通过USB接口直接控制打印机打印照片。如果在野外拍摄,数码相机也可以通过USB接口连接手机实现无线上网,把照片发进到电脑或者其他服务器上。

USB做Host的OTG原理的更多相关文章

  1. USB OTG原理+ ID 检测原理

    OTG 检测的原理是: USB OTG标准在完全兼容USB2.0标准的基础上,增添了电源管理(节省功耗)功能,它允许设备既可作为主机,也可作为外设操作(两用OTG).USB OTG技术可实现没有主机时 ...

  2. [分享]Host文件的原理解释及应用说明

    Host文件的原理解释及应用说明   Host文件位置及打开方式:   Window系统中有个Hosts文件(没有后缀名), Windows 98系统下该文件在Windows目录,在Windows 2 ...

  3. 品牌电脑硬盘损坏后,使用MediaCreationTool从微软官方下载正版Windows到USB做安装盘

    最近我的一台台式机电脑的硬盘损坏了.一开始是速度逐渐变慢,后来慢得难以忍受,有时半天无响应.查看 Windows event ,发现有 id 为 7 的磁盘报错.使用 Windows 8.1 家庭版自 ...

  4. 玩转X-CTR100 l USB功能-HOST鼠标键盘

    更多塔克创新资讯欢迎登陆[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] X-CTR100控制器具有MicroUSB接口,支持SLAVE和HOST两 ...

  5. Linux usb 3. Host 详解

    文章目录 1. 简介 2. Usb Core 驱动设备模型 2.1 Usb Device Layer 2.1.1 device (struct usb_device) 2.1.2 driver (st ...

  6. 转:USB主机控制器(Host Controller)--深入理解

    1. 主机控制器(Host Controller) • UHCI: Universal Host Controller Interface (通用主机控制接口, USB1.0/1.1)      • ...

  7. 一文读懂充电宝usb接口电路及制作原理详细

    转自:http://www.elecfans.com/dianlutu/dianyuandianlu/20180511675801.html USB充电器套件,又名MP3/MP4充电器,输入AC160 ...

  8. MySQL-重做日志 redo log -原理

    [redo log buffer][redo log file]-原理 目录: 1.重做日志写入过程图 2.相关知识点汇总图 3.redo_log_buffer 原理 4.redo_log_file ...

  9. 感知器做二分类的原理及python实现

    本文目录: 1. 感知器 2. 感知器的训练法则 3. 梯度下降和delta法则 4. python实现 1. 感知器[1] 人工神经网络以感知器(perceptron)为基础.感知器以一个实数值向量 ...

随机推荐

  1. 11.13 noip模拟试题

    题目名称 笔记 括号 城堡可执行文件名 note brackets castle输入文件名 note.in brackets.in castle.in输出文件名 note.in brackets.ou ...

  2. Android中使用shape实现EditText圆角

    之前看到手机上的百度editText控件是圆角的就尝试做了一下,看了看相关的文章. 因为代码少,看看就知道了.所以下面我就直接贴上代码供大家参考,有其他的好方法记得分享哦~ 整个代码不涉及JAVA代码 ...

  3. MVC 避免黄页

    可以使用HandleErrorAttribute 有两种方式可以使用它,在类或者方法的头上加 [HandleError] 这种直接在类或者方法上加[HandlerError]手动添加 另外一种方式是使 ...

  4. Java_LIST使用方法和四种遍历arrayList方法

    1.List接口提供的适合于自身的常用方法均与索引有关,这是因为List集合为列表类型,以线性方式存储对象,可以通过对象的索引操作对象.   List接口的常用实现类有ArrayList和Linked ...

  5. UITextField文本字段控件的位置

    如果需要更改默认的UITextField清除按钮.左右视图等等控件的位置,可以通过如下设置: // 控制清除按钮的位置 (默认 width = 15 = height) -(CGRect)clearB ...

  6. CSS3中的transform

    CSS3 转换,我们能够对元素进行移动.缩放.转动.拉长或拉伸. transform 在2D里主要是4个方法.除了rotate 其他都是接受x y值 translate skew rotate sca ...

  7. Java中ArrayList类详解

    1.什么是ArrayList ArrayList就是传说中的动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了如下一些好处: 动态的增加和减少元素 实现了ICollection和ILis ...

  8. 实例:图像载入、显示、混合与输出[OpenCV 笔记8]

    是的是的,忍着尿意努力更新,就是为了更到wuli男神的部分,当然要把男神放在前面镇楼,欢迎下载配图,具体操作见code wuliEddie.jpg logo.png results.jpg LoadS ...

  9. 九度OJ 1452 搬寝室 -- 动态规划

    题目地址:http://ac.jobdu.com/problem.php?pid=1452 题目描述: 搬寝室是很累的,xhd深有体会.时间追述2006年7月9号,那天xhd迫于无奈要从27号楼搬到3 ...

  10. html中th 与thead tbody的 使用

    上午工作的时候,遇到一挺纠结的问题,在<th width...> width根本不起作用. 后来才明白<th>标签不能写在<tbody>里,不符合语法. 所以顺便总 ...