USB协议简述

       USB这个传说中USA的弟弟,引领了计算机接口的潮流。2008年推出的USB3.0协议更是将他的速度提高到了一个新的档次4.8GB/S,再加上USB OTG协议更是使他如虎天翼。USB接口虽然简单,但是他的协议很复杂。但是再复杂的东西也是遵循一定规律的。USB系统分为USB主机和USB设备,USB所有的协议都是为了主机和设备高效地进行数据交换。为了达到这个目的,USB协议的制定者煞费苦心,定义了各种各样的约束与规范。下面我们就围绕这高效的数据交换来揭开USB神秘的面纱。
        通信一定是双方面的就像谈朋友,而不能单相思。在USB世界里就是USB主机和USB设备,但这里有点像一夫多妻制,一个USB主机和一群USB设备。而且USB主机占据这绝对霸权的地位,所有的通信都是由他发起,USB设备几乎没有一点权利。先说USB主机,说起他我们就会想起电脑上的USB插口,对没错他就是USB主机,更确切的说是USB主机对外的窗口。这里所说的主机其实是USB主机和ROOT HUB的结合体,什么是HUB,什么又是ROOT HUB。HUB就是分线器,其实也属于USB设备的范畴,他的作用有两个:一是检测设备,二是提供更多的接口来连接设备。而ROOT HUB有点特殊,生来就是和USB主机形影不离,难舍难分。USB主机的功能就是负责检测设备,并发起USB通信。话说这个USB 主机也有很多标准,最流行的就三种UHCI,EHCI和OHCI。UHCI是PC机上用的USB主机接口标准,OHCI一般用在嵌入式设备上,EHIC是为了支持USB2.0而开发的。标准虽然不同,但都是大同小异。
        谈完了USB主机,下面说说毫无权利的USB设备。一生命运悲惨,处于被动挨打的状态。首先被人烧进去了一些固件程序,这还好点,最起码有了生命。然后被人插到USB主机上,被主机检测,实现功能还的看主机的脸色。USB虽然地位很低,但是兄弟倒是不少,有好几大类。什么人机接口,大容量存储设备,还有各种符合设备。可以这么说几乎现在所有的可移动设备都有USB的身影。USB设备还有一种分类的方法就是纯种USB设备,和复合USB设备。复合的USB设备本身集成了HUB和多个设备,可以看作是几个设备的集合,纯种的就不用说了,就是一个USB设备了。下面来分析一下USB设备的构成。USB设备当然最大的就是设备这个概念了,设备下来就是配置,配置下来就是接口,接口下来就是设置和端点了。先说配置,就是设备的几种功能的集合,而接口正是一种功能的代名词,所以配置包括一个或多个接口。接口就代表一种功能,比如USB音箱包括一个喇叭和一组按键,这就代表两个接口。接口下面是端点和设置,这两个在地位上应该是平行的,但是代表两类东西。先说端点,名字很抽象,其实就是USB设备里的负责接收和发送数据一块缓冲区。每个接口包括一个或多个端点,比如喇叭接口最起码有一个接受音频数据的端点吧。最后说这个设置,设置是接口的设置,还是举USB音箱的例子,喇叭是一个接口,那么可能有几种放音模式,就是由这个设置决定。设备最重要的组成部分就是固件程序了,他是设备的灵魂,没有固件程序的设备是不会工作的设备。幸好设备厂商早就将固件烧写到了设备里,如果不是开发USB设备的人就不用管他了。
        通信两方面都介绍完了,接下来就说说通信是怎么发起的吧。USB插上主机接口到USB实现自己的功能还是有很长一段路的。在这之前先说说USB硬件接口,一共四条线,一根电源线,一根地线,两根差分信号线,这就是他们通信的全部的桥梁,要说通信就是靠这这两根差分信号线,电源线和地底线都是给设备供电的。差分信号线当然是一正一反,同时传输,但是符号相反。我是0,你就得是1,这样设计好处多多,什么防止电磁干扰的就不用说了。这对差分信号线还有一个作用就是检测设备。既然说了检测设备了,那么就开始USB设备的慢慢人生路吧。
        首先他从插上USB接口开始,本来接口的两根信号线在没有插上设备的时候都是处于低电平的状态,从USB设备插上接口的那一刹那,设备内的上拉电阻会使两根信号线的一根变高,这也许是USB设备唯一一次主动的时候。就像是对USB主机说,我来了,赶快接受我。然后敏感的USB主机收的这个信号后,就会给他一个回应--复位。话说主机可以接受那么多的设备,在这之前肯定有设备已经和USB主机建立起了通信关系,那么主机怎么找到这个新的USB设备。这里不得不谈到USB世界里的地址机制了。每个一个连接的USB的设备都会被主机分配一个八位的地址,至于怎么样分配后面再说,这个地址不能为0,因为0是给新设备的,也就是说所有新设备的地址都是0。USB主机检测设备的时候,在没有给设备配置地址的时候,就是和0地址的设备通信的,这个肯定就是刚插上的设备。你也许会说,我同时插上两个设备,那么主机不是分不清谁是谁了吗,也许你的手速像闪电一样,但是终究还是有个先后,最先插上的那个先服务,另外一个只有等的份了。
        咱们先忽略通信的细节,重点在USB主机怎样识别这个设备的。话说USB设备一大堆,而主机就一个,主机怎样分清谁是谁,这确实是一个问题。山人自由妙计,USB主机自然有他的办法,当然这得USB设备来配合。说设备的时候说了一下端点,那么每个USB设备都有一个特殊的端点,代号零。这个是硬指标,没有这个端点就不是USB设备。USB主机就是通过这个端点,控制设备与识别设备的。这个过程有一下几步,这几步都需要USB设备配合,我让你返回啥,你就返回啥。如果返不回来,主机只好无奈的说:对不起不认识你。
        第一步:发送标准请求获得设备描述符,得到端点0的最大数据长度。这里又有几个新名词,标准请求是什么?设备描述符又是什么?什么最大长度?先不管这些,带着疑问上路。
        第二步:给设备配置的新地址。至于如何配置,后面在详说。
        第三步:以新的地址,获得配置描述符。
        第五步:根据配置描述符配置设备
        第六步:根据配置描述符,识别设备的功能然后找到具体的USB驱动,然后就交给USB驱动处理。
        经过以上几步USB主机就算是认识USB设备了,然后具体实现什么功能就由更了解他的驱动程序来完成了。上面我们提到了描述符还有标准请求。那么就不得不深入到USB通信的细节来了。USB设备可谓是千变万化,各种各样但是他们之所以叫做USB设备,说明他们都有一些相同的地方。统一的接口不用说了,他们还遵循USB协议,就像上面说的那样得配合主机。另外他们还得有识别自己的名片,要不就会分不请你我了。这个名片就是各种描述符。话说他们都在哪里,当然是保存在USB设备的特定存储区了。主机要求他返回什么么,他就从存储取读出这个描述符,传给主机。主要的USB描述符有四个,号称四大金刚。他们是设备描述符,配置描述符,接口描述符,端点描述符。还有其他的一些描述符但不是必须的,只有这四大金刚才是每个设备都具有的。这四大金刚就是USB设备的身份证,USB主机就是通过这几个描述符来认识设备的,步骤就是上面的那六步。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值