USB2.0学习笔记连载(二):USB基础知识简介
USB接口分为USB A型、USB B型、USBmini型、USBmicro型、USB3.0其中每种都有相应的插座和插头。
图1
图2
上图是USBA型接口,图1为插座,图2为插头。插座指向下行方向,插头指向上行方向。
USB中一般常用有4根线,两边两根线一般为VBUS(5V的接入或接出线,对应上图中的1引脚)和GND(对应上图中的4引脚)。中间两根为D+(对应上图中的3引脚),D-(对应上图中的2引脚),还有外加一个屏蔽层。
图3
图4
USB B型所对应的各信号和USB A型一致。在各种开发板上比较喜欢用USB B型接口,占PCB面积较小。
图5
图6
图5是插座,图6是插头。和USB A和USB B不同的是,USB mini型接口多了一个引脚,那么这个引脚对应图中的4,此引脚作为ID,只有在OTG情况下才有用。关于OTG笔者搜索了一下资料,现整理如下:
USB OTG是USB On-The-Go的缩写,是近年发展起来的技术,2001年12月18日由USB Implementers Forum公布,主要应用于各种不同的设备或移动设备间的联接,进行数据交换。特别是PAD、移动电话、消费类设备。
由上面的介绍可以得到一个结论,此技术就是实现不同设备之间的连接,并进行数据交换,由于USB设备分为主(Host)和从(Slave),只有当一个主设备和从设备连接时才能实现数据传输。而OTG技术也是遵从主从关系,只不过主可能不是PC机,可以是任意其他的设备,然后对于ID引脚,作为主设备,可以将其接地,作为从设备一端的4引脚悬空,这样就可以区分开谁是主和从的关系。
图7
图8
上图是USB micro的插座和插头,最常见的例子就是我们的手机数据线,插入手机一端就是USB micro接口。上图中micro-AB是可以插入USB micro A型插头或USB micro B型插头。
图9
图10
USB3.0 A型接口。 上图是USB3.0的靓照,感觉看一个数据线是不是USB3.0的接口,估计最明显的标注就是在插头上会有SS标志。USB2.0最大速度也就是高速情况下可以达到480Mbps(60MB/s)半双工,而USB3.0高速情况下可以达到5.0Gbps(500MB/s)全双工,注意这里不是5Gb/s除以8得到的640MB/s,而是除以10bit,采用与SATA相同的10bit传输模式,编码规则采用8/10的方法,存在2bit的控制信号,所以USB3.0的理论数据传输速率是5Gbps/10bitt=500MB/s。
图11
USB3.0接口和USB2.0接口有很大的不同。USB3.0接口有9根线,前4根线和普通的USB线一样,后5根线是为超高速做准备。其中超高速输入引脚5脚为SSRX-,6脚SSRX+,超高速输出引脚8脚SSTX-,9脚SSTX+,7脚为GND引脚,还包括屏蔽层。
USB3.0在高速情况下之所以比USB2.0快,是因为额外增加两对传输线,如图11所示。
USB3.0能够实现较好的电源管理,USB3.0接口供电能力为1A,USB2.0为0.5A。实现USB充电电池,LED照明和mini风扇提供更多的功率。这意味着通过USB3.0来充电可以更快完成充电。能够使主机更快地识别器件,处理数据效率更高。
转换到USB 3.0,功耗也是要考虑的很重要的一个问题,因此有效的电源管理就很必要,可以保证设备的空闲的时候减少电力消耗。
大量的数据流传输需要更快的性能支持,同时传输的时候,空闲时设备可以转入到低功耗状态。甚至可以空下来去接收其他的指令,完成其他动作。其实,在USB 3.0中也并不是所有的东西都更新换代了,比如线缆的长度。当在某些应用中需要尽可能高的吞吐量的时候,往往线缆依旧会成为瓶颈。虽然在USB 3.0规范中,没有明确指定USB线缆有多长,但是电缆材质和信号质量还是影响了传输的效果。因此在传输数百兆大数据流的时候,线缆长度最好不要超过3米。
虽然USB 2.0 Hi-Speed的数据传输速率是480Mpbs,也就是理想状况下应该为60MB/s,但是在Windows based操作系统下,由于default driver的限制,实际的效能大约为30MB/s~35MB/s,与60MB/s有一大段距离。
图12
图12是USB2.0和USB3.0的主要区别。
图13
上图是USB3.0 B型接口,可以兼容USB2.0和USB3.0接口,买过移动硬盘的朋友应该见过这种接口。
USB2.0学习笔记连载(二):USB基础知识简介的更多相关文章
- USB2.0学习笔记连载(三):通用USB驱动程序解析
对于USB驱动的开发,读者可以使用Windows DDK.DriverStudio等多种开发工具来实现USB的驱动,但是驱动程序的开发过程都比较复杂,而且很容易致使USB主机内存泄露而死机.那么对于笔 ...
- USB2.0学习笔记连载(十四):USB驱动安装及固件程序的编写
在之前的博客中已经讲过,驱动程序最核心的两个文件,一个是xxx.sys文件,一个是xxx.inf文件,主机是寻找xxx.inf文件. 在下面的文件中有相关关于USB驱动的说明.对于用户来说,xxx.s ...
- USB2.0学习笔记连载(一):CY7C68013特性简介
上一篇博客已经给出了整个视频板卡架构,那么对于USB接口部分需要着重理解和学习. 对于目前来说,若是利用FPGA去模拟USB2.0内核,难度还是挺大的,整个状态的收发都不好控制.现在目前都在使用桥接芯 ...
- USB2.0学习笔记连载(十九):EZ-USB TRM手册重要部分介绍
TRM手册中给出了所有的寄存器配置,在 slave fifo模式或者 GPIF模式等,所以对于用到的各种寄存器配置需要查看此手册,当然还可以配合着应用手册<AN61345>. ...
- USB2.0学习笔记连载(十七):keil实现寄存器的配置及相关函数讲解(一)
首先要实现对寄存器的配置,可以参考手册<Development kit User Guide>,如下图所示: 此文件包含在 文件中.上述的应用文档详细介绍了如何利用KEIL实现对固件程序 ...
- USB2.0学习笔记连载(六):USB2.0硬件设计需要注意事项
笔者在设计USB2.0时找到了一个官方给的硬件设计正确设计指南,其中有些内容还挺nice的.不单单只是USB的设计,其中有些思想可以应用到其他的场合中. 对于USB2.0而言,全速状态下可以达到480 ...
- USB2.0学习笔记连载(十八):keil实现寄存器的配置及相关函数讲解(二)
其实之前也有提及过,Cypress公司提供的官方文件和应用手册真的可以解决很多问题.做的也很人性化,操作也及其简单,几乎只要在 TD_int()里面配置一些常用的参数即可,其他都可以不用操作. 作为一 ...
- USB2.0学习笔记连载(九):USB设备驱动的安装
在第一次插入USB设备时(笔者用的是自己做的USB最小系统来测试),插入电脑后,在设备管理器中会显示 未知设备,如下图所示: 点击右键,选择属性,在详细信息中可以看到硬件ID以及PID等,如下图所示. ...
- USB2.0学习笔记连载(五):EZ-USB重要寄存器的配置
本篇博客主要讲解EZ-USB一些重要寄存器的配置,首先对于本篇博客所讲的内容,读者应该到官网上去下载相关的手册,其中包括<EZ-USB Technical Reference Manual> ...
随机推荐
- dubbo-monitor监控台的部署
参考资料:dubbo的monitorhttps://github.com/handuyishe/dubbo-monitorhttp://blog.yangcvo.me/2017/01/26/Java- ...
- CentOS的字符集locale的设置
LANGLC_*的默认值,是最低级别的设置,如果LC_*没有设置,则使用该值.类似于 LC_ALL. LC_ALL它是一个宏,如果该值设置了,则该值会覆盖所有LC_*的设置值.注意,LANG的值不受该 ...
- windows performance
blogs.technet.com/b/perfguide/archive/2010/09/28/the-microsoft-pfe-performance-guide-start-here.aspx
- C#通用JSON帮助类
using System; using System.Data; using System.Text; using System.Collections.Generic; using System.R ...
- angular学习笔记(三)-视图绑定数据的两种方式
绑定数据有两种方式: <!DOCTYPE html> <html ng-app> <head> <title>2.2显示文本</title> ...
- 【转】服务器添加新用户用ssh-key 登录,并禁用root用户 密码登录
[转]Linux最高权限用户root,默认可以直接登录sshd.为了提高服务器的安全度,需要对它进行禁止,使得攻击者无法通过暴力破解来获取root权限. ps: 以下内容皆非原创,只是个人的一个实践 ...
- 从零开始,跟我一起做jblog项目(三)从Maven到Gradle
http://www.cnblogs.com/newflydd/p/4972922.html?utm_source=tuicool&utm_medium=referral ********** ...
- Servlet打印HTML页面乱码问题
代码就在下面,最开始我以为是request和response的编码问题,还去搞了一个filter,结果最后发现跟filter半毛钱关系都没有,都是因为没有打印这么一句 out.println(&quo ...
- 续写上一篇的数组or指针操作
C语言,同样使用if else while 这样的语法,但不同的人,就是有不同的实现方式,甚至是技巧. eg: #include <stdio.h> #include<string. ...
- activemq用户手册
1 JMS 在介绍ActiveMQ之前,首先简要介绍一下JMS规范. 1.1 JMS的基本构件 1.1.1 连接工厂 连接工厂是客户用来创建连接的对象,例如ActiveMQ提供的ActiveMQCon ...