USB以其具有高速度、低成本、低功耗、即插即用和使用維護方便等優(yōu)點,使得USB接口的設(shè)備正在以驚人的速度發(fā)展。隨著USB應用領(lǐng)域的逐漸擴大,人們對于USB的期望也越來越高,希望USB能應用在各種計算機領(lǐng)域中,尤其是在移動數(shù)據(jù)領(lǐng)域中,希望能通過PDA等移動設(shè)備來直接與USB外設(shè)通信,使得USB能應用在沒有PC的領(lǐng)域中。正是在這種新的需求下,USB On-The-Go(USB OTG)技術(shù)應運而生。本文主要介紹了USB OTG技術(shù)的性能特點、芯片類型及其主要應用領(lǐng)域。
1 USB OTG 的性能特點
1.1 Mini-AB插座和插件
USB 2.0協(xié)議規(guī)范中定義了3種主機與設(shè)備的連接方式對:主機上的標準A插頭和插座、外設(shè)上的標準B插頭和插座以及外設(shè)上可選擇的Mini B插頭和插座。USB OTG主要是為了應用在便攜的移動USB設(shè)備上,要求減小插頭和插座的大小。為此,OTG 1.0作為USB 2.0的補充,新定義了2種接插件:Mini A插頭和插座、Mini AB插座。Mini AB插座正是為 OTG DRD的特點精心設(shè)計的。Mini A插座是設(shè)計在主機上的,用于連接外設(shè)的Mini A插頭;同理,Mini B插座設(shè)計在外設(shè)上,用于連接主機的Mini B插頭。因此,不同的插座類型,區(qū)分了不同的USB 設(shè)備。當OTG DRD需要進行設(shè)備角色變換時,就需要相應的改變插座的類型。所以,OTG DRD 上應該同時具有2種插座。Mini AB正是巧妙地應用機械原理,一個插座可以連接Mini A和Mini B插頭,而系統(tǒng)又可以通過ID信號線來識別是Mini A還是Mini B插頭。同時,為了方便用戶識別,對接插件的封裝顏色進行了不同的定義:Mini A插頭和插座采用白色(White),Mini B插頭和插座采用黑色(Black),Mini AB插座采用灰色(Gray)。
1.2 OTG的電氣層協(xié)議
USB OTG通過五角接口和五線電纜傳輸數(shù)據(jù)。除了傳統(tǒng)的四個針腳外,第五個針腳為“ID”腳,ID腳決定了初始化的主從角色:在Mini-A插頭中,ID短路接地,所連設(shè)備被初始化為主;在Mini-B插頭中,ID懸空,所連設(shè)備被初始化為從。在軟件控制下,主從角色也可以利用主設(shè)備轉(zhuǎn)換協(xié)議(HNP)進行互換。圖1為USB OTG 主從角色的設(shè)定。
圖1 USB OTG 主從角色的設(shè)定
主設(shè)備可提供低功率輸出,最小為8mA的電流到USB電纜,當不傳輸時可關(guān)掉VBUS。在VBUS關(guān)閉時,如從屬設(shè)備需要使用總線,則可請求主設(shè)備開啟VBUS,為VBUS重新供電。低功耗可支持USB設(shè)備在電池供電的情況下正常工作,延長電池壽命,節(jié)省能源。
1.3 OTG的軟件結(jié)構(gòu)
OTG的軟件結(jié)構(gòu)包括3部分:OTG系統(tǒng)硬件驅(qū)動,包括會話請求協(xié)議(SRP)
和主機交流協(xié)議(HNP);OTG系統(tǒng)外設(shè)軟件,實現(xiàn)標準的USB類,來實現(xiàn)特定的USB外設(shè)功能;OTG系統(tǒng)主機軟件,包括主機驅(qū)動程序、操作系統(tǒng)支持軟件以及支持外設(shè)的類庫。
1.3.1 OTG硬件驅(qū)動
●會話請求協(xié)議SRP
會話請求協(xié)議(Session Request Protocol,簡寫為 SRP)用于B設(shè)備向A設(shè)備請求建立會話和使用總線。
OTG規(guī)范對USB協(xié)議最大的擴展就是讓雙重角色的USB外設(shè)具有有限的主控設(shè)備能力,能夠提供動態(tài)的能源管理以及自動轉(zhuǎn)換主控設(shè)備或者外圍設(shè)備功能,這是通過SRP和HNP實現(xiàn)的。
在一個標準的USB系統(tǒng)中,主控設(shè)備在設(shè)備連接的整個過程中無論總線是否空閑,始終向USB總線提供標準的5V/100mA能量,這樣的要求對于能源有限的便攜式設(shè)備比如手機來說就很苛刻。為了能夠節(jié)省能源,USB2.0為OTG主控設(shè)備(A設(shè)備)提供了一種方法以便在USB總線上沒有數(shù)據(jù)傳輸時暫時關(guān)掉VBUS以節(jié)省能量,并且A設(shè)備能在外圍設(shè)備(B設(shè)備)發(fā)出請求后重新提供VBUS并重新啟動一個新的數(shù)據(jù)傳輸任務(wù)。
作為USB外設(shè)的B設(shè)備可以在前一個任務(wù)完成2ms之后的任何時刻啟動SRP。B設(shè)備這樣做可以提供“資料線暫停(data-line pulsing)”和“VBUS暫停(VBUSpulsing)”。A設(shè)備一直在總線上檢測“數(shù)據(jù)線暫停”和“VBUS暫停”,并在它認為適當?shù)臅r候通過啟動VBUS來開始下一個任務(wù)。這個任務(wù)一直進行到A設(shè)備認為在總線上沒有傳輸?shù)男枰臅r候,這時A設(shè)備就結(jié)束了這個任務(wù)。
● 主機交流協(xié)議HNP
主機交流協(xié)議(Host Negotiation Protocol,簡寫為HNP)用于初始B設(shè)備與初始A設(shè)備之間切換主機角色。
當一個雙重身份的設(shè)備與一個Mini-A插件連接時,這個設(shè)備缺省作為主控設(shè)備使用;當它與一個Mini-B插件連接時,這個設(shè)備缺省作為外圍設(shè)備使用。但如果需要轉(zhuǎn)換該設(shè)備的身份是,并不需要用戶進行任何操作,一個作為缺省從端作用的雙重身份的設(shè)備可以通過HNP協(xié)議來改變身份。
一次完整的HNP流程是這樣的:B設(shè)備希望控制總線,成為主機;在A設(shè)備發(fā)送了SET_FEATURE命令后,B設(shè)備就可以來請求控制總線;A設(shè)備掛起總線,通知B設(shè)備可以控制總線;B設(shè)備發(fā)送信號,斷開與A設(shè)備的連接;A設(shè)備啟動D+信號在線的上拉電阻,將D+置高;這樣,A設(shè)備就開始作為外設(shè),放棄了總線的控制權(quán),B設(shè)備成為了主機;在B設(shè)備完成了對總線的控制,就需要上拉其上的D+電阻,放棄總線控制權(quán)。當然,這一系列的HNP活動,不僅僅是通過信號在線的電平變化來實現(xiàn)的。電平變化只是一種標志,真正內(nèi)部對總線的控制權(quán)的變化,則要通過軟件來實現(xiàn)。
1.3.2 OTG系統(tǒng)外設(shè)軟件
考慮到USB協(xié)議的復雜性,用戶在進行USB主機系統(tǒng)軟件設(shè)計時,可先側(cè)重實現(xiàn)一部分功能,以后再逐步實施和完善。這里側(cè)重Mass Storage 類協(xié)議軟件。
● Mass Storage 類協(xié)議
Mass Storage 類(也就是大容量類)主要用于為軟盤接口、ATA接口、IDE硬盤接口及Flash內(nèi)存等設(shè)備建立的USB接口,類代碼(bInterfaceClass字段的值)為0x08。這一類的特點是數(shù)據(jù)交換量大,有可能直接涉及