USB的四種傳輸類型與端點


1、事務

在介紹USB傳輸類型之前,請允許我先簡答介紹一下USB事務。

事務一般由令牌包、數據包(可選)、握手包組成。

  • 令牌包:用來啟動一個事務,總是由主機發送。
  • 數據包:可以從主機到設備,也可以由設備到主機,方向由令牌包決定。
  • 握手包:通常情況,數據的接收者發送握手包(ACK或者NAK)。

USB協議規定了四種傳輸類型:控制傳輸、批量傳輸、同步傳輸、中斷傳輸。下面簡答介紹一下這四種傳輸類型及其注意事項。

 

2、控制傳輸

2.1. 控制傳輸分為三個過程:建立過程、數據過程(可選)、狀態過程。

建立過程:

a. 主機發送令牌包:SETUP

b. 主機發送數據包:DATA0

c. 設備返回握手包:ACK或不應答,注意:設備不能返回NAK或STALL,即設備必須接收建立事務的數據。

數據過程(可選):

一個數據過程可以包含多個數據事務,但所有數據事務必須是同一方向的。若數據方向發生了改變,則認為進入狀態過程。數據過程的第一個數據包必須為DATA1,然后每次正確傳輸一個數據包后就在DATA0和DATA1之間交替。

狀態過程:

狀態過程只使用DATA1包,並且傳輸方向與數據過程相反。

2.2. 控制傳輸的應用場合:主要應用於設備的枚舉過程和對數據准確性要求較高的場合。

 

3、同步傳輸

  • 同步傳輸的應用場合:主要用在數據量大,對實時性要求較高的場合。如視頻設備、音頻設備等。

 

4、批量傳輸

  • 批量傳輸使用批量傳輸事務,一次批量傳輸事務分為三個階段:令牌包階段、數據包階段、握手包階段。
  • 批量傳輸分為批量讀和批量寫,批量讀使用批量輸入事務,批量寫使用批量輸出事務。注意:不論輸入還是輸出都是以主機為參考的。
  • 批量傳輸的應用場合:主要用在數據量大、對數據實時性要求不高的場合,例如USB打印機、掃描儀、大容量存儲設備等等。

批量輸出流程:

1) 主機發送OUT令牌包。

    說明:令牌包中包含設備地址、端點號。

2) 設備處理令牌包。

  • 令牌包正確:設備等待接收數據包。
  • 令牌包錯誤:設備既不接收、處理數據包,也不返回握手包,讓主機等待超時。

注:令牌包的正確與否包括設備地址和端點號是否匹配。

3) 主機發送數據包,然后切換到接收模式,等待接收設備返回的握手包。

    說明:數據包中包含一個DATA(具體是什么類型的DATA,取決於數據切換位)。

4) 設備處理數據包。

  • 數據包正確,並有足夠的空間保存數據:設備返回ACK握手包或NYET握手包(只有告訴模式才有NYET握手包,它表示本次數據接收成功,但是沒有能力接收下一次傳輸)。
  • 數據包正確,但是沒有足夠的空間保存數據:設備返回NAK握手包。主機收到NAK,延時一段時間后,再重新進行批量輸出事務。
  • 數據包正確,但端點處於掛起狀態:設備返回一個STALL握手包。
  • 數據包錯誤:設備不返回任何握手包,讓主機等待超時。

批量輸入流程:

1) 主機發送IN令牌包,然后切換到接收數據狀態,等待設備返回數據。

    說明:令牌包中包含設備地址、端點號。

2) 設備處理令牌包。

  • 令牌包正確,且有數據需要返回:設備將一個數據包放到總線上。
  • 令牌包正確,但沒有數據需要返回:設備返回NAK握手包。主機收到NAK,延時一段時間后,再重新進行批量輸入事務。
  • 令牌包正確,但端點處於掛起狀態:設備返回一個STALL握手包。
  • 令牌包錯誤:設備不做任何響應,讓主機等待超時。

3) 主機接收並處理數據包。

  • 數據包正確:主機發送一個ACK握手包。
  • 數據包錯誤:主機不做任何響應,讓設備等待超時。

注:USB協議規定,不允許主機使用NAK握手包來拒絕接收數據包。

PING事務:

  • PING事務只有令牌包和握手包。
  • PING事務是USB2.0高速模式特有的,全速模式和低速模式沒有。
  • PING事務作用:主機探測設備是否有空間接收數據。

PING流程:

1. 主機發送PING令牌包。

2. 設備返回狀態。

  • 設備有空間接收數據:設備返回ACK握手包。
  • 設備沒有空間接收數據:設備返回NAK握手包。
  • 設備端點掛起:設備返回STALL握手包。

 

5、中斷傳輸

  • 中斷傳輸是一種保證查詢頻率的傳輸。
  • 中斷端點在端點描述符中報告它的查詢間隔,主機會保證在不小於這個時間間隔的范圍內安排一次傳輸。
  • 中斷傳輸可以用來不斷檢測某個狀態,當條件滿足后,再使用批量傳輸來傳送大量的數據。
  • 中斷傳輸和批量傳輸的結構基本上一樣(除了對端點查詢策略)。
  • 中斷傳輸的應用場合:主要用在數據量小,但對時間要求嚴格的場合。如人機接口設備(HID)中的鼠標、鍵盤、軌跡球等。

 

6、端點

  • 一個具體的端點只能工作在一種傳輸模式下。通常我們把工作在什么模式下的端點,叫做什么端點。如控制端點、批量端點、同步端點、中斷端點。
  • 端點0是設備的默認控制端點,在設備上電后就存在並可以使用,在Set Config之前所有的傳輸都是通過端點0傳輸的。
  • 端點描述符中規定了端點所能支持的最大包長。
    • 控制傳輸:高速模式的最大包長固定為64個字節;全速模式可在8、16、32、64字節中選擇;低速模式的最大包長固定為8個字節。
    • 批量傳輸:高速模式固定為512個字節;全速模式最大包長可在8、16、32、64字節中選擇;低速模式不支持批量傳輸。
    • 同步傳輸:高速模式的最大包長上限為1024個字節;全速模式的最大包長上限為1023個字節;低速模式不支持同步傳輸。
    • 中斷傳輸:告訴模式的最大包長上限為1024個字節;全速模式最大包長上限為64個字節;低速模式最大最大包長上限為8個字節。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM