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

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

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

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

[復(fù)制鏈接]

418

主題

418

帖子

4293

積分

四級會員

Rank: 4

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

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

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

    (圖片來源網(wǎng)絡(luò))
    USB通信
    USB是輪詢總線,USB主機在其中啟動所有數(shù)據(jù)交換,數(shù)據(jù)往返于USB設(shè)備中的端點。
    USB主機中的客戶端將數(shù)據(jù)存儲在緩沖區(qū)中,但沒有端點。USB主機和外圍USB設(shè)備具有不同的層,如下圖:

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

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

    包可以被認為是數(shù)據(jù)傳輸?shù)淖钚≡,每個數(shù)據(jù)包以當前傳輸速率傳輸整數(shù)個字節(jié)。數(shù)據(jù)包以同步模式開始,然后是數(shù)據(jù)包的數(shù)據(jù)字節(jié),最后以數(shù)據(jù)包結(jié)束(EOP)信號結(jié)束。

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

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

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

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


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



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

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

    點擊“閱讀原文”查看更多分享。
  • 回復(fù)

    使用道具 舉報

    發(fā)表回復(fù)

    您需要登錄后才可以回帖 登錄 | 立即注冊

    本版積分規(guī)則


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