3.1. USB 2.0协议内容概览

USB协议,由于涉及内容太多,所以在此一个文档中解释清楚,是不现实的。

此处能做的和要做的,就是对于USB协议简明地介绍一下关于USB本身协议部分的内容。

当前最新的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/

其实,说实话,不论是谁,如果开始看USB协议的时候,发现单独对于USB 2.0规范本身这一个文档来说,竟然都有650页,而如果再加上,新的USB 3.0规范的482页,和其他一些辅助的USB相关的规范定义等文档,即使你是英语为母语的人,如果要看完这么多页的协议规范,估计也会吐的,更别说我们中国人了。

所以,此处,就来简单以USB 2.0规范为例,分析一下,具体其都主要包含哪些内容,然后你会发现,其实和USB协议本身相关的内容,相对则不会那么多,大概只有97页左右的内容,是我们所要关心的。

下面就来分析看看,USB 2.0的规范中,具体都包含了哪些内容:

表 3.1. USB 2.0协议的内容组成

章节名称内容描述页数
1介绍介绍了为何要有USB以及USB协议内容的涵盖范围。此章节最重要的信息就是,引用了USB Device Class规范。不需要看。2
2术语和缩写名词解释,一般的协议都会有这一章节的。无需看。8
3背景说明了USB的来由,以及目的是为了是USB的用户,注意不是为了是USB的开发者,更加容易使用。介绍了Low,Full,High Speed三种不同的速度以及对应的应用领域。所以也不需要看。4
4系统架构综述可以从这章开始看。此章介绍了USB系统的基本架构,包括拓扑关系,数据速度,数据流类型,基本的电气规范。10
5USB数据流模型此章开始介绍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
9USB设备框架工作[1]此章,是整个USB协议中,用到的最多的一章。此章详细阐述了USB总线枚举的过程,以及一些USB Request的详细语法和含义,比如set address,get descriptor等,这些相关内容在一起,就构成了最常用的USB的协议层,也是通常USB编程人员和开发者所看到的这一层。此章节,必须详细阅读和学习。36
10USB主机的硬件和软件此章介绍了和USB Host相关的知识。包括了数据帧frame和微帧microframe的产生,主机控制器的需求,软件机制和USB的驱动模型等。如果你不是去设计USB Host的话,那么就直接跳过此章即可。23
11Hub规范此章定义了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 电子的

这么一来,如果是打算做USB设备驱动开发的话,其实我们要看的,只是USB 2.0规范中的一部分,大概有10+60+36+23=129页,所以,相对来说,还算能够接受,至少比要看那600页,要少了很多。

当然,这其中的内容,也还是不少。

而下面这些内容,就是将其中最基本的内容,精简出来,以方便想要快速了解USB基础知识的人,尽快地,更加清晰地,了解到USB的基础知识。