USB设备系统分为两个部分,USB Host端和USB Device端,以USB接口的U盘为例子,U盘自身是一个USB Device,PC机的USB接口以及相关的控制电路为USB Host部分。

    每个部分由硬件部分和软件部分组成,硬件部分由USB主机控制器和USB接口芯片来组成,固件(软件)由两侧的驱动程序组成。

   

    为了规范不同厂商的USB设备,IEEE指定了相应的规范,只要不同端的设备都符合此规范,就能正常的通讯。

主机控制器协议

     主机控制器协议有 OHCI、EHCI、UHCI、xHCI。

     对于协议规范里面的特定功能,由硬件来实现还是由软件来实现,这取决于不同的应用场合和环境,因此,就出现了针对USB1.1协议的OHCI和UHCI主机控制器协议。

     OHCI把一些功能实现放在硬件上面,因此,软件方面就比较容易开发,常用于嵌入式系统

     UHCI则把一些功能的实现更多的放在软件上面,因此,硬件上面就可以做的较为简单,适用于大规模生产,常用于PC中

     为了解决USB1.1传输速度低下的问题,USB规范升级到USB2.0,对应的主机控制器规范升级为 EHCI。

     进一步升级USB规范到USB3.0,对于的主机控制器规范为xHCI。下图是不同USB主机控制器的区别。

 

USB硬件接口

    USB的插头和插座,根据不同使用环境,分为三种类型,Type最大,Mini适中,Micro最小。每个类型中又分为A类和B类两个规格。

    

    

USB3.0的接口,USB3.0相比于USB2.0增加了4根线,不过在设计上,保持同USB2.0的兼容。

    

下图是不同规范的协议对比:

 

编码方式

    USB中用NRZI(非归零反转码),电平翻转代表逻辑0,电平不变代表逻辑1.USB的每个数据包都以同步域开头(0000_0001),通过编码成为方波。为了防止发送同样的数据造成的传输误差,USB规定了强制插0的协议,即如果要传输的数据中有7个连续的1,发送前会在第六个1的后面强制插入一个0,强制反转发送信号,使得两侧的接受频率同步。

 

USB的分类

    USB只是一种接口形式,基于此接口,可以有多重多样的设备,为了便于统一管理,对于不同的设备,USB规范规定了不同的设备类型,详细的USB的Class分类参加此链接:

    http://www.xat.nl/en/riscos/sw/usb/class.htm

 

USB的枚举

    USB的枚举,USB Emulation,就是USB初始化的意思,简单的说,就是USB的Host和Device之间的对话。

 

USB的数据传输

    一次USB的传输,由不同事务(Transaction)组成,一个事务是由不同的包(Packet)组成,一个包是由不同的域组成。见下图:

   

    数据传输分为两类:周期性的和非周期性的。

            周期性的有中断传输和等时传输。

            非周期性的有控制传输和批量传输

  参考链接:

USB设备简述:

http://blog.csdn.net/ljzcom/article/details/8574411

USB设备驱动开发:

http://blog.csdn.net/ljzcom/article/details/8574387

usb设备的probe过程:

http://blog.csdn.net/ljzcom/article/details/7419867

USB设备驱动开发之数据结构:

http://blog.csdn.net/ljzcom/article/details/7693209

http://blog.csdn.net/ljzcom/article/details/7693212

http://blog.csdn.net/ljzcom/article/details/7693219 

Technorati 标签: USB

USB接口介绍的更多相关文章

  1. (九)打印机驱动设置—USB接口的设置

    佳博打印机代理商淘宝店https://shop107172033.taobao.com/index.htm?spm=2013.1.w5002-9520741823.2.Sqz8Pf 在此店购买的打印机 ...

  2. 【转】实战USB接口手机充电 看3.0/2.0谁更快

    原文网址:http://mb.it168.com/a2012/0816/1385/000001385641_all.shtml [IT168 应用]当下,越来越多的电脑都已普及USB 3.0接口,新买 ...

  3. uart接口介绍和认识

    接口/总线/驱动 UART (Universal Asynchronous Receiver/Transmitter) 通用异步收发器. UART是用于控制计算机与串行设备的芯片.有一点要注意的是,它 ...

  4. USB接口定义 | USB Type C接口定义 | 制作Type A转Type C充电-数据线

    1. USB接口定义 2. USB Type C接口定义 Type C接口母头(插座) Type C接口公头(插头) 引脚定义 参考:https://www.cnblogs.com/zhouhaoch ...

  5. 下一代USB接口将支持双向拔插,于明年亮相

    近日,USB接口标准制定组织表示新一代USB接口将于明年年中亮相,而其名称目前被暂定为了USB Type-C.该组织表示USB Type-C标准将允许制造商采用更纤薄的接口设计,在实用性大大提高的同时 ...

  6. C#监控USB接口

    该C#代码实现监控USB接口是否有设备接入或拨出,包括多个U盘. using System; using System.IO; using System.Runtime.InteropServices ...

  7. USB总线介绍

    •USB 1.0出现在1996年的,速度只有1.5Mb/s1998年升级为USB 1.1,速度也提升到12Mb/s,称之为”full speed” •USB2.0规范是由USB1.1规范演变而来的.它 ...

  8. Hive 接口介绍(Web UI/JDBC)

    Hive 接口介绍(Web UI/JDBC) 实验简介 本次实验学习 Hive 的两种接口:Web UI 以及 JDBC. 一.实验环境说明 1. 环境登录 无需密码自动登录,系统用户名shiyanl ...

  9. SSH动态查询封装接口介绍

    SSH动态查询封装接口介绍 1.查询记录总条数 public int count(Class c,Object[][] eq,Object[][] like,String[] group,String ...

随机推荐

  1. cocos2d-html5 笔记5: 事件

    在cocos2d里面,通过Node的方式,将整个场景以及里面的object给组织起来,这样很容易画了,从root node开始遍历,把整棵树画出来就是了. 剩下就是animation,timer, 还 ...

  2. MySQL auto_increment实现

    http://www.cnblogs.com/xpchild/p/3825309.html 运维的时候,经常遇到auto_increment的疑惑: 机器异常crash,重启后id回退的问题 性能考虑 ...

  3. Linux下校验下载文件的完整性(MD5,SHA1,PGP)

    查看: Linux下校验下载文件的完整性(MD5,SHA1,PGP) http://blog.useasp.net/archive/2014/03/29/use-md5-sha1-or-pgp-to- ...

  4. hadoop下的Pipes(用C++进行hadoop程序开发)

    说明:这篇博客来自我的CSDN博客:http://blog.csdn.net/lxxgreat/article/details/7755369 经过一上午的努力,终于以伪分布式模式运行了C++版的Ma ...

  5. vs2010 MFC Opengl实现

    有的人说,学习要按部就班,学了几年的编程稍有点感悟,个人觉得面对技术的不断变化,以及需求的不断变更,如果按部就班的来搞,人生0.5的时间就浪费了,很多时候问自己,why I do need to le ...

  6. 【Mood 16 】史上最全github使用方法:github入门到精通

    [初识Github] 首先让我们大家一起喊一句“Hello Github”.YEAH!就是这样. Git 是一个分布式的版本控制系统,最初由Linus Torvalds编写,用作Linux内核代码的管 ...

  7. ARC 和 MRC 小结

    ARC 和 MRC 内存管理 从 MRC—>ARC 就是将内存管理部分,从开发者的函数中转移到函数外部的runtime 中.由于 runtime 的开发简单,逻辑层次高,所以 runtime 的 ...

  8. 自定义基本java类-StdDraw.java

    /************************************************************************* * Compilation: javac StdD ...

  9. C++字符类型总结区别wchar_t,char,WCHAR

    转至:http://www.360doc.com/content/12/0807/01/9290626_228750141.shtml 1.区别wchar_t,char,WCHAR ANSI:即 ch ...

  10. ado.net 基础(一)

    // C#操作数据库的基础1 引用两个命名空间using data:using date.sqlclient;2 创建与数据库的连接方法一: sqlconnection a = new sqlconn ...