USB OTG既可以做主設(shè)備,也可以做從設(shè)備
USB OTG
想了解USB OTG的工作原理,需要知道三個(gè)協(xié)議:
ADP:Attach Detection Protocol
HNP:Host Negotiation Protocol
SRP:Session Request Protocol
2.1 ADP
USB主從設(shè)備或USB OTG設(shè)備,如何知道USB總線(xiàn)上有沒(méi)有掛接其它USB設(shè)備呢?USB設(shè)備會(huì)周期性地檢測(cè)USB端口的電容值,如果USB端口電容值變化足夠大,大到可以確定有新的USB設(shè)備接入了,那么USB A型設(shè)備會(huì)為USB總線(xiàn)提供電源,并檢測(cè)設(shè)備連接;而USB B型設(shè)備則發(fā)起一個(gè)會(huì)話(huà)請(qǐng)求(SRP),并等待A型設(shè)備的響應(yīng)。
2.2 HNP
2.2.1 主從設(shè)備是如何確定的?
USB OTG既可以做主設(shè)備,也可以做從設(shè)備。在系統(tǒng)運(yùn)行過(guò)程中,OTG設(shè)備的角色(主設(shè)備or從設(shè)備)可以轉(zhuǎn)換,但是,在系統(tǒng)剛啟動(dòng)時(shí),OTG設(shè)備的角色是確定的。如何確定的呢?下面來(lái)解決這個(gè)問(wèn)題
上圖是幾種典型的USB接口,其中Mini-A型、Mini-B型、Micro-AB型和Micro-B型口都有五個(gè)管腳,管腳順序是
1:Vbus
2:D-
3:D+
4:ID
5:GND
若是ID管腳接地,則該設(shè)備為A設(shè)備;若ID管腳懸空,則該設(shè)備是B設(shè)備,其中A設(shè)備是initial host,B設(shè)備是initial peripheral。即系統(tǒng)剛啟動(dòng)時(shí),A設(shè)備是主設(shè)備,B設(shè)備是從設(shè)備。如下圖所示,左邊的設(shè)備是B設(shè)備,右邊的USB設(shè)備是A設(shè)備。
值得注意的是,在系統(tǒng)運(yùn)行的過(guò)程中,USB設(shè)備的主從角色可能會(huì)變化,但是A設(shè)備/B設(shè)備的名稱(chēng)不會(huì)變化。也就是說(shuō),在系統(tǒng)運(yùn)行過(guò)程中,A設(shè)備有可能從主設(shè)備變成從設(shè)備,但是A設(shè)備仍然叫做A設(shè)備;B設(shè)備類(lèi)似。
另外,A設(shè)備始終是供電設(shè)備,而與A設(shè)備扮演的角色無(wú)關(guān)。即使A設(shè)備變成了從設(shè)備,仍然由A設(shè)備供電。
2.2.2 為什么需要更換主從設(shè)備的角色呢?
上圖為一個(gè)需要互換角色的例子。左邊是一臺(tái)PDA,PDA里有打印機(jī)驅(qū)動(dòng),但由于它是B設(shè)備,因此初始角色是從設(shè)備。很顯然,在打印服務(wù)的過(guò)程中,有必要互換PDA和打印機(jī)的角色。
我們?cè)陂_(kāi)發(fā)i.MX233開(kāi)發(fā)板的過(guò)程中,ID管腳沒(méi)有引出來(lái),因此,默認(rèn)i.MX233是從設(shè)備。可是USB攝像頭也是從設(shè)備,這樣i.MX233沒(méi)有辦法轉(zhuǎn)換成主設(shè)備,從而i.MX233無(wú)法使用USB Camera。
2.3 SRP
正如剛剛提到的那樣,A設(shè)備一直供電,即使A設(shè)備通過(guò)HNP協(xié)議由主設(shè)備變成從設(shè)備了,也一直由A設(shè)備供電。然而,在嵌入式系統(tǒng)里,尤其是只有電池供電的系統(tǒng)里,功耗是一個(gè)很重要的性能指標(biāo)。A設(shè)備可以通過(guò)停止供電終止會(huì)話(huà),進(jìn)而降低功耗。這樣就產(chǎn)生了一個(gè)問(wèn)題,如果B設(shè)備要求開(kāi)啟一個(gè)會(huì)話(huà),該怎么辦?
SRP可以解決這個(gè)問(wèn)題。根據(jù)SRP,B設(shè)備可以請(qǐng)求A設(shè)備打開(kāi)電源,開(kāi)始一個(gè)會(huì)話(huà)(session)。
如上圖所示,B設(shè)備中的SRP PULSE會(huì)先給D+引腳一個(gè)脈沖,之后再給VBUS一個(gè)脈沖,這樣可以喚醒A設(shè)備。相應(yīng)的,右邊的A設(shè)備檢測(cè)到D+或VBUS上的信號(hào),則開(kāi)啟VBUS并啟動(dòng)會(huì)話(huà)。
評(píng)論