|
作者 | strongerHuang微信公眾號 | strongerHuang
USB在我們生活中應(yīng)用非常廣泛,但絕大部分工程師都只注重USB應(yīng)用層的開發(fā),很少有人去了解USB更底層的一些技術(shù)。
USB網(wǎng)絡(luò)
USB物理層網(wǎng)絡(luò)為分層星型網(wǎng)絡(luò):一臺主機和若干從設(shè)備。USB 2.0 網(wǎng)絡(luò)最多可支持127個外部節(jié)點,由于信號傳播的時序限制,允許的最大層數(shù)為七個:主機(總線主控器)的一層集線器和設(shè)備六層
cjc0ymjbtmd64069668413.png (32.34 KB, 下載次數(shù): 0)
下載附件
保存到相冊
cjc0ymjbtmd64069668413.png
2024-12-6 07:37 上傳
Hub:集線器,提供了附加的連接點,每個集線器將單個連接點轉(zhuǎn)換為多個連接點,也稱為端口。
Func:即Function功能,為系統(tǒng)提供了發(fā)送或接收數(shù)據(jù)和控制信息的功能,每個unc包含描述設(shè)備功能和資源要求的配置信息。
Compound Device:復(fù)合設(shè)備,是實現(xiàn)多種功能并包括嵌入式集線器的物理程序包。復(fù)合設(shè)備在主機上看起來像是帶有一個或多個不可移動USB設(shè)備的集線器。
星形網(wǎng)絡(luò)對于以主機為中心的開發(fā)人員,USB網(wǎng)絡(luò)看起來像是星形網(wǎng)絡(luò)。集線器不會引起任何編程復(fù)雜性,并且就程序員而言是透明的。
無論是直接連接到根集線器還是通過中間集線器連接,USB設(shè)備的工作方式都相同。在主/從網(wǎng)絡(luò)中,所有USB設(shè)備都可用作可尋址節(jié)點,只有主機才能啟動網(wǎng)絡(luò)中的數(shù)據(jù)傳輸。
opf3jze0f2m64069668513.png (18.23 KB, 下載次數(shù): 0)
下載附件
保存到相冊
opf3jze0f2m64069668513.png
2024-12-6 07:37 上傳
提示:任何USB網(wǎng)絡(luò)中只有一個主機。在第七層中只能啟用功能。復(fù)合設(shè)備占據(jù)兩層。
USB傳輸速率
USB的傳輸速率經(jīng)過一代一代發(fā)展,越來越快了,在2019年推出的USB 4 傳輸速率高達40Gbps。目前流行的USB 3.1、 3.2的傳輸速率其實已經(jīng)很高了,對于絕大部分應(yīng)用,這個速率完全沒問題。
早期的USB傳輸速率相對于現(xiàn)在很低,但在那個時候,傳輸速率其實已經(jīng)很高了。
kxvidr0momd64069668613.jpg (229.98 KB, 下載次數(shù): 2)
下載附件
保存到相冊
kxvidr0momd64069668613.jpg
2024-12-6 07:37 上傳
(圖片來源網(wǎng)絡(luò))
USB通信
USB是輪詢總線,USB主機在其中啟動所有數(shù)據(jù)交換,數(shù)據(jù)往返于USB設(shè)備中的端點。
USB主機中的客戶端將數(shù)據(jù)存儲在緩沖區(qū)中,但沒有端點。USB主機和外圍USB設(shè)備具有不同的層,如下圖:
ecmx1mio2ox64069668713.png (130.49 KB, 下載次數(shù): 0)
下載附件
保存到相冊
ecmx1mio2ox64069668713.png
2024-12-6 07:37 上傳
層之間的連接是每層之間的邏輯主機設(shè)備接口。在邏輯連接之間,使用管道(Pipes)傳輸數(shù)據(jù)。
想要理解USB通訊(上圖結(jié)構(gòu)),需要理解其中每項內(nèi)容含義。
1.Pipes 管道包含兩種類型的管道:Message pipes(消息管道)和 Stream pipes(流管道)。
消息管道:具有定義的USB格式,并且受主機控制。消息管道允許數(shù)據(jù)雙向流動,并且僅支持控制傳輸。
流管道:沒有定義的USB格式,可以由主機或設(shè)備控制。數(shù)據(jù)流具有預(yù)定義的方向,即IN或OUT。流管道支持中斷傳輸,同步傳輸和批量傳輸。
2.Transfers傳輸傳輸包含四種:Control Transfers:控制傳輸Interrupt Transfers:中斷傳輸Isochronous Transfers:同步傳輸Bulk Transfers:批量傳輸
控制傳輸:通常用于設(shè)置USB設(shè)備。他們始終使用IN / OUT端點0。中斷傳輸:可用于定期發(fā)送數(shù)據(jù)的地方,例如狀態(tài)更新。同步傳輸:傳輸實時數(shù)據(jù),例如音頻和視頻。它們具有保證的固定帶寬,但沒有錯誤檢測。批量傳輸:可用于在時間不重要的情況下向打印機發(fā)送數(shù)據(jù)。
3.Endpoints端點端點可以描述為數(shù)據(jù)源或接收器,存在于USB設(shè)備中,可以從USB主機接收或等待將其存儲在端點上的數(shù)據(jù)。
端點可作為一種緩沖區(qū),例如,USB主機的客戶端可以將數(shù)據(jù)發(fā)送到端點1。來自USB主機的數(shù)據(jù)將發(fā)送到OUT端點1。準備就緒后,控制器上的程序?qū)⒘⒓醋x取數(shù)據(jù)。
USB協(xié)議
USB是輪詢總線,主機在其中啟動所有數(shù)據(jù)交換,但USB協(xié)議主從都要遵從。USB協(xié)議的內(nèi)容比較復(fù)雜,本節(jié)從大方面簡單描述其中的部分內(nèi)容。
1.數(shù)據(jù)傳輸管道模型的數(shù)據(jù)包通常包含:token、 data、 Status(或handshake)包。
h2gasuv45fg64069668813.png (26.8 KB, 下載次數(shù): 0)
下載附件
保存到相冊
h2gasuv45fg64069668813.png
2024-12-6 07:37 上傳
數(shù)據(jù)包結(jié)構(gòu)包含:Sync、 Data、 EOP。
xgo0vk25hcx64069668913.png (10.83 KB, 下載次數(shù): 0)
下載附件
保存到相冊
xgo0vk25hcx64069668913.png
2024-12-6 07:37 上傳
包可以被認為是數(shù)據(jù)傳輸?shù)淖钚≡,每個數(shù)據(jù)包以當前傳輸速率傳輸整數(shù)個字節(jié)。數(shù)據(jù)包以同步模式開始,然后是數(shù)據(jù)包的數(shù)據(jù)字節(jié),最后以數(shù)據(jù)包結(jié)束(EOP)信號結(jié)束。
umzulpjf1wm64069669013.png (4.35 KB, 下載次數(shù): 0)
下載附件
保存到相冊
umzulpjf1wm64069669013.png
2024-12-6 07:37 上傳
所有USB數(shù)據(jù)包模式都首先發(fā)送最低有效位。在數(shù)據(jù)包之前和之后,總線處于空閑狀態(tài)。
2.描述符USB協(xié)議中,有很多描述符:設(shè)備描述符、配置描述符、接口描述符、端點描述符、字符串描述符等。
a.設(shè)備描述符設(shè)備描述符(USB_DEVICE_DESCRIPTOR)包含了設(shè)備的基本信息:
ekqxout0rns64069669113.png (239.18 KB, 下載次數(shù): 0)
下載附件
保存到相冊
ekqxout0rns64069669113.png
2024-12-6 07:37 上傳
b.配置描述符一個設(shè)備可以具有多種配置。主機可以選擇最符合應(yīng)用程序軟件要求的配置。
pdkpgz5ij3x64069669213.png (157.44 KB, 下載次數(shù): 0)
下載附件
保存到相冊
pdkpgz5ij3x64069669213.png
2024-12-6 07:37 上傳
c.接口描述符接口描述符(USB_INTERFACE_DESCRIPTOR)是定義端點的集合,該接口支持適用于特定任務(wù)的一組管道。每個配置可以具有多個接口,USB主機可以動態(tài)選擇該接口。
hm440z3ciys64069669313.png (180.51 KB, 下載次數(shù): 0)
下載附件
保存到相冊
hm440z3ciys64069669313.png
2024-12-6 07:37 上傳
d.端點描述符端點描述符(USB_ENDPOINT_DESCRIPTOR)指定為每個端點的傳輸類型,方向,輪詢間隔,以及最大分組大小等。
r54p5esheqy64069669414.png (135.86 KB, 下載次數(shù): 0)
下載附件
保存到相冊
r54p5esheqy64069669414.png
2024-12-6 07:37 上傳
si5aohlxi5f64069669514.png (183.43 KB, 下載次數(shù): 0)
下載附件
保存到相冊
si5aohlxi5f64069669514.png
2024-12-6 07:37 上傳
本文就分享到這里,更多想信息請到USB網(wǎng)站查看。------------ END ------------
htbffoxqwyp64069669614.gif (71.87 KB, 下載次數(shù): 0)
下載附件
保存到相冊
htbffoxqwyp64069669614.gif
2024-12-6 07:37 上傳
●專欄《嵌入式工具》
●專欄《嵌入式開發(fā)》
●專欄《Keil教程》
●嵌入式專欄精選教程
關(guān)注公眾號回復(fù)“加群”按規(guī)則加入技術(shù)交流群,回復(fù)“1024”查看更多內(nèi)容。
點擊“閱讀原文”查看更多分享。 |
|