USB通信包标识字段PID

包标识字段PID的定义格式如下图,包标识字段(PID)长度为8bit,由低4bit的类型字段和高4bit的校验字段组成。校验字段是类型字段的反码。例如,PID[3:0] = 0001B时,完整的PID字段则应该是:1110_0001B,表示令牌OUT。

PID字段有如下4中类型信息包:

  • 令牌包:PID[1:0] = 01B;
  • 握手包:PID[1:0] = 10B;
  • 数据包:PID[1:0] = 11B;
  • 特殊包:PID[1:0] = 00B。

 

1.令牌包:对于令牌包,PID字段可以指明数据传输的方向、帧开始等,定义如下:

令牌包

PID[3:0]

含义

OUT

0001B

数据从Host发送到Device

IN

1001B

数据从Device发送到Host

SOF

0101B

帧或小帧的开始信息

SETUP

1101B

Host向Device发送配置信息

 

2. 握手包:对于握手包,PID字段指明数据传输的结果,定义如下:

握手包

PID[3:0]

含义

ACK

0010B

数据已经被接收方正确接收

NAK

1010B

数据未被接收方正确接收

STALL

1110B

目前使用的端点被挂起

NYET

0110B

接收方没有反应

 

3. 数据包:对于数据包,PID字段子明数据包的奇偶性,类型定义如下:

数据包

PID[3:0]

含义

DATA0

0011B

数据包为偶数据包

DATA1

1011B

数据包为奇数据包

DATA2

0111B

数据包为一个高速同步事务专用数据包

MDATA

1111B

数据包为SPLIT事务专用数据包

      

4. 特殊包:用于定义特殊事务

特殊包

PID[3:0]

含义

PRE

1100B

主机发送的用于使能USB低速数据通信的令牌信息先导包

ERR

0100B

用于SPLIT事务中,表示错误握手信号

SPLIT

1000B

表示SPLIT事务的令牌信息

PING

0100B

用于数据流量监测控制

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章