天天看點

USB On-The-Go引腳

USB On-The-Go 是什麼

    USB 接口的裝置現在是随處可見了,列印機、相機、手機、MP3等幾乎目前能想到的消費類電子裝置都具有 USB接口。USB傳輸速率快,接口簡單、支援熱插拔的特性,使其在諸多接口中脫穎而出,大有統一天下之勢。但傳統的USB協定(USB2.0)限制了在 這龐大的裝置群中必須有一個HOST作為主子,通常是PC。兩個外設之間的資料交換必須通過這個主子中轉才能完成,效率較低,不大友善。随着嵌入式裝置的 爆炸式增長,兩個USB裝置之間直接進行資料交換的需求越來越強烈,USB On-The-Go就應運而生了。一些手機、PDA和移動裝置的廠商在USB2.0的基礎上合作開發了USB On-The-Go(OTG)。USB OTG首先解決了USB裝置之間點對點的資料交換問題,擺脫了附庸于USB HOST的繁瑣。舉例來說,有了USB OTG,數位相機可以直接将照片通過列印機列印出來,而不必先将照片拷貝到PC上,再由PC控制列印機列印。

    USB OTG 還有以下幾個特性:

n         接口更小巧,有效減 小了電子産品的體積

n         既能充當HOST又 能用做Device,即DRD(Dual-role-devices)

n         OTG 裝置依然可以連接配接到PC上用做普通的外設,即POD(Peripheral-Only Device)

n         功耗更低,以延長采 用電池供電的USB裝置的待機時間

USB OTG 接口

    傳統的USB裝置分為A和B兩種。A接口的裝置提供電源VBus,用做主子。B接口的裝置在通訊過程中作為外設。無論是A接口、B接口還是各自 的Mini接口,雖然外形有些差别,但使用的引腳都遵循以下定義:

    1 腳:VCC電源

    2 腳:D-差分負極

    3 腳:D+差分正極

    4 腳:GND接地

USB OTG 增加了一個ID引腳,它的接口(Mini-AB)定義如下:

1 腳:VBus

2 腳:D-

3 腳:D+

4 腳:ID

5 腳:GND

USB OTG 通過ID信号線來識别是Mini A還是Mini B插頭。為了使用友善,不同的接插件顔色不一樣:Mini A采用白色,Mini B采用黑色,Mini AB采用灰色。

USB OTG 協定簡述

USB OTG 中引入了兩個新的協定, SRP(Session Request Protocol)和HNP(Host Negotiation Protocol),即會話請求協定和主機交流協定。

    SRP 用于B裝置向A裝置請求建立會話和使用總線。OTG系統中的A裝置一般采用電池供電,是以,OTG系 統電源管理是非常重要的。為了節省OTG系統的功耗,OTG規定A裝置在沒有總線活動的時候,可以關掉VBus上的電源。這樣,當一個B裝置連接配接到A裝置 上之後,就要初始化SRP,并發送給A裝置,請求A裝置在VBus上提供電流支援,進而進行通信。OTG中,DRD既可作為A裝置,也可作為B裝置,是以 DRD必須支援初始化SRP和響應SRP,POD隻能作B裝置,是以隻能初始化SRP。B裝置有兩種方式向A裝置發送請求,要求建立SRP:資料線脈沖 (Data-Line Pulsing),一種是VBus脈沖(VBus Pulsing)。任何一個A裝置隻要求能響應一種SRP方式,而B裝置必須能初始化兩種SRP方式。這樣就能保證,當B裝置線初始化一種SRP,A裝置 無法響應時,B裝置能用另一種SRP方式。

    HNP 用于兩個OTG裝置互連時角色切換。為了實作HNP,A裝置必須首先允許B裝置通過OTG最新定義的 Set_Feature指令來控制總線。一旦該請求被A裝置接受,B裝置就可以對總線進行控制。如果A裝置想給B裝置一個機會來控制總線,它将中止對總線 的操作,将總線挂起。接着B裝置就将D+拉低來終止以前的連接配接。接着,A裝置激活位于D+處的上拉寄存器,完成這個轉換。此後,B裝置就将作為主要裝置使 用,而A裝置将作為外圍裝置使用。同樣,B裝置也可以通過将總線挂起并激活D+上拉寄存器,A裝置探測到總線上的變化後,清除D+上拉寄存器并重新作為主 控裝置使用。簡而言之,兩個OTG裝置互連時,可以通過HNP協定協商主從地位。

WinCE 下USB OTG驅動概述

    USB OTG 的軟體結構包括3部分:

u       OTG 控制器的驅動:包括SRP和HNP

u       OTG 的外設驅動:實作标準的USB類,來實作特定的USB外設功能

u       OTG 系統HOST驅動:包括HOST驅動、作業系統支援軟體和支援外設的類庫。

    對于移植這一部分的驅動來說,需要注意ID偵測信号、 VBUS的控制信号,這兩個信号一般連接配接到MCU的GPIO上,根據硬體修改,而SRP和HNP一般由廠商完成,無需修改。我在調試這一部分時碰到的主要 問題是,插入U盤後,OTG驅動檢測到U盤插入,并提供了VBUS的供電,但卻馬上停止通信,無法正常使用U盤,後來經過進一步調試發現是MCU的 OTG_VBUS的供電不足5V導緻,不能用時的電壓為4.6V左右,連接配接到5V後就沒有問題了,目前USB OTG支援U盤,USB鍵鼠似乎是不能用的

繼續閱讀