電子產(chǎn)業(yè)一站式賦能平臺(tái)

PCB聯(lián)盟網(wǎng)

搜索
查看: 89|回復(fù): 0
收起左側(cè)

適合新手的USB 2.0 協(xié)議內(nèi)容

[復(fù)制鏈接]

418

主題

418

帖子

4293

積分

四級(jí)會(huì)員

Rank: 4

積分
4293
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2024-12-5 11:45:00 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
作者 | 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è)備六層

    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ù)傳輸。

    提示:
  • 任何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)很高了。

    (圖片來源網(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è)備具有不同的層,如下圖:

    層之間的連接是每層之間的邏輯主機(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)包。

    數(shù)據(jù)包結(jié)構(gòu)包含:Sync、 Data、 EOP。

    包可以被認(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é)束。

    所有USB數(shù)據(jù)包模式都首先發(fā)送最低有效位。在數(shù)據(jù)包之前和之后,總線處于空閑狀態(tài)。
    2.描述符USB協(xié)議中,有很多描述符:設(shè)備描述符、配置描述符、接口描述符、端點(diǎn)描述符、字符串描述符等。
    a.設(shè)備描述符設(shè)備描述符(USB_DEVICE_DESCRIPTOR)包含了設(shè)備的基本信息:

    b.配置描述符一個(gè)設(shè)備可以具有多種配置。主機(jī)可以選擇最符合應(yīng)用程序軟件要求的配置。

    c.接口描述符接口描述符(USB_INTERFACE_DESCRIPTOR)是定義端點(diǎn)的集合,該接口支持適用于特定任務(wù)的一組管道。每個(gè)配置可以具有多個(gè)接口,USB主機(jī)可以動(dòng)態(tài)選擇該接口。

    d.端點(diǎn)描述符端點(diǎn)描述符(USB_ENDPOINT_DESCRIPTOR)指定為每個(gè)端點(diǎn)的傳輸類型,方向,輪詢間隔,以及最大分組大小等。


    本文就分享到這里,更多想信息請(qǐng)到USB網(wǎng)站查看。------------ END ------------



    ●專欄《嵌入式工具
    ●專欄《嵌入式開發(fā)》
    ●專欄《Keil教程》
    ●嵌入式專欄精選教程

    關(guān)注公眾號(hào)回復(fù)“加群”按規(guī)則加入技術(shù)交流群,回復(fù)“1024”查看更多內(nèi)容。

    點(diǎn)擊“閱讀原文”查看更多分享。
  • 發(fā)表回復(fù)

    本版積分規(guī)則


    聯(lián)系客服 關(guān)注微信 下載APP 返回頂部 返回列表