包標識字段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 |
用於數據流量監測控制 |