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

1. USB 訊號 :

USB 2.0 的信號現有4 條,分別為 VBUS、D+、D-、GND,其中主要由 D+、D – 來組成 USB 資料的訊號以兩個相反的電壓訊號 ( 差分訊號 ) 來增強信號的穩定度與抗雜訊能力,由於沒有時脈的訊號線可以供給主機與裝置之間做同步,所以USB 運用 D+、D- 信號線搭配 NRZI 編碼來完成限號的表示方式與同步,如下圖示。

 

( 圖片取自 : https://www.cnblogs.com/mr-bike/p/11674590.html  )

 

NRZI ( Non Return Zero Inverted ) 編碼 –

 簡單來說就是在資料為 0 時,將信號翻轉,資料為 1 時,信號不變 ( 解碼同理 ),如下圖所示,而經過前面同步段的話,就可以使主機與裝置使用相對應的時脈速度來做溝通,但因為時脈總有可能會有些為誤差,加上沒有 clock 來校驗,所以經過大量傳輸資料 1 之後,可能會產生多讀或少讀一個信號 1 而導致整個資料錯亂掉,因此需要再加入 bit-stuffing 的手法,來確保資料正確的同步。

 

( 圖片取自 : http://wiki.csie.ncku.edu.tw/embedded/USB  )

 

Bit-stuffing –

此手法為在每傳輸 6 個連續的資料 1 後,都強行插入一個資料 0 來將其訊號反轉,來確保資料不會因為微小的時脈誤差,而在大量傳輸後導致資料的誤判,在接收方面的話,只需要將收到 6 個連續的 1 訊號之後,將後面的 0 訊號忽略即可。

2.USB 裝置列舉 ( Device Emulation ) :

此部分為 USB 通訊上最為重要的一部份,為所有傳輸的起,在裝置插入 USB 連接埠時,主機需要透過控制傳輸,來下達 USB 標準命令,獲取必要的裝置資訊,從而得知裝置的類別,並自動安裝相對應的驅動程式,讓裝置可以順利啟用,除此之外,主機經過讀取描述符後,也會按照描述符的格式傳輸資料給裝置使其完成基本的配置 ( 例如 : 位址、限電流 ),此過程稱為裝置列舉。

描述符 ( Descriptor ) –

是一種資料結構,主要存放裝置的各種資訊 ( 常用 : 裝置、配置、介面、端點描述符 ),可以讓主機以相對應的命令讀取相對應的描述符資料,或者對其進行配置。常用描述符類型如下圖。

模擬分析 –

在 USB 傳輸過程中,因為傳輸速度快、資料量大且解碼繁瑣,所以不可能單純用示波器去擷取波形,這時候需要透過 USB Analyzer 去幫忙解析波型,取得封包數據,接個可以透過數據與其相對應的描述符表格來做分析,,以下會用虛擬數據來做分析的範例 ( 不是真實數據 ),首先我們需要知道傳輸資料中的第一個byte代表描述符的資料量 ( 以下都已 16 進制來看 )。



USB Analyzer 接收數據為 ( 16 bytes ) : 09021000010100806107050101400002,因為得知了,第一個 bytes 代表描述符資料的數量,所以可以將資料拆分為 090210000101008061 與 07050101400002 兩個部分再去做解析。


( 圖片取自 : https://www.itread01.com/content/1550383056.html  )

 

經過查表後得知,分析結果如下。

 

09  : 此描述符結構體大小為 9 bytes。

02  : 描述符型別為配置描述表格。

0010 : 此配置總共返回 16 bytes 的資料。

01  : 此配置的介面數量為 1。

01  : 設置組態命令的指引數為 1。

00  : 表示沒有字串。

80  : 與 USB 1.0 維持相容,電源自介面汲取。

61  : 裝置所需要的電流值為 194 mA ( USB 2.0 時以 2 mA 為單位,且介面最高只能提供至 500 mA )。

 

( 圖片取自 : https://www.itread01.com/content/1550383056.html  )

 

經過查表後得知,分析結果如下。

 

07  : 此描述符結構體大小為 7 bytes。

05  : 描述符型別為端點描述表格。

01  : 使用端點 1,OUT 傳輸 ( 主機傳送資料至裝置 )。

01  : 等時傳輸模式。

0040 : 端點最大的收、發瘋包大小為 64 bytes。

02  : 主機查詢端點時間間隔為 2 ms。

 

 

參考資料 :

  1. https://www.cnblogs.com/mr-bike/p/11674590.html
  2. http://wiki.csie.ncku.edu.tw/embedded/USB
  3. https://www.itread01.com/content/1550383056.html

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

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

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