圖解USB標準架構(gòu)概覽

      網(wǎng)友投稿 1005 2022-05-29

      前面寫了一些SPI/I2C/RS-485之類的文章,有朋友留言希望能分享一些USB方面的梳理總結(jié),今天就從系統(tǒng)標準層面先來梳理一下。看看有沒有朋友喜歡。先從系統(tǒng)層面來梳理。個人學(xué)習(xí),習(xí)慣于先從整體上摸個大概,然后再對感興趣的細節(jié)逐漸深入。

      USB是比較復(fù)雜的協(xié)議棧,如果發(fā)現(xiàn)文章中有錯誤,請幫忙指正。

      注:本文主要參考USB2.0規(guī)范第4章,將標準中個人認為比較重要的一些點盡量條理清晰的總結(jié)出來。我感覺很多朋友可能對于閱讀英文標準有點輕度抗拒,所以整理此文這也是一個起因,希望對朋友們有所幫助。

      總線拓撲

      說到總線拓撲,這張圖大家一定都見過:

      USB標準上說USB總線拓撲是一種分層星形結(jié)構(gòu),這張拓撲圖延申出來的一些要點:

      所謂星型是針對Hub而言的,一個Hub下面可以掛Hub或者設(shè)備,最頂層就是USB主機控制器

      USB主機控制器一般都伴隨有一個根集線器Root Hub。

      Hub級聯(lián)最多5層

      總線上理論最大允許連接127個設(shè)備。

      Hub級聯(lián)遵循向下兼容,USB2.0主機或者高速Hub可以連接USB1.1Hub。

      一個USB分層星型結(jié)構(gòu)有且僅有一個USB主機控制器

      線纜最長不超過5米

      這個最大7層星形結(jié)構(gòu),代表的是一條USB總線,一個USB分層星型結(jié)構(gòu)有且僅有一個USB主機控制器,但并不是說一臺計算機就只有一個USB總線,比如我的計算機內(nèi)部就是2個USB主控制器+Root Hub,從Windows設(shè)備管理器可以看到:

      7層拓撲圖中的第2層只畫了一個Hub,并不意味真正的第2層就只能有一個Hub,但這個圖無法顯示出更為詳細的總線連接關(guān)系,用USBTrace軟件來看看:

      第1條總線有4個端口,第2條總線的根集線器具有18個端口,其中8、9、10為計算機內(nèi)部的USB設(shè)備占用了。我這臺筆記本對外有兩個USB接口,通過分別將U盤插入這兩個端口,再利用USBTrace探測可以推斷出這兩個端口都屬于第2條總線的Port 3以及Port 4:

      那么Hub長什么樣呢?比如下面是一個7口的USB Hub示意圖,來源于USB2.0標準:

      物理接口

      電氣概覽

      USB 通過四線電纜傳輸信號和電源。信令發(fā)生在每個點對點網(wǎng)段上的兩條線上。

      VBUS/GND:供電

      D+/D-:USB差分信號線。

      具有三種數(shù)據(jù)速率:

      高速模式 high-speed:480 Mb/s,常縮寫為HS模式

      全速模式 full-speed:12 Mb/s,常縮寫為FS模式

      低速模式 low-speed:1.5 Mb/s,常縮寫為LS模式

      圖解USB標準之架構(gòu)概覽

      至于數(shù)據(jù)編碼模式,這里先不管它。

      機械概覽

      機械部分主要定義USB采用什么尺寸的接插件,線纜的顏色定義、線號。線纜的抗拉強度等。主要從以下幾個方面去標準化:

      主要連接器類型規(guī)范,主要分A、B系列。定義了公頭、母頭。

      線纜規(guī)范。高速/全速電纜由信號雙絞線、VBUS、GND 和整體屏蔽組成。當高速/全速電纜與低速設(shè)備一起使用時,電纜必須滿足所有低速設(shè)備要求。低速設(shè)備可以不使用雙絞線。雙絞線可有效抵抗共模噪聲。

      連接器機械尺寸及材料要求。

      A/B系列插座規(guī)范

      A/B系列插頭規(guī)范

      電纜尺寸材料規(guī)范,這里就不羅列了,知道在哪里查就可以了。

      電氣、機械和環(huán)境合規(guī)性標準

      接地規(guī)范,屏蔽層一定要焊接在插頭的外殼接地點。

      插座PCB尺寸規(guī)范。所以對于有繪制接插件需要的,可以參考6.9節(jié)的尺寸。

      Logo位置

      線芯顏色規(guī)范。

      USB Logo尺寸規(guī)范。

      協(xié)議概述

      USB采用主從通訊模式,是一種輪詢總線。所有數(shù)據(jù)傳輸都由主機控制器發(fā)起。這是USB標準中最難啃的部分,這里先不總結(jié)。

      健壯設(shè)計

      標準關(guān)于協(xié)議健壯性,又稱魯棒性,做了這幾個方面的設(shè)計:

      從信號完整性角度:使用差分驅(qū)動器、差分接收器和以及對信號線纜的屏蔽處理。差分收發(fā)策略主要在抵抗共模干擾方面效果顯著,而屏蔽層則有兩方面的作用:其一,有效降低USB線通過無線電波對外界干擾;其二、能有效隔斷外界無線干擾對USB信號線、電源線的干擾。

      CRC報文校驗。報文中數(shù)據(jù)如果出錯,可以檢測出來,可以做相應(yīng)的處置。

      熱插拔檢測及對相應(yīng)硬件設(shè)備的系統(tǒng)配置管理。這個設(shè)計有助于提升用戶體驗,用戶隨用隨插,而無需關(guān)機插拔。

      利用對數(shù)據(jù)丟失或數(shù)據(jù)損壞超時檢測實現(xiàn)通訊自恢復(fù)機制,以增強協(xié)議的健壯性。

      對流數(shù)據(jù)的進行流量控制以確保同步以及底層收發(fā)硬件緩沖區(qū)管理。

      數(shù)據(jù)管道和控制管道分離

      配置管理

      USB支持熱插拔,所謂熱插拔就是,設(shè)備插入,系統(tǒng)需要正確識別設(shè)備加載驅(qū)動程序,斷開后,系統(tǒng)需要從軟件層面識別到設(shè)備已經(jīng)從總線上移除了。這里所謂的系統(tǒng),有可能是帶操作系統(tǒng)的計算機,也有可能是不帶操作系統(tǒng)的嵌入式設(shè)備。

      比如下面這個U盤插入移除的過程:

      連接檢測

      所有的USB設(shè)備都必須經(jīng)過集線器上的USB端口連接到總線。從總線拓撲圖可以看出,總線上有一個主控制器,位于金字塔的頂端。上面動圖中也可以看出,即便是計算機內(nèi)部USB設(shè)備也是經(jīng)由Hub的端口連接到總線的,現(xiàn)在的計算機內(nèi)部很多設(shè)備也會采用USB總線進行互聯(lián),比如內(nèi)置的藍牙設(shè)備。

      主機控制器位于頂端,設(shè)備是經(jīng)過集線器的端口連接到總線,那么主控制器怎么知道設(shè)備插入呢?這是由于集線器具有用于報告USB設(shè)備在其端口之一上的連接或移除的狀態(tài)位。主控制器查詢集線器檢索這些狀態(tài)位。在設(shè)備插入時,主控制器啟用端口并通過設(shè)備的控制管道在默認地址對USB設(shè)備進行尋址。主機為設(shè)備分配一個唯一的USB地址,然后確定新連接的USB設(shè)備是集線器還是功能設(shè)備。主機使用分配的USB地址和端點編號0為USB設(shè)備建立其控制管道的端點。

      如果新連接的USB設(shè)備是集線器,如果這個新連接的集線器的端口上有USB 設(shè)備,則對每個連接的USB設(shè)備執(zhí)行上述識別操作。

      如果連接的USB設(shè)備是一個功能設(shè)備,則連接通知將由適用于該功能的主機軟件處理。如果是基于通用操作系統(tǒng)的計算機系統(tǒng),則由一般驅(qū)動程序處理,如果主機控制器是單片機類嵌入式設(shè)備,則由單片機程序負責處理。

      斷開檢測

      同樣移除時,從標準設(shè)計角度來看,也需要考慮兩種情況。

      如果是設(shè)備從集線器移除,集線器會禁用該端口并向主機提供設(shè)備移除的指示。然后主機控制器從軟件層面做相應(yīng)的移除處理。

      如果是集線器移除,需要從軟件層面移除該集線器所有端口的USB設(shè)備或級聯(lián)集線器,當然如果集線器又連集線器,則有點遞歸的意思。

      總線枚舉

      總線枚舉是主控制器識別連接到總線的設(shè)備并為該設(shè)備分配唯一地址的活動。由于USB允許USB設(shè)備隨時連接到USB總線或從USB總線斷開,因此總線枚舉是 USB系統(tǒng)軟件的持續(xù)進行的過程。USB總線枚舉還包括移除的檢測和處理。

      傳輸模式

      USB利用單向或雙向管道在USB主機控制器和USB設(shè)備之間進行應(yīng)用數(shù)據(jù)和功能數(shù)據(jù)傳輸。管道Pipe是一個底層軟件及硬件邏輯概念,數(shù)據(jù)就像水一樣從管道中的一側(cè)流向另一側(cè),就對應(yīng)著主機控制器與設(shè)備的兩個端點endpoint。endpoint就像管道的兩頭,也是軟件邏輯概念。將主機與設(shè)備側(cè)的端點邏輯關(guān)聯(lián)起來,就是所謂的管道了。當然這管道之所以能傳輸數(shù)據(jù),是因為主端、設(shè)備端兩側(cè)相應(yīng)的代碼配合芯片內(nèi)部硬件實現(xiàn)的。

      數(shù)據(jù)流經(jīng)由一側(cè)的端點通過邏輯管道傳輸?shù)搅硪粋?cè)端點,USB架構(gòu)包含四種基本類型的數(shù)據(jù)傳輸:

      控制傳輸

      批量傳輸

      中斷傳輸

      同步傳輸

      下表是這四類傳輸在不同速度模式下支持的最大包長度,放在這里有一個整體概念:

      控制傳輸

      控制傳輸,主要用于在設(shè)備首次連接時配置設(shè)備;并可用于其他設(shè)備自定義的傳輸目的,比如控制設(shè)備上的其他管道。

      USB系統(tǒng)軟件在設(shè)備首次連接時使用控制傳輸進行設(shè)備配置。其他驅(qū)動程序軟件也可以選擇以自定義方式使用控制傳輸。控制傳輸主要使用管道0,數(shù)據(jù)傳輸是無損的。

      每個USB設(shè)備都必須有控制端點,支持控制傳輸來進行命令和狀態(tài)的傳輸。此外,控制傳輸是雙向傳輸。

      批量傳輸

      批量傳輸Bulk Transfer就像其名字一樣,數(shù)據(jù)量相對較大,具有突發(fā)性。這種突發(fā)性可能來源于用戶對USB設(shè)備的操作,比如對U盤的讀寫操作就會觸發(fā)批量傳輸。批量傳輸這種突發(fā)性也就意味著是非周期性的,一般用于沒有實時性要求、數(shù)據(jù)量比較大設(shè)備。比如用于打印機或掃描儀的數(shù)據(jù)。批量傳輸數(shù)據(jù)是連續(xù)的。通過在硬件中使用錯誤檢測并采用前面所說的錯誤重傳機制,可以在硬件級別確保可靠的數(shù)據(jù)交換。此外,大量數(shù)據(jù)占用的帶寬可能會有所不同,具體取決于其他總線活動,這是由主機控制器動態(tài)仲裁管理的。

      批量傳輸是單向的,使用單向大容量端點來實現(xiàn)。

      中斷傳輸

      一般用于需要實時可靠的傳輸場景。此類數(shù)據(jù)可隨時由設(shè)備傳輸,并以不低于設(shè)備指定的速率進行傳輸。中斷數(shù)據(jù)通常由一個或多個字節(jié)的事件通知、字符或坐標組成。比如USB鼠標就是一個采用中斷傳輸?shù)膶嵗?/p>

      同步傳輸

      占用預(yù)先約定好的USB帶寬以及傳輸延遲,也稱為流式實時傳輸。所需要的帶寬以及延遲要求,與特定設(shè)備的相關(guān)數(shù)據(jù)吞吐率以及端點的緩沖管理有關(guān),比如用于音頻會議USB耳麥,對于音頻的采樣率是有參數(shù)要求的。

      帶寬分配

      USB標準定義了如何允許每種傳輸類型訪問總線的規(guī)則。帶寬分配主要在從兩個方面進行規(guī)定:

      帶寬在管道之間分配。當管道建立時,USB會為一些管道分配帶寬。USB底層軟硬件需要提供數(shù)據(jù)緩沖,帶寬需求大的場景需要提供更大的緩沖區(qū)。

      帶寬可以在許多不同的數(shù)據(jù)流之間分配。從而能實現(xiàn)將各種設(shè)備連接到USB總線。此外,可以同時支持具有寬動態(tài)范圍的不同設(shè)備比特率需求。所謂寬動態(tài)范圍是指其帶寬需求是隨著使用場景在動態(tài)變化的。

      好了,先總結(jié)這么多,繼續(xù)慢慢啃~。

      推薦閱讀??點擊圖片即可跳轉(zhuǎn)

      嵌入式入門必看,看看老鳥如何華麗蛻變!(干貨分享帖)

      C語言如何使用斷言避免踩坑

      6步!教你寫一個mqtt調(diào)試助手

      Windows

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔相應(yīng)法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:千萬級用戶系統(tǒng)的SQL調(diào)優(yōu)實戰(zhàn)
      下一篇:前端學(xué)習(xí)筆記(HTML/CSS)
      相關(guān)文章
      亚洲AV一区二区三区四区| 亚洲精品在线免费看| 久久久久亚洲av无码专区| 国产专区一va亚洲v天堂| 无码天堂亚洲国产AV| 亚洲精品无码永久在线观看男男| 久久精品国产99国产精品亚洲| 亚洲日产2021三区| 亚洲第一网站免费视频| 久久久亚洲裙底偷窥综合| 亚洲成在人天堂一区二区| 亚洲AV人无码综合在线观看| 国产AV无码专区亚洲Av| 国产亚洲色婷婷久久99精品91| 亚洲人午夜射精精品日韩| 亚洲精品无码AV中文字幕电影网站| 国产91成人精品亚洲精品| 国产亚洲日韩在线a不卡| 亚洲美女在线国产| 亚洲一区二区三区国产精品| 国产亚洲精品拍拍拍拍拍| 国产精品亚洲高清一区二区| 亚洲色精品88色婷婷七月丁香| 亚洲色欲久久久综合网| 亚洲av日韩av激情亚洲| 亚洲精品在线网站| 亚洲国产精品久久网午夜| 亚洲精品第一综合99久久| 亚洲精品无码人妻无码| 国产成人高清亚洲一区91| 亚洲黄黄黄网站在线观看| 亚洲伊人久久精品影院| 亚洲AV中文无码乱人伦下载| 777亚洲精品乱码久久久久久 | 亚洲AV无码一区二区三区鸳鸯影院| 爱情岛论坛亚洲品质自拍视频网站 | 亚洲精品二三区伊人久久| 亚洲日本久久久午夜精品| 亚洲乱色熟女一区二区三区蜜臀| 亚洲av成人中文无码专区| 亚洲国产精品专区在线观看|