1. 程式人生 > >從零開始學USB(三、基礎知識3)

從零開始學USB(三、基礎知識3)

1. USB 2.0協議內容概覽

當前最新的USB協議,已經發展到USB 3.0了。但是主流的USB裝置和技術,還是以USB 2.0居多。所以此文,主要是以USB 2.0為基礎來學習USB協議的基礎知識,當然,會在相關內容涉及到USB 3.0的時候,也把USB 3.0的相關內容新增進來。

關於USB 2.0和USB 3.0等USB的協議規範,可以去官網下載:

http://www.usb.org/developers/docs/

下圖就是USB2.0協議的主要章節。

借用網友總結的圖表,詳細資訊如下:

 USB 2.0協議的內容組成

章節 名稱 內容描述 頁數
1 介紹 介紹了為何要有USB以及USB協議內容的涵蓋範圍。此章節最重要的資訊就是,引用了USB Device Class規範。不需要看。 2
2 術語和縮寫 名詞解釋,一般的協議都會有這一章節的。無需看。 8
3 背景 說明了USB的來由,以及目的是為了是USB的使用者,注意不是為了是USB的開發者,更加容易使用。介紹了Low,Full,High Speed三種不同的速度以及對應的應用領域。所以也不需要看。 4
4 系統架構綜述 可以從這章開始看。此章介紹了USB系統的基本架構,包括拓撲關係,資料速度,資料流型別,基本的電氣規範。 10
5 USB資料流模型 此章開始介紹USB中資料是如何流向的。其先介紹了端點和管道,然後對控制,中斷,等時,批量四種傳輸型別進行了詳細闡述。其中,重要的一點是,要搞懂每種傳輸型別,當然,這對於初學者來說可能會有那麼一點難。 60
6 機械的 此章詳細介紹了USB的兩種標準的連線頭,即介面的型別,其中需要了解的一點是,A類介面旨在用於資料向下流的(downstream),而B類介面旨在用於資料向上流的(upstream)。因此,你應該知道,不應該也不可能去將一個USB線,連到兩個都是upstream的埠上。而所有的full或high speed的USB線,都是可拔插的,而低速的USB線,應該是焊死的。如果你不是USB介面的製造商,那麼就沒必要細看這章,而只需要大概瀏覽一下其中關於USB的介面型別的相關內容即可。 33
7 電子的 此章詳解了USB總線上的電子訊號,包括線阻,上下沿的時間,驅動者和接受者的規範定義,以及位元位編碼,位元位填充等。此章中需要知道的,更重要的一點是,關於使用電阻在資料線上的偏壓,去實現USB裝置的速度型別檢測,以及裝置是匯流排供電還是自供電。除非你是在晶元級別上設計USB資料收發模組的相關人士,否則都可以直接跳過此章節。而正常的USB裝置的資料手冊中,都會有相關的解釋,說明關於USB匯流排阻抗需要匹配電阻的阻值是多少。 75
8 協議層 此章,從位元組的級別,解釋了USB資料包的細節,包括了同步,PID,地址,端點,CRC域。多數的開發人員都還沒注意到這部分的底層的協議層,因為USB的裝置中的硬體IC,會幫你做這些事情的。然而,多學習和了解一些關於報告狀態和握手協議方面的知識,還是有必要的。。 45
9 USB裝置框架工作[1] 此章,是整個USB協議中,用到的最多的一章。此章詳細闡述了USB匯流排列舉的過程,以及一些USB Request的詳細語法和含義,比如set address,get descriptor等,這些相關內容在一起,就構成了最常用的USB的協議層,也是通常USB程式設計人員和開發者所看到的這一層。此章節,必須詳細閱讀和學習。 36
10 USB主機的硬體和軟體 此章介紹了和USB Host相關的知識。包括了資料幀frame和微幀microframe的產生,主機控制器的需求,軟體機制和USB的驅動模型等。如果你不是去設計USB Host的話,那麼就直接跳過此章即可。 23
11 Hub規範 此章定義了USB Hub相關的規範,包括了Hub的配置,分離傳輸,Hub類的標準描述符等。同理,如果你不是去設計USB Hub,那麼也可以忽略此章。 143

 

[提示] 提示
  1. 關於第九章=chapter 9=ch9,多說明一下,由於其特殊性,特殊在於大部分和USB協議相關的內容,都在此章節內

    所以,你會在其他地方看到有關此ch9的說法。比如Linux原始碼中關於USB協議實現的部分的程式碼,會看到有對應的標頭檔案是

    include\linux\usb\ch9.h

    此檔案,就是指的是USB規範中的chapter 9,第九章。

    這也意味著,以後其他人如果談及USB的話,說到第九章,指的就是此USB規範中的chapter 9,因為其包含了USB協議的軟體實現所有關的多數的內容。

所以,由上述總結,我們可以看出:

對於只是為USB外設開發驅動的開發者的話,那麼有關的章節只有:

  • 4 系統架構綜述
  • 5 USB資料流模型
  • 9 USB裝置框架工作
  • 10 USB主機的硬體和軟體

如果是對於USB外設的電子設計研發人員,有關係的章節有:

  • 4 系統架構綜述
  • 5 USB資料流模型
  • 6 機械的
  • 7 電子的

 

2. USB協議的版本和支援的速度

USB協議,也像其他協議一樣,經歷過很多個版本,但是正式釋出出來的,主要有4個。

其中,從開始的USB 1.1,發展到後來的USB 2.0,以及最新的協議版本是USB 3.0.

不過這三個版本都是針對的是有線的(corded)裝置來說的,在USB 2.0和USB 3.0之間,釋出過一個是針對無線裝置的USB協議,叫做USB Wireless,也被稱為USB 2.5。

其中,USB 1.1中所支援的速度是低速(Low Speed)的1.5Mbits/s,全速(Full Speed)的12Mbits/s,而USB 2.0提高了速度至高速(High Speed)的480Mbits/s,而最新的USB 3.0,支援超高速(Super Speed)的5Gbits/s。

下面簡要總結一下,各個USB協議版本的演化歷史:

下表展示了USB協議的版本的演化

USB協議 針對的裝置 對應的速度 備註
版本號 釋出日期   名稱 速率  
1.1 1998年8月 有線的

Low Speed
Full Speed

1.5Mbits/s=192KB/s
12Mbits/s=1.5MB/s

 
2.0 2000年4月 有線的 High Speed 480Mbits/s=60MB/s  
2.5 2010年9月 無線的     Wireless USB 1.1
3.0 2008年11月 有線的 Super Speed 5.0Gbits/s=640MB/s  

3.為何USB的速度,最開始沒有設計的更快些?

有人會問,既然USB技術本身可以設計成速度更快的,為何最開始不把USB的設計成速度更快的呢?比如,最開始為啥沒有把USB設計成2.0的那樣的速度呢?

那是因為,任何規範和協議,都離不開當時的背景。關於USB的速度發展,其有其自身的考慮。

比如最開始的USB 1.1,對於低速的1.5Mbits/s的速度,雖然速度很低,但是由於此速度,主要用於USB滑鼠,鍵盤等低速裝置,所以本身就夠用了,而且速度低還有個好處,那就是對於電磁輻射EMI的抗干擾能力較強些,而使得設計和製造對應的硬體裝置的成本要降低些,比如可以使用相對便宜的陶瓷振盪器(resonator)做晶振(crystal)。

而後來的USB 2.0,的出現,則是為了滿足人民群眾日益增長的對於高速速度傳輸方面的需求,比如你從MP3裡面拷貝歌曲出來,如果是USB 1.1,那麼實際效果最快也就1MB左右,而如果是USB 2.0,平均效果大概有3MB/s,5MB/s,效能好的可達10MB/s,20MB/s,所以,如果拷貝個1G的東西,相當於USB 1.1要1小時左右,而USB 2.0只要1分鐘左右。因為如果沒有USB 2.0的出現的話,那麼現在的人們,早就放棄了USB了,因為誰也忍受不了這個太慢的速度。所以為了滿足大家的需求,才有了USB 2.0的出現。

而對於最新的USB 3.0,同理,也是為了滿足現在的一些及以後的可能的需求,即希望拷貝藍光光碟的內容到硬碟上,動輒都是幾個G的內容,以USB 2.0的速度,那怎麼說也得個幾分鐘,而有了USB 3.0後,就有望實現,幾秒或者幾十秒,嘩的一下,就把多少個G的東西,拷貝傳輸到別的介質上了。當然,這只是理論上的,實際的USB 3.0的速度,受到USB裝置的硬體本身能力,和對應的軟體驅動,以及所設計的介質不同,而會有不同的速度。

4. USB的功能和特點

USB規範提供了一系列可以實現多種價格/效能的屬性整合點,可以啟用允許在系統和元件級別進行區分的功能。
功能分為以下優點:

方便終端使用者使用

  • 電纜和聯結器具有唯一的型號
  • 對終端使用者隱藏了電氣細節(例如,匯流排終端)
  • 自識別外設,自動完成配置和驅動程式的功能對映
  • 可動態連線和可重新配置的外圍裝置

工作負荷和應用範圍廣

  • 可以同時支援速度幾Kb/s至Mb/s的裝置
  • 在同一套總線上可以同時支援同步和非同步傳輸型別
  • 支援多連線,支援對多個裝置的同時操作
  • 支援多大127個物理裝置
  • 在主機和裝置上支援對多個數據和訊息流的傳輸
  • 允許使用複合裝置,即具有多個功能的外設
  • 具有較小的協議開銷,因而匯流排利用率較高

等時頻寬

  • 適用於電話,音訊,視訊等的保證頻寬和低延遲

靈活性

  • 支援多種不同大小的分組,允許在一定範圍內選擇裝置的緩衝區
  • 通過適應資料包緩衝區大小和延遲,允許廣泛的裝置資料速率
  • 協議中內建了緩衝區處理的流量控制

穩定性

  • 協議中內建了錯誤處理/故障恢復機制
  • 使用者感知的實時識別裝置的動態插入和移除(熱插拔)
  • 支援識別故障裝置

與PC行業的協同作用

  • 協議易於實施和整合
  • 與PC即插即用架構一致
  • 利用現有的作業系統介面

低成本實施

  • 低成本子通道,速率為1.5 Mb / s
  • 針對外設和主機硬體的整合進行了優化
  • 適合開發低成本外圍裝置
  • 所需的電纜和聯結器價格低廉
  • 使用商用技術

升級路徑
USB體系結構可以升級,從而在一個系統中支援多個通用序列匯流排控制器