- Linux設備驅動開發詳解:基于最新的Linux4.0內核
- 宋寶華
- 1217字
- 2018-12-31 20:25:20
2.3.4 USB
USB(通用串行總線)是Intel、Microsoft等廠商為解決計算機外設種類的日益增加與有限的主板插槽和端口之間的矛盾而于1995年提出的,它具有數據傳輸率高、易擴展、支持即插即用和熱插拔的優點,目前已得到廣泛應用。
USB 1.1包含全速和低速兩種模式,低速方式的速率為1.5Mbit/s,支持一些不需要很大數據吞吐量和很高實時性的設備,如鼠標等。全速模式為12Mbit/s,可以外接速率更高的外設。在USB 2.0中,增加了一種高速方式,數據傳輸率達到480Mbit/s,半雙工,可以滿足更高速外設的需要。而USB 3.0(也被認為是Super Speed USB)的最大傳輸帶寬高達5.0Gbit/s(即640MB/s),全雙工。
USB 2.0總線的機械連接非常簡單,采用4芯的屏蔽線,一對差分線(D+、D-)傳送信號,另一對(VBUS、電源地)傳送+5V的直流電。USB 3.0線纜則設計了8條內部線路,除VBUS、電源地之外,其余3對均為數據傳輸線路。其中保留了D+與D-這兩條兼容USB 2.0的線路,新增了SSRX與SSTX專為USB 3.0所設的線路。
在嵌入式系統中,電路板若需要掛接USB設備,則需提供USB主機(Host)控制器和連接器;若電路板需要作為USB設備,則需提供USB設備適配器和連接器。目前,大多數SoC集成了USB主機控制器(以連接USB外設)和設備適配器(以將本嵌入式系統作為其他計算機系統的USB外設,如手機充當U盤)。由USB主機、設備和Hub組成的USB系統的物理拓撲結構如圖2.14所示。

圖2.14 USB的物理拓撲結構
每一個USB設備會有一個或者多個邏輯連接點在里面,每個連接點叫端點。USB提供了多種傳輸方式以適應各種設備的需要,一個端點可以選擇如下一種傳輸方式。
1.控制(Control)傳輸方式
控制傳輸是雙向傳輸,數據量通常較小,主要用來進行查詢、配置和給USB設備發送通用命令。所有USB設備必須支持標準請求(Standard Request),控制傳輸方式和端點0。
2.同步(Isochronous)傳輸方式
同步傳輸提供了確定的帶寬和間隔時間,它用于時間要求嚴格并具有較強容錯性的流數據傳輸,或者用于要求恒定數據傳送率的即時應用。例如進行語音業務傳輸時,使用同步傳輸方式是很好的選擇。同步傳輸也常稱為“Streaming Real-time”傳輸。
3.中斷(Interrupt)傳輸方式
中斷方式傳送是單向的,對于USB主機而言,只有輸入。中斷傳輸方式主要用于定時查詢設備是否有中斷數據要傳送,該傳輸方式應用在少量分散的、不可預測的數據傳輸場合,鍵盤、游戲桿和鼠標屬于這一類型。
4.批量(Bulk)傳輸方式
批量傳輸主要應用在沒有帶寬、間隔時間要求的批量數據的傳送和接收中,它要求保證傳輸。打印機和掃描儀屬于這種類型。
而USB 3.0則增加了一種Bulk Streams傳輸模式,USB 2.0的Bulk模式只支持1個數據流,而Bulk Streams傳輸模式則可以支持多個數據流,每個數據流被分配一個Stream ID(SID),每個SID與一個主機緩沖區對應。
在USB架構中,集線器負責檢測設備的連接和斷開,利用其中斷IN端點(Interrupt IN Endpoint)來向主機報告。一旦獲悉有新設備連接上來,主機就會發送一系列請求給設備所掛載的集線器,再由集線器建立起一條連接主機和設備之間的通信通道。然后主機以控制傳輸的方式,通過端點0對設備發送各種請求,設備收到主機發來的請求后回復相應的信息,進行枚舉(Enumerate)操作。因此USB總線具備熱插拔的能力。
- 無蘋果不生活 OS X Mountain Lion隨身寶典
- 嵌入式操作系統(Linux篇)(微課版)
- Learning Bootstrap
- 嵌入式實時操作系統μC/OS原理與實踐
- STM32庫開發實戰指南:基于STM32F4
- 無蘋果不生活 The New iPad隨身寶典
- Python UNIX和Linux系統管理指南
- 寫給架構師的Linux實踐:設計并實現基于Linux的IT解決方案
- Distributed Computing with Go
- 大規模分布式系統架構與設計實戰
- 鴻蒙入門:HarmonyOS應用開發
- 程序員必讀經典(算法基礎+計算機系統)
- SAP后勤模塊實施攻略:SAP在生產、采購、銷售、物流中的應用
- Instant Getting Started with VMware Fusion
- Linux內核設計的藝術:圖解Linux操作系統架構設計與實現原理(第2版)