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
- 首先端點(diǎn)跟信號(hào)線沒(méi)任何關(guān)系,如果對(duì)應(yīng)到TCP/IP協(xié)議棧的話,類(lèi)似于TCP/UDP里的端口概念
- 。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之間通常是隔離的,互相不干擾。
- 每個(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è)輸出:
- 控制端點(diǎn):雙向,IN和OUT獨(dú)立控制,包括配置,控制和中斷三個(gè)寄存器
- 輸入端點(diǎn):同步,塊傳輸和中斷傳輸,同樣有三個(gè)寄存器,中斷可屏蔽。
- 輸出端點(diǎn):同輸入。
下面對(duì)配置,傳輸和中斷做分別介紹:
- 配置
- 端點(diǎn)使能
- 激活端點(diǎn)
- 傳輸類(lèi)型(同步,塊傳輸和中斷)
- 最大的USB包
- 與端點(diǎn)匹配的FIFO
- 數(shù)據(jù)包大小
- 幀的奇偶,用于校驗(yàn)
- 可選響應(yīng),和CRC校驗(yàn)
- 傳輸
- 設(shè)置傳輸長(zhǎng)度和查詢狀態(tài),只需要設(shè)置單詞的長(zhǎng)度以及數(shù)據(jù)包數(shù)量。
- 中斷
- 作為傳輸,有狀態(tài)和中斷可以設(shè)置和傳輸,具體見(jiàn)庫(kù)函數(shù)。
關(guān)于USB的三種協(xié)議
- USB1.0規(guī)格:頻寬為1.5Mbps.不過(guò)因?yàn)楫?dāng)時(shí)支持USB的周邊裝置少的可憐,所以主機(jī)板商不太把USB Port直接設(shè)計(jì)在主機(jī)板上。
- 速度暴增的USB2.0規(guī)范:規(guī)范把外設(shè)數(shù)據(jù)傳輸速度提高到了480Mbps
- 雙發(fā)雙收的USB3.0規(guī)范:USB3.0的最大傳輸帶寬高達(dá)5.0Gbps(640MB/s),USB3.0 引入全雙工數(shù)據(jù)傳輸。
關(guān)于USB的三類(lèi)數(shù)據(jù)線
- USB Type A:就是我們電腦的那種接口,和鼠標(biāo)的那種公座.
- USB Type B:有三種,一種是粗型,工業(yè)上多一些,另外是以前MP3的MINI USB以及安卓現(xiàn)在普遍用的MICRO USB_B
-
USB Type C:支持正反插入,支持到10G速度,以及電流3A!!!
USB2.png
