運(yùn)動(dòng)控制器36:STM32的USB_OTG模塊的功能和設(shè)備模式

OTG模塊介紹

  • FS:全速模式
  • LS:低速模式
  • OTG:ON THE GO
  • OTG_FS為雙重角色設(shè)備,主機(jī)模式+VBUS電荷泵

OTG_FS主要功能

通用功能

  • 支持USB2.0
  • 支持OTG協(xié)議
  • 通過(guò)軟件設(shè)置,設(shè)計(jì)成為:USB全速B類(lèi)設(shè)備,USB主機(jī)A類(lèi)設(shè)備和USB OTG的雙重角色設(shè)備
  • 支持全速通信的SOF信號(hào)和低速通信的保持有效信號(hào)
  • 支持省電模式
  • 提供1.25K字節(jié)專用RAM和高級(jí)FIFO
  • 不需要系統(tǒng)介入情況下,保證一個(gè)幀的流量

主機(jī)模式

  • 外置VBUS
  • 最多支持8個(gè)通道
  • 內(nèi)置硬件調(diào)度器
  • 專用FIFO

設(shè)備模式

  • 雙向控制端點(diǎn)
  • 3個(gè)IN端點(diǎn)
  • 3個(gè)OUT端點(diǎn)
  • 發(fā)送FIFO和接收FIFO
  • 4個(gè)專用IN FIFO
  • 支持軟件斷開(kāi)

OTG_FS功能描述

框圖如下:


USB1.png

主要模塊包括了全速控制器和全速PHY物理接口

全速控制器

控制獲得48M時(shí)鐘,和系統(tǒng)時(shí)鐘通過(guò)FIFO對(duì)接,F(xiàn)IFO的大小為1.25K字節(jié)。

全速PHY物理接口

物理接口管理四個(gè)引腳:

  • DP:內(nèi)置上下拉,由FS控制器來(lái)設(shè)置不同類(lèi)型的需求
  • DM
  • ID:用于區(qū)分A類(lèi)和B類(lèi)設(shè)備,
  • Vbus:內(nèi)置檢測(cè)器,用于測(cè)試UBUS的有效性

OTG雙角色設(shè)備

  • ID用于檢測(cè)插入的線是B端還是A端,從而判斷是主機(jī)還是設(shè)備。
  • 全局配置的HNP使能位,動(dòng)態(tài)的控制OTG_FS在A類(lèi)主機(jī)和設(shè)備,B類(lèi)主機(jī)和設(shè)備做動(dòng)態(tài)切換。
  • SRP可以作為A類(lèi)設(shè)備時(shí)關(guān)閉VBUS以節(jié)能,具體看編程

USB設(shè)備模式

設(shè)備狀態(tài)

  • 上電狀態(tài):當(dāng)VBUS檢測(cè)到有效電平后,USB作為設(shè)備進(jìn)入上電狀態(tài),此時(shí)OTG_FS等待復(fù)位信號(hào),接收到復(fù)位信號(hào)后,產(chǎn)生中斷,并進(jìn)入默認(rèn)狀態(tài)。
  • 軟件斷開(kāi):可以設(shè)置斷開(kāi)位,移除DP的上拉電阻,從而實(shí)現(xiàn)斷開(kāi)。
  • 默認(rèn)狀態(tài):等待SET_ADDRESS命令,進(jìn)入地址狀態(tài)以后,等待主機(jī)發(fā)起傳輸
  • 3ms空閑后,產(chǎn)生掛起中斷,從而FS控制進(jìn)入掛起狀態(tài),從掛起狀態(tài),可以設(shè)置WKUPINT或由遠(yuǎn)程來(lái)控制此位,并在15ms內(nèi)清除此位喚醒。

設(shè)備端點(diǎn)

如果按照USB協(xié)議棧的層次劃分

  • 一個(gè)Host可能有一個(gè)或者多個(gè)Device
  • 一個(gè)Device可能有一個(gè)或者多個(gè)Interface
  • 一個(gè)Interface可能有一個(gè)或者多個(gè)Endpoint
  1. 首先端點(diǎn)跟信號(hào)線沒(méi)任何關(guān)系,如果對(duì)應(yīng)到TCP/IP協(xié)議棧的話,類(lèi)似于TCP/UDP里的端口概念
  2. 。Host(主機(jī))連的是Device(設(shè)備),這一層是走物理連接的,也就是這個(gè)信號(hào)線。對(duì)應(yīng)到網(wǎng)絡(luò)協(xié)議棧,就是兩臺(tái)主機(jī),或者服務(wù)器-客戶機(jī)這種層次(USB線相當(dāng)于網(wǎng)線)。Device(設(shè)備)下可能有多個(gè)Interfece(接口),從這開(kāi)始都是邏輯概念了,一個(gè)Interface,可以理解為像兩個(gè)聯(lián)網(wǎng)的電腦上里不同的通信軟件,比如有瀏覽器,有QQ,每個(gè)Interface模擬一個(gè)設(shè)備功能,比如集成了鍵盤(pán)和鼠標(biāo)的USB設(shè)備,里面就是兩個(gè)interface,一個(gè)是鍵盤(pán),另一個(gè)是鼠標(biāo)。Interface之間通常是隔離的,互相不干擾。
  3. 每個(gè)Interface(接口)下面有一個(gè)或者多個(gè)Endpoint(端點(diǎn)),這也是邏輯概念,比如QQ要通信,可能開(kāi)好幾個(gè)端口,同樣U盤(pán)要跟主機(jī)通信,要有控制信號(hào)和數(shù)據(jù)信號(hào),這些都是不同的端點(diǎn)。端點(diǎn)是USB設(shè)備通信的基本單位,所有通信幾乎都是從端點(diǎn)發(fā)起的。

作為USB設(shè)備,一共有7個(gè)端點(diǎn),一個(gè)控制,3個(gè)輸入和三個(gè)輸出:

  1. 控制端點(diǎn):雙向,IN和OUT獨(dú)立控制,包括配置,控制和中斷三個(gè)寄存器
  2. 輸入端點(diǎn):同步,塊傳輸和中斷傳輸,同樣有三個(gè)寄存器,中斷可屏蔽。
  3. 輸出端點(diǎn):同輸入。

下面對(duì)配置,傳輸和中斷做分別介紹:

  1. 配置
    • 端點(diǎn)使能
    • 激活端點(diǎn)
    • 傳輸類(lèi)型(同步,塊傳輸和中斷)
    • 最大的USB包
    • 與端點(diǎn)匹配的FIFO
    • 數(shù)據(jù)包大小
    • 幀的奇偶,用于校驗(yàn)
    • 可選響應(yīng),和CRC校驗(yàn)
  2. 傳輸
    • 設(shè)置傳輸長(zhǎng)度和查詢狀態(tài),只需要設(shè)置單詞的長(zhǎng)度以及數(shù)據(jù)包數(shù)量。
  3. 中斷
    • 作為傳輸,有狀態(tài)和中斷可以設(shè)置和傳輸,具體見(jiàn)庫(kù)函數(shù)。

關(guān)于USB的三種協(xié)議

  1. USB1.0規(guī)格:頻寬為1.5Mbps.不過(guò)因?yàn)楫?dāng)時(shí)支持USB的周邊裝置少的可憐,所以主機(jī)板商不太把USB Port直接設(shè)計(jì)在主機(jī)板上。
  2. 速度暴增的USB2.0規(guī)范:規(guī)范把外設(shè)數(shù)據(jù)傳輸速度提高到了480Mbps
  3. 雙發(fā)雙收的USB3.0規(guī)范:USB3.0的最大傳輸帶寬高達(dá)5.0Gbps(640MB/s),USB3.0 引入全雙工數(shù)據(jù)傳輸。

關(guān)于USB的三類(lèi)數(shù)據(jù)線

  1. USB Type A:就是我們電腦的那種接口,和鼠標(biāo)的那種公座.
  2. USB Type B:有三種,一種是粗型,工業(yè)上多一些,另外是以前MP3的MINI USB以及安卓現(xiàn)在普遍用的MICRO USB_B
  3. USB Type C:支持正反插入,支持到10G速度,以及電流3A!!!


    USB2.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容