从零开始学USB(三、基础知识3)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_16777851/article/details/84979031

1. USB 2.0协议内容概览

当前最新的USB协议,已经发展到USB 3.0了。但是主流的USB设备和技术,还是以USB 2.0居多。所以此文,主要是以USB 2.0为基础来学习USB协议的基础知识,当然,会在相关内容涉及到USB 3.0的时候,也把USB 3.0的相关内容添加进来。

关于USB 2.0和USB 3.0等USB的协议规范,可以去官网下载:

http://www.usb.org/developers/docs/

下图就是USB2.0协议的主要章节。

借用网友总结的图表,详细信息如下:

 USB 2.0协议的内容组成

章节 名称 内容描述 页数
1 介绍 介绍了为何要有USB以及USB协议内容的涵盖范围。此章节最重要的信息就是,引用了USB Device Class规范。不需要看。 2
2 术语和缩写 名词解释,一般的协议都会有这一章节的。无需看。 8
3 背景 说明了USB的来由,以及目的是为了是USB的用户,注意不是为了是USB的开发者,更加容易使用。介绍了Low,Full,High Speed三种不同的速度以及对应的应用领域。所以也不需要看。 4
4 系统架构综述 可以从这章开始看。此章介绍了USB系统的基本架构,包括拓扑关系,数据速度,数据流类型,基本的电气规范。 10
5 USB数据流模型 此章开始介绍USB中数据是如何流向的。其先介绍了端点和管道,然后对控制,中断,等时,批量四种传输类型进行了详细阐述。其中,重要的一点是,要搞懂每种传输类型,当然,这对于初学者来说可能会有那么一点难。 60
6 机械的 此章详细介绍了USB的两种标准的连接头,即接口的类型,其中需要了解的一点是,A类接口旨在用于数据向下流的(downstream),而B类接口旨在用于数据向上流的(upstream)。因此,你应该知道,不应该也不可能去将一个USB线,连到两个都是upstream的端口上。而所有的full或high speed的USB线,都是可拔插的,而低速的USB线,应该是焊死的。如果你不是USB接口的制造商,那么就没必要细看这章,而只需要大概浏览一下其中关于USB的接口类型的相关内容即可。 33
7 电子的 此章详解了USB总线上的电子信号,包括线阻,上下沿的时间,驱动者和接受者的规范定义,以及比特位编码,比特位填充等。此章中需要知道的,更重要的一点是,关于使用电阻在数据线上的偏压,去实现USB设备的速度类型检测,以及设备是总线供电还是自供电。除非你是在晶元级别上设计USB数据收发模块的相关人士,否则都可以直接跳过此章节。而正常的USB设备的数据手册中,都会有相关的解释,说明关于USB总线阻抗需要匹配电阻的阻值是多少。 75
8 协议层 此章,从字节的级别,解释了USB数据包的细节,包括了同步,PID,地址,端点,CRC域。多数的开发人员都还没注意到这部分的底层的协议层,因为USB的设备中的硬件IC,会帮你做这些事情的。然而,多学习和了解一些关于报告状态和握手协议方面的知识,还是有必要的。。 45
9 USB设备框架工作[1] 此章,是整个USB协议中,用到的最多的一章。此章详细阐述了USB总线枚举的过程,以及一些USB Request的详细语法和含义,比如set address,get descriptor等,这些相关内容在一起,就构成了最常用的USB的协议层,也是通常USB编程人员和开发者所看到的这一层。此章节,必须详细阅读和学习。 36
10 USB主机的硬件和软件 此章介绍了和USB Host相关的知识。包括了数据帧frame和微帧microframe的产生,主机控制器的需求,软件机制和USB的驱动模型等。如果你不是去设计USB Host的话,那么就直接跳过此章即可。 23
11 Hub规范 此章定义了USB Hub相关的规范,包括了Hub的配置,分离传输,Hub类的标准描述符等。同理,如果你不是去设计USB Hub,那么也可以忽略此章。 143
[提示] 提示
  1. 关于第九章=chapter 9=ch9,多说明一下,由于其特殊性,特殊在于大部分和USB协议相关的内容,都在此章节内

    所以,你会在其他地方看到有关此ch9的说法。比如Linux源码中关于USB协议实现的部分的代码,会看到有对应的头文件是

    include\linux\usb\ch9.h

    此文件,就是指的是USB规范中的chapter 9,第九章。

    这也意味着,以后其他人如果谈及USB的话,说到第九章,指的就是此USB规范中的chapter 9,因为其包含了USB协议的软件实现所有关的多数的内容。

所以,由上述总结,我们可以看出:

对于只是为USB外设开发驱动的开发者的话,那么有关的章节只有:

  • 4 系统架构综述
  • 5 USB数据流模型
  • 9 USB设备框架工作
  • 10 USB主机的硬件和软件

如果是对于USB外设的电子设计研发人员,有关系的章节有:

  • 4 系统架构综述
  • 5 USB数据流模型
  • 6 机械的
  • 7 电子的

2. USB协议的版本和支持的速度

USB协议,也像其他协议一样,经历过很多个版本,但是正式发布出来的,主要有4个。

其中,从开始的USB 1.1,发展到后来的USB 2.0,以及最新的协议版本是USB 3.0.

不过这三个版本都是针对的是有线的(corded)设备来说的,在USB 2.0和USB 3.0之间,发布过一个是针对无线设备的USB协议,叫做USB Wireless,也被称为USB 2.5。

其中,USB 1.1中所支持的速度是低速(Low Speed)的1.5Mbits/s,全速(Full Speed)的12Mbits/s,而USB 2.0提高了速度至高速(High Speed)的480Mbits/s,而最新的USB 3.0,支持超高速(Super Speed)的5Gbits/s。

下面简要总结一下,各个USB协议版本的演化历史:

下表展示了USB协议的版本的演化

USB协议 针对的设备 对应的速度 备注
版本号 发布日期   名称 速率  
1.1 1998年8月 有线的

Low Speed
Full Speed

1.5Mbits/s=192KB/s
12Mbits/s=1.5MB/s

 
2.0 2000年4月 有线的 High Speed 480Mbits/s=60MB/s  
2.5 2010年9月 无线的     Wireless USB 1.1
3.0 2008年11月 有线的 Super Speed 5.0Gbits/s=640MB/s  

3.为何USB的速度,最开始没有设计的更快些?

有人会问,既然USB技术本身可以设计成速度更快的,为何最开始不把USB的设计成速度更快的呢?比如,最开始为啥没有把USB设计成2.0的那样的速度呢?

那是因为,任何规范和协议,都离不开当时的背景。关于USB的速度发展,其有其自身的考虑。

比如最开始的USB 1.1,对于低速的1.5Mbits/s的速度,虽然速度很低,但是由于此速度,主要用于USB鼠标,键盘等低速设备,所以本身就够用了,而且速度低还有个好处,那就是对于电磁辐射EMI的抗干扰能力较强些,而使得设计和制造对应的硬件设备的成本要降低些,比如可以使用相对便宜的陶瓷振荡器(resonator)做晶振(crystal)。

而后来的USB 2.0,的出现,则是为了满足人民群众日益增长的对于高速速度传输方面的需求,比如你从MP3里面拷贝歌曲出来,如果是USB 1.1,那么实际效果最快也就1MB左右,而如果是USB 2.0,平均效果大概有3MB/s,5MB/s,性能好的可达10MB/s,20MB/s,所以,如果拷贝个1G的东西,相当于USB 1.1要1小时左右,而USB 2.0只要1分钟左右。因为如果没有USB 2.0的出现的话,那么现在的人们,早就放弃了USB了,因为谁也忍受不了这个太慢的速度。所以为了满足大家的需求,才有了USB 2.0的出现。

而对于最新的USB 3.0,同理,也是为了满足现在的一些及以后的可能的需求,即希望拷贝蓝光光碟的内容到硬盘上,动辄都是几个G的内容,以USB 2.0的速度,那怎么说也得个几分钟,而有了USB 3.0后,就有望实现,几秒或者几十秒,哗的一下,就把多少个G的东西,拷贝传输到别的介质上了。当然,这只是理论上的,实际的USB 3.0的速度,受到USB设备的硬件本身能力,和对应的软件驱动,以及所设计的介质不同,而会有不同的速度。

4. USB的功能和特点

USB规范提供了一系列可以实现多种价格/性能的属性集成点,可以启用允许在系统和组件级别进行区分的功能。
功能分为以下优点:

方便终端用户使用

  • 电缆和连接器具有唯一的型号
  • 对终端用户隐藏了电气细节(例如,总线终端)
  • 自识别外设,自动完成配置和驱动程序的功能映射
  • 可动态连接和可重新配置的外围设备

工作负荷和应用范围广

  • 可以同时支持速度几Kb/s至Mb/s的设备
  • 在同一套总线上可以同时支持同步和异步传输类型
  • 支持多连接,支持对多个设备的同时操作
  • 支持多大127个物理设备
  • 在主机和设备上支持对多个数据和消息流的传输
  • 允许使用复合设备,即具有多个功能的外设
  • 具有较小的协议开销,因而总线利用率较高

等时带宽

  • 适用于电话,音频,视频等的保证带宽和低延迟

灵活性

  • 支持多种不同大小的分组,允许在一定范围内选择设备的缓冲区
  • 通过适应数据包缓冲区大小和延迟,允许广泛的设备数据速率
  • 协议中内置了缓冲区处理的流量控制

稳定性

  • 协议中内置了错误处理/故障恢复机制
  • 用户感知的实时识别设备的动态插入和移除(热插拔)
  • 支持识别故障设备

与PC行业的协同作用

  • 协议易于实施和集成
  • 与PC即插即用架构一致
  • 利用现有的操作系统接口

低成本实施

  • 低成本子通道,速率为1.5 Mb / s
  • 针对外设和主机硬件的集成进行了优化
  • 适合开发低成本外围设备
  • 所需的电缆和连接器价格低廉
  • 使用商用技术

升级路径
USB体系结构可以升级,从而在一个系统中支持多个通用串行总线控制器

猜你喜欢

转载自blog.csdn.net/qq_16777851/article/details/84979031