USB 包的分類(令牌包這些)與USB 域的區別及關係

yooooooo發表於2024-10-26

USB PID型別與包型別的區分

理解PID與包型別

在USB協議中,PID(Packet Identifier,包識別符號)和包型別是密切相關的兩個概念,但它們並不是完全相同的。

  • PID:PID是一個8位的欄位,位於每個USB資料包的頭部。它明確地標識了該資料包的型別,如令牌包、資料包、握手包等。PID是USB協議中對資料包進行分類和識別的基礎。
  • 包型別:包型別是對PID的一種更高階別的抽象。它根據PID所代表的含義,將USB資料包分為不同的類別,如控制傳輸、中斷傳輸、批次傳輸、實時等時傳輸等。

PID的分類與對應包型別

PID主要分為以下幾類:

  • 令牌包(Token Packet)

    :用於啟動或結束一個傳輸事務。

    • OUT: 主機傳送資料到裝置
    • IN: 裝置傳送資料到主機
    • SETUP: 用於控制傳輸,包含命令和資料
    • SOF: 幀開始,用於同步
  • 資料包(Data Packet)

    :用於傳輸實際資料。

    • DATA0/DATA1: 交替出現,用於確保資料傳輸的完整性
    • MDATA: 多包事務中的中間資料包
  • 握手包(Handshake Packet)

    :用於確認傳輸狀態。

    • ACK: 確認接收
    • NAK: 否定應答
    • STALL: 出現錯誤,裝置處於停頓狀態

PID與包型別的關係

  • 一個PID對應一個特定的包型別:例如,PID為0x01的包一定是OUT令牌包。
  • 不同的PID可能屬於同一個包型別:例如,DATA0和DATA1都是資料包,但它們的PID不同。
  • 包型別是根據PID和傳輸的上下文來確定的:例如,一個SETUP令牌包通常標誌著一次控制傳輸的開始。

PID和包型別在USB協議中的作用

  • PID
    • 用於標識資料包的型別,以便裝置正確地處理。
    • 參與資料包的傳輸過程,如地址匹配、CRC校驗等。
  • 包型別
    • 用於區分不同的傳輸方式,如控制傳輸、中斷傳輸等。
    • 決定了資料傳輸的特性,如傳輸速率、資料量等。

總結

PID和包型別是USB協議中非常重要的概念。透過理解PID的分類和包型別的劃分,我們可以更好地理解USB資料傳輸的過程,從而進行更深入的協議分析和開發。

PID是USB資料包的身份證,而包型別則是對PID的更高階別的分類。

舉例說明

假設我們捕獲到一個USB資料包,其PID為0x09。根據PID的定義,我們可以確定這是一個IN令牌包,表示裝置正在向主機傳送資料。如果我們進一步分析該資料包的上下文,可以推斷出這可能是一箇中斷傳輸,用於週期性地向主機傳送裝置的狀態資訊。

相關文章