USB令牌包的作用详解

摘要:在USB(通用串行总线)通信中,Token包(令牌包)是非常重要的控制包,用于启动事务并指定数据传输的方向、设备地址和端点。本文将对Token包进行详细解析,包括其结构和具体作用。

在USB(通用串行总线)通信中,Token包(令牌包)是非常重要的控制包,用于启动事务并指定数据传输的方向、设备地址和端点。本文将对Token包进行详细解析,包括其结构和具体作用。

一、Token包的结构

Token包的结构如下:

同步字段(Sync):8位,用于同步接收方的时钟。

PID(Packet ID):8位,标识包的类型。对于Token包,PID可以是OUT、IN或SETUP。

地址字段(Address):7位,标识目标设备的地址。

端点字段(Endpoint):4位,标识目标设备的端点。

CRC5(Cyclic Redundancy Check):5位,用于校验Token包的完整性和正确性。

二、PID字段

PID字段用于标识Token包的类型,主要有以下几种:

OUT:表示主机向设备发送数据。

IN:表示主机请求从设备读取数据。

SETUP:用于控制传输,通常用于设置设备的状态或请求设备的状态。

三、具体作用

Token包的主要作用是启动USB事务,并提供必要的控制信息。具体来说,Token包有以下几种用途:

1、启动事务

OUT Token包:主机发送OUT Token包,表示主机即将向设备发送数据。设备接收到OUT Token包后,会准备接收数据。

IN Token包:主机发送IN Token包,表示主机请求从设备读取数据。设备接收到IN Token包后,会准备发送数据。

SETUP Token包:主机发送SETUP Token包,用于控制传输,通常用于设置设备的状态或请求设备的状态。设备接收到SETUP Token包后,会准备接收后续的控制数据。

2、指定设备地址

地址字段:7位的地址字段用于标识目标设备的地址。每个USB设备在连接到主机时都会被分配一个唯一的地址(0到127)。主机通过这个地址字段指定要与哪个设备进行通信。

3、指定端点

端点字段:4位的端点字段用于标识目标设备的端点。每个USB设备可以有多个端点,每个端点负责不同的数据传输任务。主机通过这个端点字段指定要与设备的哪个端点进行通信。

4、校验完整性

CRC5:5位的CRC5字段用于校验Token包的完整性和正确性。接收方在接收到Token包后,会计算CRC5校验码并与包中的CRC5字段进行比较,如果一致则表示包没有错误,否则表示包有错误。

四、Token包的传输过程

以下是一个典型的USB事务的传输过程,展示了Token包的具体作用:

主机发送Token包:OUT Token包:主机发送OUT Token包,指定目标设备的地址和端点。

同步字段:8位

PID:0100(OUT)

地址字段:7位

端点字段:4位

CRC5:5位

设备响应:

设备接收到OUT Token包后,准备接收数据。

主机发送Data包:

主机发送Data包,包含实际的数据。

同步字段:8位

PID:0000(DATA0)或0001(DATA1)

数据字段:0到1023字节

CRC16:16位

设备发送Handshake包:

设备接收到Data包后,发送Handshake包确认数据的接收状态。

同步字段:8位

PID:0010(ACK)、0101(NAK)、0111(STALL)或1011(NYET)

Token包在USB通信中起着至关重要的作用,用于启动事务、指定设备地址和端点、以及校验包的完整性。通过理解Token包的结构和具体作用,可以更好地设计和调试USB设备。

来源:街拍美美哒一点号

相关推荐