详解USB通信协议「特性、类型、信息格式、工作原理」

在这种架构中,I/O设备通过USB连接到计算机,这被称为集线器。架构中的集线器是I/O设备和计算机之间的连接点。此架构中的根集线器用于将整个结构连接到主机计算机。此架构中的I/O设备包括键盘、鼠标、扬声器、摄像头等。

USB协议如何工作?

USB协议只是基于轮询原理工作,因为在轮询中,处理器会不断检查输入/输出设备是否准备好传输数据。因此,I/O设备不必向处理器更新其状况,因为处理器的主要职责是不断检查。这将使USB低成本且简单,每当新设备连接到集线器时,它的地址都是“0”。

在正常情况下,主机将轮询集线器以获取其状况,从而使主机知道系统中的I/O设备已连接到系统还是已从系统断开连接。一旦主机对新设备做出响应,它就会通过读取设备USB接口特定内存中的可用数据来了解设备容量。这样主机就会使用合适的驱动程序与设备通信。之后,主机会为新设备分配一个地址,该地址会写入设备寄存器。有了此设备,USB便可提供即插即用功能。

USB协议的另一个特性是“热插拔”,这意味着,无需关闭或重启,即可将I/O设备连接到主机系统或从主机系统移除。因此,无论I/O设备连接或断开,系统都会持续运行。USB协议还可以支持等时通信,只要数据以预设的时间间隔传输即可。与同步和异步数据传输相比,等时数据传输速度非常快。为了保持通信的等时性,根集线器通过USB传输一系列位,这些位指定等时数据的开始,实际数据可以在这一系列位之后传输。

USB协议时序

USB协议时序图如下所示,主要用于工程领域,解释USB线沿时间轴的开/关值,“1”表示无电荷,“0”表示活动。随着时间的推移,您可以观察到开/关的进程。下面的系统显示了非归零反转(NRZI)编码,这是一种更有效的数据传输方法。

USB信息格式

USB协议的数据在数据包中以LSB优先的方式传输,SB数据包主要有四种类型:令牌、数据、握手和帧起始。每个数据包都由各种字段类型设计而成,如下面的信息格式图所示。

SYNC:在USB协议中,每个USB数据包都会以一个SYNC字段开始,该字段通常用于同步发送端和接收端,以精确传输数据。在低速或全速USB系统中,SYNC字段包含3对KJ序列,随后是2个K,用于组成8位的数据。在高速USB系统中,同步需要15对KJ序列,随后是2个K,用于组成32位的数据。该字段的长度在低速和全速模式下为8位,而在高速模式下为32位,其目的是用于同步发送端和接收端的时钟(CLK)。最后的2位指示PID字段的起始位置。

PID:USB协议中的数据包标识符字段主要用于识别正在传输的数据包类型,从而识别数据包数据格式。此字段的长度为8位,其中高4位识别数据包类型,低4位是高4位的逐位补码。

Address:USB协议的地址字段指示数据包主要指定用于哪个设备。7位长度仅允许支持127个设备。地址零无效,因为任何尚未分配地址的设备都应对传输到零地址的数据包做出反应。

Endpoint:USB协议中的端点字段长度为4位,允许在寻址方面具有额外的灵活性。通常,这些字段被划分为数据的输入/输出。端点“0”是一种特殊情况,称为控制端点,每个设备都包含一个端点0。

Data:数据字段的长度不固定,因此其长度范围为0到8192位,并且始终是字节数的整数,在其后面是循环冗余校验(CRC),循环冗余校验在数据包有效负载中的数据上执行,其中所有令牌数据包都包含5位CRC,数据包包含16位CRC。CRC-5长度为5位,由令牌数据包以及帧数据包的开头使用。每个数据包以EOP(End of the Packet,数据包结束)字段结束,该字段包括持续2位时间的SE0(单端零),随后是持续1位时间的J。

>>>USB接口LoRa模块

图传数传电台、LoRa射频模块、功率放大器模组、2.4G无线串口模块返回搜狐,查看更多