【包恩的工程日常】USB 入門淺談 ( 上 )

1. USB 簡介 :

USB 全名 Universal Serial Bus,為目前最為廣泛運用的溝通協定之一,其中在 PC 方面的發展更是令人嘖嘖稱奇,它的發明解決了 PC 連接各種周邊裝置時,需使用各式不一樣協定與硬體接口的不方便 ( 例 : 鍵盤與滑鼠 – PS/2、螢幕 – VGA、印表機 – IEEE 1284 ),目前 USB 的發展有 USB 1.0 ( 1.5 Mbps )、USB 1.1 ( 12 Mbps )、USB 2.0 ( 480 Mbps )、USB 3.0 ( 5 Gbps )、USB 3.1 ( 10 Gbps ),其中在 MCU 領域中最為廣泛運用的是 USB 2.0 所以我們將使用 USB 2.0 來做介紹。

2. USB 優缺點 :

優點 –

( 1 ) 便利性 : 大部分 PC 周邊產品都可使用。

( 2 ) 自動安裝驅動程式 : 作業系統會判別插入裝置的類別,並且已載入相對應的驅動程式。

( 3 ) 熱插拔 : USB 裝置在不關閉系統、不斷電的情況下也能夠即時插拔,增加了使用的靈活性。

( 4 ) 可連接裝置多 : 用戶可以透過 Hub 來增加 PC 的裝置數量,主機同時最多可以連接 127 個周邊裝置。

缺點 –

( 1 ) 傳送距離 : 由於硬體對應訊號穩定度的關係,所以傳輸距離較短 ( USB 2.0 最長約 5 米 )。

( 2 ) 無法同時一對多 : 在 USB 2.0 中,USB主機不能在同一個時間點對 BUS 上所有的裝置做傳輸,同時間只能對一裝置做傳輸。

3. USB 2.0 的傳輸 :

端點 ( Endpoint ) 介紹 –

介面上資料的傳收點,裝置最多有 16 個 in 與out endpoints ( 0 ~ 15 ),除了做為控制傳輸端點的端點 0 以外,每個 endpoint 只會有一種傳輸方向 ( IN / OUT ),IN 表示資料方向從裝置傳送至主機,OUT 表示資料方向從主機到裝置。( 端點 0 通常拿來作為控制端點用,給控制傳輸使用,為雙向 )。

資料傳輸 –

 封包為 USB 傳輸的最小單位,通常每筆資料交易會由 3 個封包組成,分別為 Token packet ( 內包含 PID、ADDRESS、ENDPOINT )、Data packet ( 內包含 PID、DATA、CRC )、Handshake packet ( 內包含 PID ),但實際上還是要取決於使用者裝置適用於何種傳輸模式而定。下圖為各 PID 所代表的含意。

 

 

( 取自 : https://picture.iczhiku.com/weixin/message1566788821440.html  )

 

資料傳輸模式 –

 ( 1 ) 控制傳輸 ( Control Transfer ) :

主要用於主機傳送控制命令給裝置以獲取資訊或進行裝置的設定,通常傳送一次的資料量不大,可獲取裝置列舉資訊與傳輸廠商自訂特殊命令。

 傳輸方式 –

 寫入裝置 : 主機傳送 SETUP --> 主機傳送 DATA0 ( 命令 ) --> 裝置回覆 ACK --> 主機傳送 OUT --> 主機傳送 DATA1 / DATA0 ( 互相交互 ) --> 裝置回應 ACK / NACK / STALL --> 主機傳送 IN --> 裝置回覆 DATA 1 / NAK / STALL --> 主機傳送 ACK。

 讀取裝置 : 主機傳送 SETUP --> 主機傳送 DATA0 ( 命令 ) --> 裝置回覆 ACK --> 主機傳送 IN --> 裝置回覆 DATA1 / DATA0 ( 互相交互 ) / NAK / STALL --> 主機傳送 ACK --> 主機傳送 OUT --> 主機傳送 DATA 1 --> 裝置回覆 ACK。

 


( 2 ) 中斷傳輸 ( Interrupt Transfer ) :

主要用於滑鼠、鍵盤等,需要隨時獲取狀態的裝置,主機使用固定的時間輪詢訪問裝置端,並且憑藉保證最大延遲時間的特性,來確保主機有足夠的時間可以處理資料。

傳輸方式 –

寫入裝置 : 主機傳送 OUT --> 主機傳送 DATA --> 裝置回覆 ACK / NAK / STALL。

讀取裝置 : 主機傳送 IN --> 裝置回覆 DATA / NAK / STALL --> 主機傳送 ACK。

 

( 3 ) 等時傳輸 ( Isochronous Transfer ) :

主要用於需要傳送影音資料的裝置,具有使用固定的傳輸速率來傳送資料的特性,所以不會有主機與裝置確認資料是否正確的交握過程,當傳輸資料發生錯誤時,會選擇忽略它。

傳輸方式 –

寫入裝置 : 主機傳送 OUT --> 主機傳送 DATA。

讀取裝置 : 主機傳送 IN --> 裝置回覆 DATA。

 

( 4 ) 大量傳輸 ( Bulk Transfer ) :

主要用於印表機、掃描機裝置,具有大量傳輸且必須確保資料正確,與不需要固定速率傳輸的特性,會即時對應 Bus 上其他傳輸模式所占用的頻寬,而隨時調整傳輸的速率,當 Bus 上的頻寬被占滿時,會進行等待,直到有多餘的頻寬可以使用。

傳輸方式 –

寫入裝置 : 主機傳送 OUT --> 主機傳送 DATA --> 裝置回覆 ACK / NAK / STALL。

讀取裝置 : 主機傳送 IN --> 裝置回覆 DATA / NAK / STALL --> 主機傳送 ACK。

 

參考連結 :

  1. https://picture.iczhiku.com/weixin/message1566788821440.html
  2. http://blog.sina.com.tw/william_liao/article.php?entryid=659545

如文章有任何法律責任或侵權,再煩請告知,會馬上刪除,謝謝。

 

★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★博文作者未開放評論功能