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