歡迎您光臨本站 登入註冊首頁

USB(Universal Serial Bus)技術簡述

admin @ 2014-03-26 , reply:0

概述

        USB(通用串列匯流排)是用於將適用USB的外圍設備連接到主機的外部匯流排結構,其主要是用在中速和低速的……

         USB(通用串列匯流排)是用於將適用USB 的外圍設備連接到主機的外部匯流排結構,其主要是用在中速和低速的外設.USB 是通過PCI 匯流排和PC 的內部系統數據線連接實現數據的傳輸.USB 同時又是一種通信協議,他支持主系統(host)和USB 的外圍設備(device)之間的數據傳輸.

USB 的動機
1 連接PC 與電話:PC 具有很強的運算能力,而電話提供最為廣泛的通信互連.運算與通信成為計算機應用的基礎,而計算機與通信是兩個相對獨立發展的產業,USB 旨在提供可以廣泛應用於PC 到電話的互連的普遍性的連接.
2 Plug-and-Play: 從用戶端來看PC 的串列口并行口和鍵盤滑鼠埠都不能Plug-and-Play, USB則提供真正的Plug-and-Play.
3 埠擴展:PC 的已有的串列/并行口等埠只適用於一兩種的外設,並且不易擴展.USB提供雙向低成本低速到中速(USB 2.0 可達480Mb/s)的通用外設匯流排,適用於連接各種各樣的外設並且易於擴展.

USB 的拓樸結構
USB的拓樸結構如圖1
 
圖1 USB Toplogy
       在USB 的網路協議中,每個USB 的系統有且只有一個host ,它負責管理整個USB 系統,包括USB Device 的連接與刪除;Host 與USB Device 的通信總路線的控制等等.Host端有一個Root Hub, 可提供一個或多個USB 下行埠.每個埠可以連接一個USB Hub或一個USB Device. USB Hub 是用於USB 埠擴展的,即USB Hub 可以將一個USB 埠擴展為多個埠.圖1 中的每個Func(Function)就是一個USB Device. 如USB鍵盤,USB滑鼠,USB MODEM, USB硬碟等等.Compound Device 是指帶一個Hub 和一個或多個不可刪除的USB Device 的複合設備.一個USB系統可連接多達127 個Function .

        USB 的系統有且只有一個host ,而PC 端的USB 都是Host ,所以將兩台PC 的USB口通過A-A USB 電纜連接起來是不能實現通信.如果將兩個host 連起來通信,這樣一來的一個USB 的系統有了兩個的host ,與它的網路協議衝突.Anchorchip Prolific 等廠家有USB到USB的設備控制器,可以實現兩個USB Host 的相連.

USB 設備
        USB 的設備可以接在PC 上的任意的USB 介面上.而使用Hub 還可以擴展使更多的USB設備.連接到系統中USB的Hub 有一個上行的埠(到host), 有多個的下行埠(連接其它的設備) .從而可以使整個的系統可以擴展的連接127 個外設.其中Hub 也算外設.
        對於USB 系統來說,USB 的host 永遠在PC 邊,所有的其他連接到host 都稱為設備.在設備與設備之間是無法實現直線通信的,只有通過host 的管理與調節才能夠實現數據的互相傳送.在系統中通常會有一個根Hub ,這個Hub 一般有兩個下行的埠.

USB 的設備類型(device class)
       雖然USB 設備都會表現USB 的一些基本的特徵,但是USB 的設備還是可以分成多個不同類型,同類型的設備可以擁有一些共同的行為特徵和工作協議.從而使設備的驅動程序的書寫變得簡單一些.下表中就給出一些基本的USB的設備類型分類:
 

USB 的優點有以下幾條

  1.  USB 為所有的USB 外設提供了單一的易於使用的標準的連接類型.這樣一來就簡化了USB 外設的設計,同時也簡化了用戶在判斷哪個插頭對應哪個插槽時的任務,實現了單一的數據通用介面.
  2.  整個的USB的系統只有一個埠和一個中斷節省了系統資源
  3.  USB 支持熱插拔(hot plug)和PNP(Plug-and-Play) .也就是說在不關閉PC 的情況下可以安全的插上和斷開USB 設備.計算機系統動態地檢測外設的插拔並且動態地載入驅動程序.其他普通的外圍連接標準如SCSI 設備等,必須在關掉主機的情況下才能插拔外圍設備.
  4.  USB在設備供電方面提供了靈活性.USB直接連接到Hub 或者是連接到Host 的設備,可以通過USB 電纜供電,也可以通過電池或者其它的電力設備來供電,或使用兩種供電方式的組合.並且支持節約能源的掛機和喚醒模式.
  5.  USB 提供全速12Mbps 的速率和低速1.5Mbps 的速率,來適應各種不同類型的外設.USB2.0 還支持480Mbps 的高速傳輸速率.
  6.  為了適應各種不同類型外圍設備的要求,USB 提供了四種不同的數據傳輸類型:控制傳輸,Bulk 數據傳輸,中斷數據傳輸和同步數據傳輸.同步數據傳輸可為音頻和視頻等實時設備的實時數據傳輸提供固定帶寬.
  7.  USB 的埠具有很靈活的擴展性.一個USB 埠串接上一個USB Hub 就可以擴展為多個USB埠.

傳輸方式
       USB有四種的傳輸方式:控制(Control), 同步(isochronous), 中斷(interrupt), 大量(bulk).
       如果你是從硬體開始來設計整個的系統,你還要正確選擇傳輸的方式.而作為一個驅動程序的書寫者,就只需要弄清楚他是採用的什麼工作方式就行了.通常所有的傳輸方式下的主動權都在PC 邊,也就是host 邊.
1 控制(Control)方式傳輸:控制傳輸是雙向傳輸,數據量通常較小.USB 系統軟體用來主要進行查詢,配置和給USB 設備發送通用的命令.控制傳輸方式可以包括8,16,32和64 位元組的數據.這依賴於設備和傳輸速度.控制傳輸典型地用在主計算機和USB 外設之間的端點(Endpoint)0 之間的傳輸.但是指定供應商的控制傳輸可能用到其它的端點,

2 同步(isochronous)方式傳輸:同步傳輸提供了確定的帶寬和間隔時間latency) .它被用於時間嚴格並具有較強容錯性的流數據傳輸,或者用於要求恆定的數據傳輸率的即時應用中.例如執行即時通話的網路電話應用時,使用同步傳輸模式是很好的選擇.同步數據要求確定的帶寬值和確定的最大傳輸次數.對於同步傳輸來說,即時的數據傳遞比完美的精度和數據的完整性更重要一些.

3 中斷(interrupt)方式傳輸:中斷方式傳輸主要用於定時查詢設備是否有中斷數據要傳輸.設備的端點模式器的結構決定了它的查詢頻率,從1 到255ms 之間.這種傳輸方式典型的應用在少量的,分散的,不可預測數據的傳輸.鍵盤,操縱桿和滑鼠就屬於這一類型.中斷方式傳輸是單向的並且對於host 來說只有輸入的方式.

4 大量(bulk)傳輸:主要應用在數據大量傳輸傳輸和接受數據上,同時又沒有帶寬和間隔時間要求的情況下,要求保證傳輸.印表機和掃描儀屬於這種類型.這種類型的設備適合於傳輸非常慢和大量被延遲的傳輸,可以等到所有其它類型的數據的傳輸完成之後再傳輸和接收數據.

        USB 將其有效的帶寬分成各個不同的幀(frame) ,每幀通常是1ms 時間長.每個設備每幀只能傳輸一個同步的傳輸包.在完成了系統的配置信息和連接之後,USB 的host 就會對不同的傳輸點和傳輸方式做一個統籌安排,用來適應整個的USB 的帶寬.通常情況下同步方式和中斷方式的傳輸會佔據整個帶寬的90% ,剩下的就安排給控制方式傳輸數據.

數據交換(Transactions)
        一個transaction 是在host 和設備device之間的不連續相互數據交換,通常由host 開始交換,交換的開始是由Token 的包開始的,接下來是雙方向上的數據包,在數據包傳送完之後,就會由設備device 返回一個握手handshake包.USB系統通過IN,OUT,和SETUP的包來指定USB 地址和endpoint 最多是128 個,0 通常被用來用做預設的傳送配置信息的,並且這些被指定的設備必須通過上面形式的包來回應這種形式的指定.每個SETUP的包包含8 個byte 的數據,數據用來指示傳送的數據類型.對於DATA 數據包來說,設置兩種類型的數據包是為了能夠在傳送數據的時候做到更加的精確.ACK handshake 的包用來指示數據傳送的正確性,而STALL handshake 則表示數據包在傳送的過程中出了故障,並且請示host 重新發數據或者清除這次傳送.PRE 格式的包主要是用在在一個USB 的系統中如果存在不同速率的設備的時候,將不同於匯流排速度的設備中就會回應一個PRE 的包從而會忽略該設備.各種不同類型的包的大小是不同的,DATA的數據包最大是1023bytes.

USB 設備的開發

  1.  從Http://www.usb.org/developer處得到USB 的Specification 閱讀相關內容同時可參考The USB Handbook by Jaff Kosar Developing USB Peripherals by Wooi Ming Tan 等參考書
  2.  需要一台支持USB的PC 如果要開發WDM 驅動程序則需要一台有以下配置的PC
    Windows NT 4.0
    Windows NT DDK
    USB DDK
    Win 32 DDK
    Visual C++
    先裝VC 然後DDK 然後Nemega 公司的DriverStudio 或是WinDriver(開發工具).
  3.  編寫USB Device 的規格書.
  4.  無論如何不要做無謂的重複,可以購買相應的評估板和評估軟體,並找到儘可能多的實例,源程序,代碼.然後需要有你所選的MCU的程序編譯器.
  5.  申請成為USB論壇(USB forum)的成員(每年大約需要支付$2500). 同時就可以獲得一個Vendor ID ,也可以向他們購買Vendor ID, 每個Vendor ID 的零售價格是$200, 不過USB論壇的成員可以在USB相關的支持方面可以得到許多的好處.
  6.  購買其它在開發中要用到的設備,如匯流排分析儀USB Hubs ,競爭者的相應USB 設備以及USB滑鼠USB鍵盤等.
  7.  編寫或改寫USB驅動程序,MCU固件程序和客戶程序代碼
  8.  參加USB遵從試驗,在不同的系統與配置驗證你的USB設備

驅動程序編寫.
     USB 的驅動程序和以往的直接跟硬體打交道的WIN95 的VXD 的方式的驅動程序不同它應該是WDM 類型的Windows 下的USB軟體總體框圖如圖2
 
圖2 USB軟體總體框圖


[admin via 研發互助社區 ] USB(Universal Serial Bus)技術簡述已經有2752次圍觀

http://cocdig.com/docs/show-post-44891.html