Linux驅動設計硬體基礎(四)介面與匯流排之USB
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專為USB3.0所設的線路。
在嵌入式系統中,電路板若需要掛接USB裝置,則需提供USB主機(Host)控制器和聯結器;若電路板需要作為USB裝置,則需提供USB裝置介面卡和聯結器。大多數SoC集成了USB主機控制器(以連線USB外設)和裝置介面卡(如手機充當U盤)。由USB主機、裝置和Hub組成的USB系統的物理拓撲結構如圖2.14所示。
圖2.14 USB的物理拓撲結構
每一個USB裝置會有一個或者多個邏輯連線點在裡面,每個連線點叫端點。USB提供了多種傳輸方式以適應各種裝置的需要,一個端點可以選擇如下一種傳輸方式。
1.控制(Control)傳輸方式
控制傳輸是雙向傳輸,資料量通常較小,主要用來進行查詢、配置和給USB裝置傳送通用命令。所有USB裝置必須支援標準請求(Standard Request),控制傳輸方式和端點0。
2.同步傳輸方式
同步傳輸提供了確定的頻寬(計算機網路頻寬指的是網路可以通過的最高資料率,每秒多少位元)和間隔時間,它用於時間要求嚴格並具有較強容錯性的流資料傳輸,或者用於要求恆定資料傳送率的即時應用。例如進行語音業務傳輸時,使用同步傳輸方式是很好的選擇。同步傳輸也常稱為“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對裝置傳送各種請求,裝置收到主機發來的請求後回覆相應的資訊,進行列舉操作。因此USB匯流排具備熱插拔的能力。