USB簡介

  • 7058
  • 0
  • 2017-04-21

USB簡介

USB歷史

資料原本是使用並列埠傳輸([arallel port),但相較於當時的串列埠傳輸以較快,不遇到一些問題

  1.傳輸時容易受到外部其他訊號干擾,傳輸長度不常

  2.並列埠資料傳輸的同步不好解決

USB 2.0介面

USB是一種序列傳輸介面,Plug and Play(PnP)隨插即用

 

USB1.x/2.0 standard pinout

  1:  V,         red(or orange),+5

  2:  D-,       white(or gold)

  3:  D+,      green

  4:  GND,   black(or blue)

 

USB1.x/2.0 mini/micro pinout

  1: V,red,+5

  2: D-,white

  3: D+,green

  4: ID,N/A,

         Permits distinction of a host connection from device connection:

  • host: connected to the signal ground
  • device: not connected

  5: GND: black

訊號傳輸

使用雙絞線(twisted pair,D+,D-)傳輸,消除電磁干擾

半雙工差動訊號,NRZI(non-return-zero inverted)編碼方式

NRZI(不歸零就反相): 無須同步時脈訊號也能產生同步資料存取,當資料為1時不轉換,0時再轉換

但連續的1或0會造成接受者和發送者頻率誤差,這時就會強制插0,也就是bit-stuffing

 

資料傳輸流程:

serial data -> bit-stuffing -> NRZI encoder -> differencial signal

                  <-bit-destuffing<-NRZI decoder<- 

網路層

USB網路是由階梯型星型拓樸實作的,有個master和多個slaves

USB host提供一個接口,如果要連接更多週邊,則須hub

  • 一層: 提供給host(bus master)
  • 二~六層: 提供給hubs or devices
  • 考慮訊號衰減和時間限制,網路架構最多七層
  • USB網路最多可支援127個裝置節點(7 bits in Token packet = 2^7-1)

USB device又可分為:

  • hub: 用來連接更多裝置
  • function: 提供特殊功能給系統,如人機裝置、影像裝置、儲存裝置
  • compound device: 本身擁有功能(function),也帶一個hub,有其他裝置連接時可做為host
  • composite device: 提供超過一個功能的裝置

USB由幾種Protocol Laters 所組成,資料由Pipes傳輸。

  • stream pipes: pipes可以被host或者device控制,資料的傳輸方向必須事先定義,定義為in or out 

                支援bulk transfers, isochronous transfers, and interrupt transfers。 (have no defined USB format)

  • message pipes: 為host控制來進行資料傳輸設定,允許雙向通訊。只支援control transfers。 (have a defined USB format)

 

Endpoints

endpoints可以被視為資料的來源或目標。一個裝置可以擁有至多16個out和16個in的endpoints

  • out: 從host指向device的方向
  • in: 指向host的方向

每個endpoint只有一個傳輸方向,只有endpoint 0例外,endpoints 0可以有in and out的雙向傳輸(透過message pipe),用來控制device。

 

傳輸型態

USB定義四種傳輸型態:

        1.control transfers: 用於控制傳輸命令及狀態操作。像是設定裝置、取得裝置資訊、發送指令到裝置等。每個USB裝              置都有一個endpoint0,USB core就是使用他在裝置插入後進行設定。

        2.interrupt transfers: 需要host端先詢問(polling)才會執行。用一個固定速度傳輸少量資料,像是鍵盤、滑鼠。

        3.bulk transfers: 用於大量資料傳輸且須要確保資料無誤(印表機、隨身碟),沒有速度限制,如果失敗就重傳確保資料            正確。

        4.isochronous transfers: 用於大力資料傳輸,但不確保資料至否到達。USB視訊裝置,沒通過CRC資料也不會重傳。

USB資料連結

一個transaction通常包含三個封包,也可能是一個、兩個、三個封包,封包是USB傳輸的最小單位。

token packet  + data packet + handshake packet(or status packet)

*note: PID(packet ID) bits are shown in MSb order. When sent on the USB , the rightmost bit(bit 0) will be sent first.

由上表可以看到,PID只使用到前4 bits,後4 bits是前4 bits倒數,主要是因為USB傳輸是透過NRZI,可以避免bit-stuffing

Transaction

  • transaction可以是host到device或者device到host
  • 傳送方向是由token packet中指定
  • 一般用handshake來判斷本次傳輸是否成功

Frame

低速和全速是以1 ms為單位,稱為一個frame ; 高速時再把一個frame切成八等分,一個0.125 ms,稱microframes。

Packet

sync + data bytes + EOP

  • least significant bit first
  • EOP(end of packet)

Token packet

PID + ADDR + ENDP + CRC5

  8   +      7     +      4    +     5         bits

  • token封包定義裝置、endpoint數量、傳輸方向
  • 用PID識別OUT、IN、SOF、SETUP
  • 對於OUT、SETUP,位址與端點欄位用來選擇接收資料的端點
  • 對於IN,位址與端點欄位選擇傳送資料的端點
  • PID後面緊接著他的補數,避免biit-stuffing

SOF為特別封包類型,包含目前的frame number,主機每隔一段很小時間間隔就會發出一次SOF封包,所有裝置及hub都會收到。

Data packet

PID +        data            + CRC16

  8   +   0~1023 bytes  +     16         bits

在low-speed裝置中,data packet最大資料量為8 bytes ; 在full-speed中,  data packet最大資料量為1023 bytes ; 在high-speed,data packet最大封包資料量為1024 bytes以上。

Data 0及Data 1為基本資料封包,用於確定傳送端和接收端之間的資料切換同步。另外於USB 2.0更增加Data 2、MData資料封包,用於執行高速的即時傳輸(isochronous transfer)。

Handshake packet

PID

  8     bits

handshake packet用於確保是否正確被收到,若發生握物,將重新執行。

  • ACK表示資料封包沒有bit-stuff、CRE error,也就是PID即DATA欄位都正確
  • NAK表示device無法從host接收資料或是無法傳輸資料到主機。NAK也可作為流量控制,表示裝置暫時無法接收或傳送資料
  • STALL表示裝置無法傳送或接收資料,需要主機介入

USB OTG(on-the-go)

USB裝置的腳色都是固定的,OTG讓原本只能為週邊的裝置也能成為host。

OTG設備永用插頭中的ID引腳來區分A/B device。

  • ID接地,為連接時的host,始終為USB bus供電
  • ID懸空,為連接時的device

設備的USB host/USB device可以通過HNP切換

USB OTG與USB2.0相比,多三種新的傳輸協定

1.attach detecion ptrtocol

  • 藉由USB bus上的通電損失來決定是否有接附裝置,此機制會啟動兩種現象,裝置插入的基本原理表現及讓裝置能表達目前連接狀態
  • 如何達成上述機制: 藉由週期性的量測USB port上的電容(capacitance)變化,已確定是否有裝置連上 ; 當電容的變化大到足以表示有新裝置街上USB port,A-device會通電到USB bus,轉備與裝置連線,而B-device會產生SRP,並等待USB bus供電。

2.session request protocol(SRP,對話請求協議)

  • 兩邊供電機制已啟動後,兩個溝通的device都可以取得主控權 ; 在標準USB機制中,只允許host端進行控制。
  • 此機制能夠有效的控制供電消耗,有請求才供電。

3.host negotiation protocol

  • 允許兩個裝置(OTG-device)交換host/peripheral的腳色。
  • 最新版的HNP有一個概念,HNP polling,週期性的詢問peripheral是否成為host

USB descriptors

  • device descriptors: 提供裝置基本資訊,如USB版本、最大packet大小、廠商與型號資訊。每個裝置只能有個device descriptors。
  • configuration descriptors: 指出USB的供電方式、interface數量。每個USB裝置可以用有不只一個configuration descriptor,可視為interface descriptor之header。
  • interface descriptors: 提供介面資訊,可視為endpooint descriptor之header。在configuration descriptor中指定出interface數量,因此interface description可以擁有一個以上。
  • endpoint description: 描述endpoint之行為與頻寬。
  • string descriptor: 提供人類可讀的資訊

 

 

 

 

< 興趣很難發覺,只有多方嘗試 >

                       - 這裡紀錄著我的心路歷程,每一篇文章都代表著進步

分享不錯的練習平台  https://www.codingame.com/

一起進步吧