USB(Universal Serial Bus,中文名:通用串行总线)协议最早由Intel的Ajay V.Bhatt于1996年开发和推出。USB协议取代了不同类型的串口和并口,用于在计算机以及扫描仪等不同外围设备之间传输数据、打印机、键盘、游戏手柄、数码相机、操纵杆等。
简单来说,USB协议是一种基于主从体系结构的协议,其中一个USB主机可以与多个USB从设备通信。下面就其标准规范、功能特性、工作原理等内容进行简单的介绍。
用于允许不同外围设备(如鼠标、数码相机、打印机、键盘、媒体设备、扫描仪、闪存驱动器和外部硬盘驱动器)以及智能手机或PC等主机控制器之间通信的通用接口称为USB协议,即通用串行总线协议。
USB协议旨在允许热插拔和增强即插即用,即插即用允许操作系统在不启动计算机的情况下自发地配置和发现新的外围设备,而热插拔则无需重新启动即可移除和替换新的外围设备。
目前市场上有不同类型的USB协议连接器,其中Type-A和Type-B是最为常用。其中,旧的USB连接器已被当前的Mini-USB、Micro-USB和USB-C电缆取代。
典型的Type-A USB连接器用于各种应用。这些USB包括下面给出的4个引脚。这种类型的USB主要用于将各种设备连接到PC,因为它是典型的四针USB连接器。
Type-A USB连接器更高更窄,包括在一个盒子内排列的4针,其引脚配置如下图所示:
Type-A USB的引脚用彩色线表示,以执行特定功能。
在上面的引脚中,D+和D-引脚都表示数据传输。当通过电线发送“1”时,D+线将有正向流量,如果发送“0”则相反。
USB协议的架构如下图所示。一旦各种I/O设备通过USB连接到计算机,那么它们的结构就像一棵树。在这种USB结构中,每一个I/O设备都会进行点对点的连接,通过串行传输格式来传输数据。
在这种架构中,I/O设备通过称为集线器的USB连接到计算机。架构中的集线器是I/O设备和计算机之间的连接点。此架构中的根集线器用于将整个结构连接到主机。此架构中的I/O设备是键盘、鼠标、扬声器、摄像头等。
USB协议只是根据轮询原理工作,因为在轮询中,处理器会不断检查I/O设备是否准备好传输数据。因此,I/O设备不必就其状态更新处理器,因为持续检查是处理器的主要责任。因此,这将使USB成本低廉且简单。
每当一个新设备与集线器相关联时,它的地址就像“0”一样。在正常情况下,主机会轮询集线器以获取它们的状态,从而使主机知道系统中的I/O设备已连接或已从系统中分离。
一旦主机对新设备做出响应,它就会通过读取设备USB接口的特定内存中的可用数据来了解设备的容量。以便主机使用合适的驱动程序与设备进行通信。之后,主机为写入设备寄存器的新设备分配一个地址。通过此设备,USB提供了即插即用功能。此功能仅允许主机在设备连接后自动识别新的可用I/O设备。设备的I/O容量将由主机软件决定。
USB协议的另一个特点是“热插拔”,这意味着I/O设备可以在不进行任何关机或重启的情况下从主机系统连接或移除。因此,当连接或断开I/O设备时,系统会连续运行。
USB协议还可以支持以预设时间间隔传输数据的任何地方的等时通信。与同步和异步数据传输相比,同步数据的传输速度非常快。而为了保持流量同步,根集线器通过USB传输一系列位,指定同步数据的开始,实际数据可以在这一系列位之后传输。
USB的功能特性包括以下几方面内容:
USB的规范将根据包括以下内容的USB标准而改变。
USB支持低速-1.5Mbps、全速-12Mbps和高速–480Mbps三种类型。
1、USB 2.0标准
USB协议的时序图如下所示,主要用于工程领域,沿着时间线解释USB线的ON/OFF值。
“1”表示没有更改,“0”表示有更改。随着时间的增长,可以观察开/关进程。下面的系统显示了不归零反转 (NRZI) 编码,这是一种更有效的数据传输方法。
在上图中,发生了位填充,这意味着添加了逻辑1以允许同步。如果数据中包含多个1,则USB无法同步数据。因此,以这种方式,硬件会注意到一个额外的位并忽略它。它包括USB的开销,但也确保了传输的一致性。
在USB协议中,主设备被称为USB主机,它启动USB总线上发生的所有通信。在这里,计算机或其它控制器通常被视为主设备,因此如果它们请求任何信息,它们只会响应其它设备。从设备或外围设备简单地连接到主机设备,主机设备被编程为向主机设备提供操作所需的信息。一般而言,从属或周边设备主要包括电脑的键盘、鼠标、U盘、相机等。
主机设备之间能够有效地通信是非常必要的。一旦外围设备通过USB连接到计算机,计算机就会知道它是什么类型的设备,并自动加载允许该设备运行的驱动程序。而两个设备之间传输的少量数据称为“数据包”,其中一个数字信息单元随每个数据包一起传输。USB协议中可能发生的数据传输将在下面介绍。
消息格式
USB协议的数据在数据包内传输,LSB在前。USB数据包主要有四种类型分别是Token、Data、Handshake和Start of the Frame。每个数据包都是由各种字段类型设计的,如下面的消息格式图所示:

同步
在USB协议中,每个USB数据包都会以一个SYNC字段开始,该字段通常用于同步发送器和接收器以精确传输数据。在慢速或高速USB系统中,像SYNC这样的字段包括3KJ对,后面跟着2K以构成8位数据。
在高速USB系统中,同步需要15KJ对,然后是2K以构建32位数据。该字段在高速和低速时长8位,否则在最大速度时长32位,它用于同步发送器和接收器的CLK。最后的2位将指示PID字段从哪里开始。
数据包标识符字段(PID)
USB协议中的打包标识符字段主要用于识别正在传输的数据包类型,从而识别数据包数据格式。该字段的长度为8位,其中高4位识别数据包的类型,低4位是高4位的逐位补码。
地址字段
USB协议的地址字段表示主要指定给哪个分组设备。7位长度仅允许支持127个设备。地址零是无效的,因为任何尚未分配地址的设备都应该对传输到零地址的数据包做出反应。
端点字段
USB协议中的端点字段为4位长,并允许在寻址中提供额外的灵活性。通常情况下,这些被划分为移动IN/OUT的数据。端点“0”是一种特殊情况,称为控制端点,每个设备都包含一个端点0。
数据字段
数据字段的长度不固定,因此它的长度范围为0到8192位并且始终是字节数的整数。
CRC字段
循环冗余校验 (CRC) 对数据包有效载荷中的数据执行,其中所有令牌数据包都包含5位CRC,而数据包则包含16位CRC。CRC-5有五位长,用于令牌数据包和帧数据包的开始。
EOP字段
每个数据包都由一个EOP(数据包结束)字段终止,该字段包括一个单端零(SE0),用于2位时间,后跟J用于1位时间。
USB协议中常见的同步问题包括以下内容。每当开发USB设备时,USB开发人员的经验通常会面临许多同步问题,这些问题也称为USB通信错误。其中一些错误会导致系统故障。以下是USB总线可能发生的一常见问题:
USB的优点包括以下几方面内容:
USB的缺点包括以下几方面内容:
USB协议的应用非常广泛,以下以一些比较常见的应用,主要包括:
目前,USB仅支持4种传输模式,它们是为不同的目的而设计的,4种传输模式是控制、批量、同步和中断。其实,USB是一种通用的串行总线协议,用于连接计算机和外围设备。概况起来,USB协议包括以下几个方面:
物理接口:USB标准规定了四种物理接口速度,分别为1.5Mbps、12Mbps、480Mbps和10Gbps。
数据传输方式:USB协议支持两种数据传输方式,分别是同步传输和异步传输。
描述设备信息:USB协议还包括了一种用于描述设备信息的协议,即USB设备描述符协议。
电源管理:USB协议还支持设备的电源管理功能,包括挂起和恢复功能,以及设备的电源需求描述符协议。
控制传输:USB协议的控制传输用于设备初始化和配置,包括设备地址分配、设备描述符获取和设备状态获取等。
所以不难发现,USB协议是一种高效、可靠、方便的设备连接协议,已经成为现代计算机和移动设备的标准接口之一。