USB OTG原理+ ID 检测原理
生活随笔
收集整理的這篇文章主要介紹了
USB OTG原理+ ID 检测原理
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
OTG 檢測(cè)的原理是:
USB OTG標(biāo)準(zhǔn)在完全兼容USB2.0標(biāo)準(zhǔn)的基礎(chǔ)上,增添了電源管理(節(jié)省功耗)功能,它允許設(shè)備既可作為主機(jī),也可作為外設(shè)操作(兩用OTG)。USB OTG技術(shù)可實(shí)現(xiàn)沒(méi)有主機(jī)時(shí)設(shè)備與設(shè)備之間的數(shù)據(jù)傳輸。例如:數(shù)碼相機(jī)可以直接與打印機(jī)連接并打印照片,手機(jī)與手機(jī)之間可以直接傳送數(shù)據(jù)等,從而拓展了USB技術(shù)的應(yīng)用范圍。在OTG中,初始主機(jī)設(shè)備稱(chēng)為A設(shè)備,外設(shè)稱(chēng)為B設(shè)備。也就是說(shuō),手機(jī)既可以做外設(shè),又可以做主機(jī)來(lái)傳送數(shù)據(jù),可用電纜的連接方式來(lái)決定初始角色(由ID線(xiàn)的狀態(tài)來(lái)決定)。 USB OTG接口中有5條線(xiàn):? ? 2條用來(lái)傳送數(shù)據(jù)(D+ 、D-);? ??? 1條是電源線(xiàn)(VBUS);? ?? ? 1條則是接地線(xiàn)(GND)、 1條是ID線(xiàn)。ID線(xiàn)---以用于識(shí)別不同的電纜端點(diǎn),mini-A插頭(即A外設(shè))中的ID引腳接地,mini-B插頭(即B外設(shè))中的ID引腳浮空。當(dāng)OTG設(shè)備檢測(cè)到接地的ID引腳時(shí),表示默認(rèn)的是A設(shè)備(主機(jī)),而檢測(cè)到ID引腳浮空的設(shè)備則認(rèn)為是B設(shè)備(外設(shè))。 只有而言支持USB OTG的設(shè)備(即可以做USB Host有可以做Slave的設(shè)備),USB_ID信號(hào)才有意義。?
當(dāng)設(shè)備檢測(cè)到USB_ID信號(hào)為低時(shí),表該設(shè)備應(yīng)作為Host(主機(jī),也稱(chēng)A設(shè)備)用。
當(dāng)設(shè)備檢測(cè)到USB_ID信號(hào)為高時(shí),表示該設(shè)備作為Slave(外設(shè),也稱(chēng)B設(shè)備)用。 實(shí)際的USB連接線(xiàn)中,是沒(méi)有USB_ID這根線(xiàn)的。 都是在接口部分直接拉死的的。
對(duì)于Host端,只需將連接線(xiàn)的USB_ID pin和地短接即可,
對(duì)于Slave端,USB連接線(xiàn)的USB_ID pin是懸空的。(設(shè)備內(nèi)部上拉)。
USB OTG的工作原理
OTG補(bǔ)充規(guī)范對(duì)USB 2.0的最重要的擴(kuò)展是,其更具節(jié)能性的電源管理和允許設(shè)備以主機(jī)和外設(shè)兩種形式工作。OTG有兩種設(shè)備類(lèi)型:兩用OTG設(shè)備(Dualrole device)和外設(shè)式OTG設(shè)備(Peripheralonly OTG device) 。兩用OTG設(shè)備完全符合USB 2.0規(guī)范,同時(shí),他還要提供有限的主機(jī)能力和一個(gè) MiniAB插座、支持主機(jī)流通協(xié)議(Host Negotiatio n Protocol,HNP),并和外設(shè)式OTG設(shè)備一樣支持事務(wù)請(qǐng)求協(xié)議 (Session Request Protocol, SRP)。當(dāng)作為主機(jī)工作時(shí),兩用OTG設(shè)備可在總線(xiàn)上提供8 mA的電流,而以往標(biāo)準(zhǔn)主機(jī)則需要提供100~500 mA的電流。
2個(gè)兩用OTG設(shè)備連接在一起時(shí)可交替以主機(jī)和從機(jī)的方式工作,這個(gè)特點(diǎn)兼容了現(xiàn)有USB 規(guī)范主機(jī)/外設(shè)的結(jié)構(gòu)模型。OTG主機(jī)負(fù)責(zé)初始化數(shù)據(jù)通信的任務(wù),比如:總線(xiàn)復(fù)位、獲取USB 各種描述符和配置設(shè)備。這些配置完成后,2個(gè)OTG設(shè)備便可以分別以主機(jī)和從機(jī)方式傳輸信息,2個(gè)設(shè)備主從角色交換的過(guò)程由主機(jī)傳輸協(xié)議(HNP)定義。
下面從5個(gè)方面說(shuō)明OTG的工作原理。
1.1主機(jī)(Adevice)和從機(jī)(Bdevice)的初始功能
設(shè)備的初始功能是通過(guò)定義連接器來(lái)實(shí)現(xiàn)的。OTG定義了一個(gè) 叫做MiniAB的袖珍插孔,他能直接接入MiniA或者M(jìn)iniB插口,MiniAB有一個(gè)ID引腳上拉至電源端,MiniA插頭有一個(gè)與地連接好的 ID(R<10 Ω),Mini B插頭有一個(gè)與地連接的開(kāi)路ID引腳(R>100 kΩ)。當(dāng)2個(gè)OTG設(shè)備連接到一起的時(shí) 候 ,MiniA插頭邊的ID引腳會(huì)注入一個(gè)"0"狀態(tài),MiniB插頭邊的ID引腳為 "1",ID為0的OTG設(shè)備默認(rèn)為主機(jī) (Adevice),ID為1的OTG設(shè)備默認(rèn)為從機(jī)(B device)。
1.2 對(duì)話(huà)請(qǐng)求協(xié)議SRP(Session Request Protocol)
這個(gè)協(xié)議允許Adevice(可以是電池供電)在總線(xiàn)未使用 時(shí)通過(guò)切斷Vbus來(lái)節(jié)省電源消耗,也為Bdevice啟動(dòng)總線(xiàn)活動(dòng)提供了一種方法。任何一個(gè)Adevice, 包括PC或便攜式電腦,都可以響應(yīng) SRP;任何一個(gè)Bdevice,包括一個(gè)標(biāo)準(zhǔn)USB外設(shè), 都可以啟動(dòng)SRP;要求一個(gè)雙重功能設(shè)備既能啟動(dòng)SRP,又能響應(yīng)SRP。
在以往的USB系統(tǒng)運(yùn)行過(guò)程中,主機(jī)提供5V的電源和不低于100mA的總線(xiàn)電流。當(dāng)OTG 主機(jī)(指以主機(jī)方式工作的兩用OTG設(shè)備,又稱(chēng)A-device)連接到有線(xiàn)電源時(shí)這種方法是適用的,但像手機(jī)這樣的自供電移動(dòng)設(shè)備則不能承受如此大的電 能浪費(fèi)。為了節(jié)約電源延長(zhǎng)電池的使用壽命,當(dāng)總線(xiàn)上沒(méi)有活動(dòng)時(shí),OTG主機(jī)將掛起總線(xiàn)電源VBUS。SRP協(xié)議可使OTG從機(jī)(指外設(shè)式設(shè)備或者以外設(shè)方 式工作的兩用設(shè)備,又稱(chēng)Bdevice,此處指后者)請(qǐng)求A-device重新使能VBUS,而后A-device使用HNP協(xié)議交換兩個(gè)設(shè)備的工作方式,這兩步完成后由新的OTG主機(jī)開(kāi)始事務(wù)傳輸。B-device可在前一事務(wù)結(jié)束2ms后的任意時(shí)間開(kāi)始SRP,SRP的時(shí)序波形見(jiàn)圖形1。
B-device將先后執(zhí)行數(shù)據(jù)線(xiàn)脈沖調(diào)制(data-line pul-sing)和VBUS脈沖調(diào)制(VBUS pulsing) 。它通過(guò)使能數(shù)據(jù)線(xiàn)上拉電阻(全速和高速設(shè)備為D+,低速設(shè)備為D-)5~10ms實(shí)現(xiàn)前者,后者通過(guò)驅(qū)動(dòng)VBUS實(shí)現(xiàn)。
VBUS必須要有足夠長(zhǎng)的時(shí)間對(duì) 其電容充電,這個(gè)時(shí)間應(yīng)能保證不大于13μF的電容充電至2.1V(OTG設(shè)備的電容是6.5μF或更小),從而不會(huì)對(duì)標(biāo)準(zhǔn)主機(jī)的96μF或更高的電容充 電至2.0V。該限制保證了從Bdevice引來(lái)的VBUS電流不會(huì)破壞標(biāo)準(zhǔn)主機(jī)的端口。
A-device檢測(cè)到數(shù)據(jù)線(xiàn)脈沖調(diào)制或者VBUS脈沖調(diào)制后,首先復(fù)位總線(xiàn),然后發(fā)送 Set_feature命令而先不進(jìn)行設(shè)備的枚舉,此時(shí)B-device尚處在默認(rèn)的從機(jī)狀態(tài)。如果Set_feature命令成功執(zhí)行,說(shuō)明B- device為兩用OTG設(shè)備,A-device(使用HNP協(xié)議)掛起VBUS準(zhǔn)備讓B-device交換為主機(jī)方式接管總線(xiàn)。如果 Set_feature命令執(zhí)行失敗,說(shuō)明B-device為外設(shè)式OTG設(shè)備,于是A-device使能VBUS準(zhǔn)備開(kāi)始一個(gè)傳輸事務(wù)(此時(shí),A- device只是被喚醒,并未改變工作方式)。當(dāng)Adevice認(rèn)為總線(xiàn)上沒(méi)有傳輸需要時(shí),掛起VBUS以結(jié)束該事務(wù)。這種A-device自動(dòng)檢測(cè) B-device是否支持HNP協(xié)議的特征稱(chēng)為"No Silent Failure"。
1.3 主機(jī)流通協(xié)議HNP(Host Negotiation Protocol)
當(dāng)兩用設(shè)備連接了一個(gè)Mini-A插頭或者M(jìn)ini-B插頭時(shí),它相應(yīng)的便以O(shè)TG主機(jī)或者OTG外設(shè)的默認(rèn)方式工作。A-device為默認(rèn)主機(jī),所以由它提供VBUS電源,且在檢測(cè)到有設(shè)備接入時(shí)復(fù)位總線(xiàn)、枚舉并配置B-device。
A-device在完成對(duì)B-device的使用后,可以通過(guò)查詢(xún)B-device的 OTG性能描述符來(lái)判斷是否支持HNP協(xié)議(即是否為兩用OTG設(shè)備)。如支持HNP,B-device將返回有效的OTG性能描述符,Adevice則產(chǎn)生一個(gè)Set_feature命令(即HNP_Enable)來(lái)通知B-device可以在總線(xiàn)掛起的時(shí)候以主機(jī)方式工作,隨后A-device掛起總線(xiàn)。
B-device通過(guò)上拉電阻(全速時(shí))或者下拉電阻(高速時(shí))拉低D+以示連接斷開(kāi)。隨 后,作為對(duì)Bdevice斷開(kāi)的響應(yīng),A-device使能它的數(shù)據(jù)線(xiàn)并開(kāi)始以從機(jī)方式工作。完成這些轉(zhuǎn)換后,B-device和Adevice便各自以主機(jī)角色和外設(shè)角色使用總線(xiàn)。如果該B-device屬于兩用OTG設(shè)備且A-device不再使用它了,A-device便重發(fā) Set_feature命令并掛起總線(xiàn)。若B-device申請(qǐng)角色轉(zhuǎn)換時(shí)出錯(cuò),A-device則拉低VBUS以結(jié)束該事務(wù)。當(dāng)B-device正常結(jié) 束傳輸事務(wù)時(shí)便掛起VBUS使能其上拉電阻,重新以從機(jī)方式運(yùn)行。A-device檢測(cè)到總線(xiàn)掛起后,發(fā)出一個(gè)連接斷開(kāi)信號(hào)并重新以主機(jī)方式工作。
當(dāng)兩用設(shè)備連接了一個(gè)Mini-A插頭或者M(jìn)ini-B插頭時(shí),它相應(yīng)的便以O(shè)TG主機(jī)或者OTG外設(shè)的默認(rèn)方式工作。A-device為默認(rèn)主機(jī),所以由它提供VBUS電源,且在檢測(cè)到有設(shè)備接入時(shí)復(fù)位總線(xiàn)、八舉并配置B-device。
A-device在完成對(duì)B-device的使用后,可以通過(guò)查詢(xún)B-device的OTG 性能描述符來(lái)判斷是否支持HNP協(xié)議(即是否為兩用OTG設(shè)備)。如支持HNP,B-device將返回有效的OTG性能描述符,A-device則產(chǎn)生一個(gè)Set_feature命令(即HNP_Enable)來(lái)通知B-device可以在總線(xiàn)掛起的時(shí)候以主機(jī)方式工作,隨后Adevice掛起總線(xiàn)。 HNP的時(shí)序波形見(jiàn)圖2。
B-device通過(guò)上拉電阻(全速時(shí))或者下拉電阻(高速時(shí))拉低D+以示連接斷開(kāi)。隨 后,作為對(duì)B-device斷開(kāi)的響應(yīng),A-device使能它的數(shù)據(jù)線(xiàn)并開(kāi)始以從機(jī)方式工作。完成這些轉(zhuǎn)換后,B-device和A-device便各自以主機(jī)角色和外設(shè)角色使用總線(xiàn)。如果該B-device屬于兩用OTG設(shè)備且A-device不再使用它了,Adevice便重發(fā) Set_feature命令并掛起總線(xiàn)。若B-device申請(qǐng)角色轉(zhuǎn)換時(shí)出錯(cuò),A-device則拉低VBUS以結(jié)束該事務(wù)。當(dāng)B-device正常結(jié) 束傳輸事務(wù)時(shí)便掛起VBUS使能其上拉電阻,重新以從機(jī)方式運(yùn)行。Adevice檢測(cè)到總線(xiàn)掛起后,發(fā)出一個(gè)連接斷開(kāi)信號(hào)并重新以主機(jī)方式工作。
HNP是一種用來(lái)實(shí)現(xiàn)Adevice和Bdevice主機(jī)/從機(jī)轉(zhuǎn)換的協(xié)議(實(shí)際上是電纜的反轉(zhuǎn))。
主/從機(jī)功能交換的結(jié)果表現(xiàn)在下列過(guò)程中:
(1)利用上拉電阻來(lái)發(fā)送信號(hào)給從機(jī)。
(2)Adevice可在Bdevice上設(shè)置"HNP Enable"特性。
(3)Bdevice斷開(kāi)上拉。
(4)ADevice與上拉電阻相連,表明Adevice從屬于從機(jī)。
(5)Adevice給Vbus供電。
(6)Bdevice檢測(cè)Adevice的上拉。
(7)復(fù)位/列舉/使用Adevice。
OTG描述符
在枚舉階段,OTG A-device將會(huì)從B-device請(qǐng)求OTG配置描述符。此三字節(jié)描述符由三部分組成:bLength, bDescriptorType, 和bmAttributes,位定義如下圖所示。
srp_support
如果設(shè)備支持SRP,則這一位設(shè)置為T(mén)RUE。
hnp_support
如果設(shè)備支持HNP,則這位設(shè)置為T(mén)RUE。
Set Feature Commands
A-device會(huì)使用SetFeature 命令使能B-device的特點(diǎn)行為,或表明A-device到B-device的特定能力。
b_hnp_enable
設(shè)置此特性表明B-device已經(jīng)能夠執(zhí)行HNP。
此特性?xún)H在總線(xiàn)復(fù)位或會(huì)話(huà)結(jié)束時(shí)清除,不能通過(guò)ClearFeature(b_hnp_enable) 命令清除。
a_hnp_support
設(shè)置此特性表明B-device連接的A-device端口支持HNP。A-device會(huì)在會(huì)話(huà)開(kāi)始,任意B-device配置被選擇之前設(shè)置此特性。
a_alt_hnp_support
設(shè)置此特性表明B-device連接的A-device端口沒(méi)有HNP功能,但是此A-device 有備用的端口具備HNP功能。此特性?xún)H在總線(xiàn)復(fù)位或會(huì)話(huà)結(jié)束時(shí)清除,不能通過(guò)ClearFeature(b_hnp_enable) 命令清除。
2 連接器和電纜
2.1 連接器
USB IF在OTG中定義了更小的連接器,可以同時(shí)用于主機(jī)式和外設(shè)式的設(shè)備、具有更低的電源需求、擴(kuò)展的電源保護(hù)模式和利于上層軟件開(kāi)發(fā)的簡(jiǎn)潔設(shè)計(jì)。
OTG和現(xiàn)有的USB2.0規(guī)范完全兼容,一個(gè)主要的機(jī)械上改進(jìn)是它的新式連接器。USB 2.0定義了三種連接器對(duì)(插頭和插座):Standard-A、Standard-B和Mini-B。Mini-B連接器是專(zhuān)為較小的外設(shè)(如移動(dòng)電話(huà) 等)開(kāi)發(fā)的。OTG規(guī)范增加了第四種插頭:Mini-A,兩種插座:Mini-A和Mini-AB。這些連接器比最初的USB連接器要小許多 (如:Mini-A插頭截面積只有Standard-A插頭的38%),更適合于便攜式設(shè)備。
Mini-AB插座用于兩用設(shè)備。Mini-A新增的ID腳(以前的USB插頭不含此腳)在連接Mini-AB時(shí)接地短路,而Mini-B則使該腳斷開(kāi),這樣兩用設(shè)備便可識(shí)別連接設(shè)備的類(lèi)型以決定設(shè)備的默認(rèn)角色。
Mini-A和Mini-B插頭是嚴(yán)格配對(duì)適用的,如:不能將Mini-A插頭和Mini- B插座配合使用。但是,Mini-AB插座適合于以上兩種插頭。在外形上,Mini-A更新近于橢圓形,而Mini-B更接近于正方形。另外,他們的插頭 和插座內(nèi)部的塑料都有顏色:Mini-A為白色,Mini-B為黑色,Mini-AB為灰色。
2.2 電纜
USB 2.0規(guī)范定義了兩種電纜:Standard-A至Standard-B和Standard-A至Mini-B。OTG新增了兩種電纜:Mini-A至 Standard-B和Mini-A至Mini-B。Mini-A-to-Mini-B電纜的延遲被減少到可以在“A端”使用適配器,如:用 Standard-A插頭連接OTG兩用設(shè)備需要一個(gè)Standard-A插座至Mini-A插頭的適配器,而且Mini-A插頭連接Standard- A插座時(shí)需要一個(gè)Mini-A插座至Standard-A插頭的適配器。
3 USB On-The-Go設(shè)備類(lèi)型
OTG有兩種設(shè)備:兩用OTG設(shè)備和外設(shè)式OTG設(shè)備。兩用OTG設(shè)備可以作為USB外設(shè)或 者USBOTG主機(jī),并且可為總線(xiàn)提供8mA電流。而外設(shè)式OTG設(shè)備不具備主機(jī)性能,它必須在向兩用設(shè)備(主機(jī))的請(qǐng)求獲準(zhǔn)后才能通信。兩用OTG設(shè)備必須能以 全速方式運(yùn)行,而高速運(yùn)行的方式是可選的。外設(shè)型OTG設(shè)備可以設(shè)計(jì)在高速、全速和低速中的任意一種方式下工作。
3.1 兩用OTG設(shè)備(dual-role device)
兩用OTG設(shè)備都有一個(gè)Mini-AB插槽,所以一個(gè)Mini-A至Mini-B電纜可以直接將兩個(gè)兩用OTG設(shè)備連接在一起,而此時(shí)用戶(hù)不會(huì)覺(jué)察到兩個(gè)設(shè)備的不同,也不知道它們的默認(rèn)主從配置。
A-device(主機(jī))必須在事務(wù)傳輸過(guò)程中提供總線(xiàn)電源,這是A-device和B- device的主要不同,同時(shí)也說(shuō)明了兩個(gè)設(shè)備的連接的非對(duì)等關(guān)系。A-device負(fù)責(zé)為總線(xiàn)供電因此它控制通信發(fā)生的時(shí)機(jī),B-device只有通過(guò)SRP協(xié)議向“主機(jī)”請(qǐng)求傳輸。
設(shè)計(jì)一個(gè)兩用設(shè)備是比較困難的,因?yàn)樗邆?#xff1a;有限的主機(jī)能力、可作為一個(gè)全速的外設(shè)(可選的高速方式)、OTG目標(biāo)設(shè)備的列表、目標(biāo)設(shè)備的驅(qū)動(dòng)程序、支持SRP、支持HNP、一個(gè)Mini-AB插座、VBUS上不小于8mA的電流輸出、與用戶(hù)通信的方式。
3.2 外設(shè)式OTG設(shè)備(Peripheral-only OTG device)
外設(shè)式OTG設(shè)備是普通的USB外設(shè)。它有一個(gè)OTG功能描述符說(shuō)明其支持事務(wù)請(qǐng)求協(xié)議SRP而且它不是兩用OTG設(shè)備。此外,外設(shè)式OTG設(shè)備只能配置Mini-B型插座或者必須有一個(gè)帶Mini-A插頭的附屬電纜,而不能使用Mini-AB型插座。
SRP是B-device(此處指外設(shè)式設(shè)備)向A-device請(qǐng)求傳輸事務(wù)時(shí)必須使用的 協(xié)議。它由前面提到的數(shù)據(jù)線(xiàn)脈沖調(diào)制和VBUS脈沖調(diào)制(B-device產(chǎn)生)兩種方法構(gòu)成。A-device必須能檢測(cè)這兩種方法之一的信號(hào),并開(kāi)始 一個(gè)相應(yīng)的傳輸事務(wù)。除了固件(firmware)略有增加外,B-device同時(shí)可產(chǎn)生兩種信號(hào)的成本并沒(méi)有增加成本,而且還使實(shí)現(xiàn)A-device 更加簡(jiǎn)單(只需根據(jù)實(shí)際情況提供其中一種方式的檢測(cè))。
一個(gè)OTG設(shè)備不必實(shí)現(xiàn)OTG的所有性能。例如,一個(gè)外設(shè)式OTG設(shè)備可能只需支持SRP和一個(gè)小于等于8mA的默認(rèn)電流消耗配置。其實(shí),添加對(duì)SRP支持也較簡(jiǎn)單:在VBUS上接一個(gè)驅(qū)動(dòng)電阻并增加一些簡(jiǎn)單的邏輯,從而產(chǎn)生VBUS脈沖調(diào)制信號(hào)。
另外,無(wú)論是兩用OTG設(shè)備還是外設(shè)式OTG設(shè)備,都可以和通用的許機(jī)相連,只不過(guò)兩用OTG設(shè)備具有一定的主機(jī)能力(可以驅(qū)動(dòng)特定的一組OTG設(shè)備工作)。
1.4 驅(qū)動(dòng)程序
與PC主機(jī)不同,便攜式設(shè)備沒(méi)有便捷的方式和足夠的空間裝載新的驅(qū)動(dòng)程序。因此,OTG 規(guī)范要求每個(gè)兩用OTG設(shè)備有一個(gè)支持的外設(shè)式OTG目標(biāo)設(shè)備的列表,列表中包括設(shè)備的類(lèi)型和制造商等信息。
與PC機(jī)不同,OTG兩用設(shè)備的驅(qū)動(dòng)程序棧由USB主機(jī)棧和USB設(shè)備棧構(gòu)成以滿(mǎn)足兩種工作方式的需要。OTG驅(qū)動(dòng)程序通過(guò)連接器的不同或者是否有NHP交換設(shè)備的工作方式來(lái)決定使用USB主機(jī)棧還是USB設(shè)備棧。
當(dāng)OTG兩用設(shè)備以主機(jī)方式工作時(shí),USB主機(jī)棧工作。其中 的主機(jī)控制器驅(qū)動(dòng)程序負(fù)責(zé)USB 主機(jī)棧與硬件端點(diǎn)的數(shù)據(jù)交換,USB驅(qū)動(dòng)程序枚舉并保存設(shè)備的信息,目標(biāo)外設(shè)主機(jī)類(lèi)驅(qū)動(dòng)程序支持目標(biāo)設(shè)備列表里的設(shè)備。 主機(jī)類(lèi)驅(qū)動(dòng)程序由芯片制造商提供,同時(shí),OTG提供通用的主機(jī)類(lèi)驅(qū)動(dòng)程序(可以修改以用于非通用設(shè)備)。
當(dāng)OTG兩用設(shè)備以從機(jī)方式工作時(shí),USB設(shè)備棧工作。其中的設(shè)備控制器驅(qū)動(dòng)程序負(fù)責(zé)USB設(shè)備棧與硬件端點(diǎn)的數(shù)據(jù)交換,USB協(xié)議層負(fù)責(zé)處理USB協(xié)議規(guī)范,設(shè)備類(lèi)驅(qū)動(dòng)程序的功能取決于該兩用設(shè)備的功能(如數(shù)碼照相機(jī)、存儲(chǔ)設(shè)備、打印機(jī)等)。
OTG驅(qū)動(dòng)程序負(fù)責(zé)處理兩用OTG設(shè)備的工作方式轉(zhuǎn)換,同時(shí),他還可以返回其結(jié)果(如設(shè)備是否支持HNP)并處理總線(xiàn)錯(cuò)誤。應(yīng)用層程序通過(guò)OTG驅(qū)動(dòng)程序開(kāi)始或者結(jié)束一個(gè)傳輸事務(wù), 通過(guò)USB主機(jī)棧或設(shè)備棧與硬件層交換數(shù)據(jù)。
1.5 數(shù)據(jù)流模型
OTG主機(jī)和設(shè)備被劃分為功能層、USB設(shè)備層和USB接口層3個(gè)不同層次,USB接口層為OTG主機(jī)和OTG設(shè)備提供物理連接;
USB 系統(tǒng)軟件使用主機(jī)控制器來(lái)管理主機(jī)與USB設(shè)備的數(shù)據(jù)傳輸。USB系統(tǒng)軟件相對(duì)于主機(jī)控制器而言,處理的是以客戶(hù)角度觀(guān)察的數(shù)據(jù)傳輸及客戶(hù)與設(shè)備的交互。
USB設(shè)備層為USB主機(jī)系統(tǒng)軟件提供一個(gè)可用的邏輯設(shè)備。主機(jī)通過(guò)與之功能匹配的客戶(hù)軟件實(shí)現(xiàn)其各種功能。
OTG設(shè)備與以往的USB設(shè)備一樣有兩種通道:數(shù)據(jù)流通道和消息通道。數(shù)據(jù)流通道沒(méi)有定義好的結(jié)果,而消息通道則有固定的結(jié)構(gòu)。但是,每個(gè)通道都有一定的帶寬、傳輸類(lèi)型、傳輸方向和緩沖區(qū)大小。自供電設(shè)備配置一個(gè)默認(rèn)的控制通道,由他提供該設(shè)備的配置和狀態(tài)等信息。
USB OTG規(guī)范是USB2.0規(guī)范的補(bǔ)充而不是替代品。PC主機(jī)和標(biāo)準(zhǔn)外設(shè)并沒(méi)有被取代,因?yàn)樾碌腛TG僅適用于需要具有主機(jī)功能和更小體積的便攜式設(shè)備。 OTG在這些外設(shè)間引入了點(diǎn)對(duì)點(diǎn)的(point-to-point)通信方式,這使得便攜式儀器的發(fā)展有了更加廣闊的空間。USB OTG已受到Cypress等芯片供應(yīng)商、軟件開(kāi)發(fā)商和設(shè)備制造商的廣泛支持,OTG不久將會(huì)成為新一代的“移動(dòng)計(jì)算”解決方案。
USB OTG標(biāo)準(zhǔn)在完全兼容USB2.0標(biāo)準(zhǔn)的基礎(chǔ)上,增添了電源管理(節(jié)省功耗)功能,它允許設(shè)備既可作為主機(jī),也可作為外設(shè)操作(兩用OTG)。USB OTG技術(shù)可實(shí)現(xiàn)沒(méi)有主機(jī)時(shí)設(shè)備與設(shè)備之間的數(shù)據(jù)傳輸。例如:數(shù)碼相機(jī)可以直接與打印機(jī)連接并打印照片,手機(jī)與手機(jī)之間可以直接傳送數(shù)據(jù)等,從而拓展了USB技術(shù)的應(yīng)用范圍。在OTG中,初始主機(jī)設(shè)備稱(chēng)為A設(shè)備,外設(shè)稱(chēng)為B設(shè)備。也就是說(shuō),手機(jī)既可以做外設(shè),又可以做主機(jī)來(lái)傳送數(shù)據(jù),可用電纜的連接方式來(lái)決定初始角色(由ID線(xiàn)的狀態(tài)來(lái)決定)。 USB OTG接口中有5條線(xiàn):? ? 2條用來(lái)傳送數(shù)據(jù)(D+ 、D-);? ??? 1條是電源線(xiàn)(VBUS);? ?? ? 1條則是接地線(xiàn)(GND)、 1條是ID線(xiàn)。ID線(xiàn)---以用于識(shí)別不同的電纜端點(diǎn),mini-A插頭(即A外設(shè))中的ID引腳接地,mini-B插頭(即B外設(shè))中的ID引腳浮空。當(dāng)OTG設(shè)備檢測(cè)到接地的ID引腳時(shí),表示默認(rèn)的是A設(shè)備(主機(jī)),而檢測(cè)到ID引腳浮空的設(shè)備則認(rèn)為是B設(shè)備(外設(shè))。 只有而言支持USB OTG的設(shè)備(即可以做USB Host有可以做Slave的設(shè)備),USB_ID信號(hào)才有意義。?
當(dāng)設(shè)備檢測(cè)到USB_ID信號(hào)為低時(shí),表該設(shè)備應(yīng)作為Host(主機(jī),也稱(chēng)A設(shè)備)用。
當(dāng)設(shè)備檢測(cè)到USB_ID信號(hào)為高時(shí),表示該設(shè)備作為Slave(外設(shè),也稱(chēng)B設(shè)備)用。 實(shí)際的USB連接線(xiàn)中,是沒(méi)有USB_ID這根線(xiàn)的。 都是在接口部分直接拉死的的。
對(duì)于Host端,只需將連接線(xiàn)的USB_ID pin和地短接即可,
對(duì)于Slave端,USB連接線(xiàn)的USB_ID pin是懸空的。(設(shè)備內(nèi)部上拉)。
USB OTG的工作原理
OTG補(bǔ)充規(guī)范對(duì)USB 2.0的最重要的擴(kuò)展是,其更具節(jié)能性的電源管理和允許設(shè)備以主機(jī)和外設(shè)兩種形式工作。OTG有兩種設(shè)備類(lèi)型:兩用OTG設(shè)備(Dualrole device)和外設(shè)式OTG設(shè)備(Peripheralonly OTG device) 。兩用OTG設(shè)備完全符合USB 2.0規(guī)范,同時(shí),他還要提供有限的主機(jī)能力和一個(gè) MiniAB插座、支持主機(jī)流通協(xié)議(Host Negotiatio n Protocol,HNP),并和外設(shè)式OTG設(shè)備一樣支持事務(wù)請(qǐng)求協(xié)議 (Session Request Protocol, SRP)。當(dāng)作為主機(jī)工作時(shí),兩用OTG設(shè)備可在總線(xiàn)上提供8 mA的電流,而以往標(biāo)準(zhǔn)主機(jī)則需要提供100~500 mA的電流。
2個(gè)兩用OTG設(shè)備連接在一起時(shí)可交替以主機(jī)和從機(jī)的方式工作,這個(gè)特點(diǎn)兼容了現(xiàn)有USB 規(guī)范主機(jī)/外設(shè)的結(jié)構(gòu)模型。OTG主機(jī)負(fù)責(zé)初始化數(shù)據(jù)通信的任務(wù),比如:總線(xiàn)復(fù)位、獲取USB 各種描述符和配置設(shè)備。這些配置完成后,2個(gè)OTG設(shè)備便可以分別以主機(jī)和從機(jī)方式傳輸信息,2個(gè)設(shè)備主從角色交換的過(guò)程由主機(jī)傳輸協(xié)議(HNP)定義。
下面從5個(gè)方面說(shuō)明OTG的工作原理。
1.1主機(jī)(Adevice)和從機(jī)(Bdevice)的初始功能
設(shè)備的初始功能是通過(guò)定義連接器來(lái)實(shí)現(xiàn)的。OTG定義了一個(gè) 叫做MiniAB的袖珍插孔,他能直接接入MiniA或者M(jìn)iniB插口,MiniAB有一個(gè)ID引腳上拉至電源端,MiniA插頭有一個(gè)與地連接好的 ID(R<10 Ω),Mini B插頭有一個(gè)與地連接的開(kāi)路ID引腳(R>100 kΩ)。當(dāng)2個(gè)OTG設(shè)備連接到一起的時(shí) 候 ,MiniA插頭邊的ID引腳會(huì)注入一個(gè)"0"狀態(tài),MiniB插頭邊的ID引腳為 "1",ID為0的OTG設(shè)備默認(rèn)為主機(jī) (Adevice),ID為1的OTG設(shè)備默認(rèn)為從機(jī)(B device)。
1.2 對(duì)話(huà)請(qǐng)求協(xié)議SRP(Session Request Protocol)
這個(gè)協(xié)議允許Adevice(可以是電池供電)在總線(xiàn)未使用 時(shí)通過(guò)切斷Vbus來(lái)節(jié)省電源消耗,也為Bdevice啟動(dòng)總線(xiàn)活動(dòng)提供了一種方法。任何一個(gè)Adevice, 包括PC或便攜式電腦,都可以響應(yīng) SRP;任何一個(gè)Bdevice,包括一個(gè)標(biāo)準(zhǔn)USB外設(shè), 都可以啟動(dòng)SRP;要求一個(gè)雙重功能設(shè)備既能啟動(dòng)SRP,又能響應(yīng)SRP。
在以往的USB系統(tǒng)運(yùn)行過(guò)程中,主機(jī)提供5V的電源和不低于100mA的總線(xiàn)電流。當(dāng)OTG 主機(jī)(指以主機(jī)方式工作的兩用OTG設(shè)備,又稱(chēng)A-device)連接到有線(xiàn)電源時(shí)這種方法是適用的,但像手機(jī)這樣的自供電移動(dòng)設(shè)備則不能承受如此大的電 能浪費(fèi)。為了節(jié)約電源延長(zhǎng)電池的使用壽命,當(dāng)總線(xiàn)上沒(méi)有活動(dòng)時(shí),OTG主機(jī)將掛起總線(xiàn)電源VBUS。SRP協(xié)議可使OTG從機(jī)(指外設(shè)式設(shè)備或者以外設(shè)方 式工作的兩用設(shè)備,又稱(chēng)Bdevice,此處指后者)請(qǐng)求A-device重新使能VBUS,而后A-device使用HNP協(xié)議交換兩個(gè)設(shè)備的工作方式,這兩步完成后由新的OTG主機(jī)開(kāi)始事務(wù)傳輸。B-device可在前一事務(wù)結(jié)束2ms后的任意時(shí)間開(kāi)始SRP,SRP的時(shí)序波形見(jiàn)圖形1。
B-device將先后執(zhí)行數(shù)據(jù)線(xiàn)脈沖調(diào)制(data-line pul-sing)和VBUS脈沖調(diào)制(VBUS pulsing) 。它通過(guò)使能數(shù)據(jù)線(xiàn)上拉電阻(全速和高速設(shè)備為D+,低速設(shè)備為D-)5~10ms實(shí)現(xiàn)前者,后者通過(guò)驅(qū)動(dòng)VBUS實(shí)現(xiàn)。
VBUS必須要有足夠長(zhǎng)的時(shí)間對(duì) 其電容充電,這個(gè)時(shí)間應(yīng)能保證不大于13μF的電容充電至2.1V(OTG設(shè)備的電容是6.5μF或更小),從而不會(huì)對(duì)標(biāo)準(zhǔn)主機(jī)的96μF或更高的電容充 電至2.0V。該限制保證了從Bdevice引來(lái)的VBUS電流不會(huì)破壞標(biāo)準(zhǔn)主機(jī)的端口。
A-device檢測(cè)到數(shù)據(jù)線(xiàn)脈沖調(diào)制或者VBUS脈沖調(diào)制后,首先復(fù)位總線(xiàn),然后發(fā)送 Set_feature命令而先不進(jìn)行設(shè)備的枚舉,此時(shí)B-device尚處在默認(rèn)的從機(jī)狀態(tài)。如果Set_feature命令成功執(zhí)行,說(shuō)明B- device為兩用OTG設(shè)備,A-device(使用HNP協(xié)議)掛起VBUS準(zhǔn)備讓B-device交換為主機(jī)方式接管總線(xiàn)。如果 Set_feature命令執(zhí)行失敗,說(shuō)明B-device為外設(shè)式OTG設(shè)備,于是A-device使能VBUS準(zhǔn)備開(kāi)始一個(gè)傳輸事務(wù)(此時(shí),A- device只是被喚醒,并未改變工作方式)。當(dāng)Adevice認(rèn)為總線(xiàn)上沒(méi)有傳輸需要時(shí),掛起VBUS以結(jié)束該事務(wù)。這種A-device自動(dòng)檢測(cè) B-device是否支持HNP協(xié)議的特征稱(chēng)為"No Silent Failure"。
1.3 主機(jī)流通協(xié)議HNP(Host Negotiation Protocol)
當(dāng)兩用設(shè)備連接了一個(gè)Mini-A插頭或者M(jìn)ini-B插頭時(shí),它相應(yīng)的便以O(shè)TG主機(jī)或者OTG外設(shè)的默認(rèn)方式工作。A-device為默認(rèn)主機(jī),所以由它提供VBUS電源,且在檢測(cè)到有設(shè)備接入時(shí)復(fù)位總線(xiàn)、枚舉并配置B-device。
A-device在完成對(duì)B-device的使用后,可以通過(guò)查詢(xún)B-device的 OTG性能描述符來(lái)判斷是否支持HNP協(xié)議(即是否為兩用OTG設(shè)備)。如支持HNP,B-device將返回有效的OTG性能描述符,Adevice則產(chǎn)生一個(gè)Set_feature命令(即HNP_Enable)來(lái)通知B-device可以在總線(xiàn)掛起的時(shí)候以主機(jī)方式工作,隨后A-device掛起總線(xiàn)。
B-device通過(guò)上拉電阻(全速時(shí))或者下拉電阻(高速時(shí))拉低D+以示連接斷開(kāi)。隨 后,作為對(duì)Bdevice斷開(kāi)的響應(yīng),A-device使能它的數(shù)據(jù)線(xiàn)并開(kāi)始以從機(jī)方式工作。完成這些轉(zhuǎn)換后,B-device和Adevice便各自以主機(jī)角色和外設(shè)角色使用總線(xiàn)。如果該B-device屬于兩用OTG設(shè)備且A-device不再使用它了,A-device便重發(fā) Set_feature命令并掛起總線(xiàn)。若B-device申請(qǐng)角色轉(zhuǎn)換時(shí)出錯(cuò),A-device則拉低VBUS以結(jié)束該事務(wù)。當(dāng)B-device正常結(jié) 束傳輸事務(wù)時(shí)便掛起VBUS使能其上拉電阻,重新以從機(jī)方式運(yùn)行。A-device檢測(cè)到總線(xiàn)掛起后,發(fā)出一個(gè)連接斷開(kāi)信號(hào)并重新以主機(jī)方式工作。
當(dāng)兩用設(shè)備連接了一個(gè)Mini-A插頭或者M(jìn)ini-B插頭時(shí),它相應(yīng)的便以O(shè)TG主機(jī)或者OTG外設(shè)的默認(rèn)方式工作。A-device為默認(rèn)主機(jī),所以由它提供VBUS電源,且在檢測(cè)到有設(shè)備接入時(shí)復(fù)位總線(xiàn)、八舉并配置B-device。
A-device在完成對(duì)B-device的使用后,可以通過(guò)查詢(xún)B-device的OTG 性能描述符來(lái)判斷是否支持HNP協(xié)議(即是否為兩用OTG設(shè)備)。如支持HNP,B-device將返回有效的OTG性能描述符,A-device則產(chǎn)生一個(gè)Set_feature命令(即HNP_Enable)來(lái)通知B-device可以在總線(xiàn)掛起的時(shí)候以主機(jī)方式工作,隨后Adevice掛起總線(xiàn)。 HNP的時(shí)序波形見(jiàn)圖2。
B-device通過(guò)上拉電阻(全速時(shí))或者下拉電阻(高速時(shí))拉低D+以示連接斷開(kāi)。隨 后,作為對(duì)B-device斷開(kāi)的響應(yīng),A-device使能它的數(shù)據(jù)線(xiàn)并開(kāi)始以從機(jī)方式工作。完成這些轉(zhuǎn)換后,B-device和A-device便各自以主機(jī)角色和外設(shè)角色使用總線(xiàn)。如果該B-device屬于兩用OTG設(shè)備且A-device不再使用它了,Adevice便重發(fā) Set_feature命令并掛起總線(xiàn)。若B-device申請(qǐng)角色轉(zhuǎn)換時(shí)出錯(cuò),A-device則拉低VBUS以結(jié)束該事務(wù)。當(dāng)B-device正常結(jié) 束傳輸事務(wù)時(shí)便掛起VBUS使能其上拉電阻,重新以從機(jī)方式運(yùn)行。Adevice檢測(cè)到總線(xiàn)掛起后,發(fā)出一個(gè)連接斷開(kāi)信號(hào)并重新以主機(jī)方式工作。
HNP是一種用來(lái)實(shí)現(xiàn)Adevice和Bdevice主機(jī)/從機(jī)轉(zhuǎn)換的協(xié)議(實(shí)際上是電纜的反轉(zhuǎn))。
主/從機(jī)功能交換的結(jié)果表現(xiàn)在下列過(guò)程中:
(1)利用上拉電阻來(lái)發(fā)送信號(hào)給從機(jī)。
(2)Adevice可在Bdevice上設(shè)置"HNP Enable"特性。
(3)Bdevice斷開(kāi)上拉。
(4)ADevice與上拉電阻相連,表明Adevice從屬于從機(jī)。
(5)Adevice給Vbus供電。
(6)Bdevice檢測(cè)Adevice的上拉。
(7)復(fù)位/列舉/使用Adevice。
OTG描述符
在枚舉階段,OTG A-device將會(huì)從B-device請(qǐng)求OTG配置描述符。此三字節(jié)描述符由三部分組成:bLength, bDescriptorType, 和bmAttributes,位定義如下圖所示。
srp_support
如果設(shè)備支持SRP,則這一位設(shè)置為T(mén)RUE。
hnp_support
如果設(shè)備支持HNP,則這位設(shè)置為T(mén)RUE。
Set Feature Commands
A-device會(huì)使用SetFeature 命令使能B-device的特點(diǎn)行為,或表明A-device到B-device的特定能力。
b_hnp_enable
設(shè)置此特性表明B-device已經(jīng)能夠執(zhí)行HNP。
此特性?xún)H在總線(xiàn)復(fù)位或會(huì)話(huà)結(jié)束時(shí)清除,不能通過(guò)ClearFeature(b_hnp_enable) 命令清除。
a_hnp_support
設(shè)置此特性表明B-device連接的A-device端口支持HNP。A-device會(huì)在會(huì)話(huà)開(kāi)始,任意B-device配置被選擇之前設(shè)置此特性。
a_alt_hnp_support
設(shè)置此特性表明B-device連接的A-device端口沒(méi)有HNP功能,但是此A-device 有備用的端口具備HNP功能。此特性?xún)H在總線(xiàn)復(fù)位或會(huì)話(huà)結(jié)束時(shí)清除,不能通過(guò)ClearFeature(b_hnp_enable) 命令清除。
2 連接器和電纜
2.1 連接器
USB IF在OTG中定義了更小的連接器,可以同時(shí)用于主機(jī)式和外設(shè)式的設(shè)備、具有更低的電源需求、擴(kuò)展的電源保護(hù)模式和利于上層軟件開(kāi)發(fā)的簡(jiǎn)潔設(shè)計(jì)。
OTG和現(xiàn)有的USB2.0規(guī)范完全兼容,一個(gè)主要的機(jī)械上改進(jìn)是它的新式連接器。USB 2.0定義了三種連接器對(duì)(插頭和插座):Standard-A、Standard-B和Mini-B。Mini-B連接器是專(zhuān)為較小的外設(shè)(如移動(dòng)電話(huà) 等)開(kāi)發(fā)的。OTG規(guī)范增加了第四種插頭:Mini-A,兩種插座:Mini-A和Mini-AB。這些連接器比最初的USB連接器要小許多 (如:Mini-A插頭截面積只有Standard-A插頭的38%),更適合于便攜式設(shè)備。
Mini-AB插座用于兩用設(shè)備。Mini-A新增的ID腳(以前的USB插頭不含此腳)在連接Mini-AB時(shí)接地短路,而Mini-B則使該腳斷開(kāi),這樣兩用設(shè)備便可識(shí)別連接設(shè)備的類(lèi)型以決定設(shè)備的默認(rèn)角色。
Mini-A和Mini-B插頭是嚴(yán)格配對(duì)適用的,如:不能將Mini-A插頭和Mini- B插座配合使用。但是,Mini-AB插座適合于以上兩種插頭。在外形上,Mini-A更新近于橢圓形,而Mini-B更接近于正方形。另外,他們的插頭 和插座內(nèi)部的塑料都有顏色:Mini-A為白色,Mini-B為黑色,Mini-AB為灰色。
2.2 電纜
USB 2.0規(guī)范定義了兩種電纜:Standard-A至Standard-B和Standard-A至Mini-B。OTG新增了兩種電纜:Mini-A至 Standard-B和Mini-A至Mini-B。Mini-A-to-Mini-B電纜的延遲被減少到可以在“A端”使用適配器,如:用 Standard-A插頭連接OTG兩用設(shè)備需要一個(gè)Standard-A插座至Mini-A插頭的適配器,而且Mini-A插頭連接Standard- A插座時(shí)需要一個(gè)Mini-A插座至Standard-A插頭的適配器。
3 USB On-The-Go設(shè)備類(lèi)型
OTG有兩種設(shè)備:兩用OTG設(shè)備和外設(shè)式OTG設(shè)備。兩用OTG設(shè)備可以作為USB外設(shè)或 者USBOTG主機(jī),并且可為總線(xiàn)提供8mA電流。而外設(shè)式OTG設(shè)備不具備主機(jī)性能,它必須在向兩用設(shè)備(主機(jī))的請(qǐng)求獲準(zhǔn)后才能通信。兩用OTG設(shè)備必須能以 全速方式運(yùn)行,而高速運(yùn)行的方式是可選的。外設(shè)型OTG設(shè)備可以設(shè)計(jì)在高速、全速和低速中的任意一種方式下工作。
3.1 兩用OTG設(shè)備(dual-role device)
兩用OTG設(shè)備都有一個(gè)Mini-AB插槽,所以一個(gè)Mini-A至Mini-B電纜可以直接將兩個(gè)兩用OTG設(shè)備連接在一起,而此時(shí)用戶(hù)不會(huì)覺(jué)察到兩個(gè)設(shè)備的不同,也不知道它們的默認(rèn)主從配置。
A-device(主機(jī))必須在事務(wù)傳輸過(guò)程中提供總線(xiàn)電源,這是A-device和B- device的主要不同,同時(shí)也說(shuō)明了兩個(gè)設(shè)備的連接的非對(duì)等關(guān)系。A-device負(fù)責(zé)為總線(xiàn)供電因此它控制通信發(fā)生的時(shí)機(jī),B-device只有通過(guò)SRP協(xié)議向“主機(jī)”請(qǐng)求傳輸。
設(shè)計(jì)一個(gè)兩用設(shè)備是比較困難的,因?yàn)樗邆?#xff1a;有限的主機(jī)能力、可作為一個(gè)全速的外設(shè)(可選的高速方式)、OTG目標(biāo)設(shè)備的列表、目標(biāo)設(shè)備的驅(qū)動(dòng)程序、支持SRP、支持HNP、一個(gè)Mini-AB插座、VBUS上不小于8mA的電流輸出、與用戶(hù)通信的方式。
3.2 外設(shè)式OTG設(shè)備(Peripheral-only OTG device)
外設(shè)式OTG設(shè)備是普通的USB外設(shè)。它有一個(gè)OTG功能描述符說(shuō)明其支持事務(wù)請(qǐng)求協(xié)議SRP而且它不是兩用OTG設(shè)備。此外,外設(shè)式OTG設(shè)備只能配置Mini-B型插座或者必須有一個(gè)帶Mini-A插頭的附屬電纜,而不能使用Mini-AB型插座。
SRP是B-device(此處指外設(shè)式設(shè)備)向A-device請(qǐng)求傳輸事務(wù)時(shí)必須使用的 協(xié)議。它由前面提到的數(shù)據(jù)線(xiàn)脈沖調(diào)制和VBUS脈沖調(diào)制(B-device產(chǎn)生)兩種方法構(gòu)成。A-device必須能檢測(cè)這兩種方法之一的信號(hào),并開(kāi)始 一個(gè)相應(yīng)的傳輸事務(wù)。除了固件(firmware)略有增加外,B-device同時(shí)可產(chǎn)生兩種信號(hào)的成本并沒(méi)有增加成本,而且還使實(shí)現(xiàn)A-device 更加簡(jiǎn)單(只需根據(jù)實(shí)際情況提供其中一種方式的檢測(cè))。
一個(gè)OTG設(shè)備不必實(shí)現(xiàn)OTG的所有性能。例如,一個(gè)外設(shè)式OTG設(shè)備可能只需支持SRP和一個(gè)小于等于8mA的默認(rèn)電流消耗配置。其實(shí),添加對(duì)SRP支持也較簡(jiǎn)單:在VBUS上接一個(gè)驅(qū)動(dòng)電阻并增加一些簡(jiǎn)單的邏輯,從而產(chǎn)生VBUS脈沖調(diào)制信號(hào)。
另外,無(wú)論是兩用OTG設(shè)備還是外設(shè)式OTG設(shè)備,都可以和通用的許機(jī)相連,只不過(guò)兩用OTG設(shè)備具有一定的主機(jī)能力(可以驅(qū)動(dòng)特定的一組OTG設(shè)備工作)。
1.4 驅(qū)動(dòng)程序
與PC主機(jī)不同,便攜式設(shè)備沒(méi)有便捷的方式和足夠的空間裝載新的驅(qū)動(dòng)程序。因此,OTG 規(guī)范要求每個(gè)兩用OTG設(shè)備有一個(gè)支持的外設(shè)式OTG目標(biāo)設(shè)備的列表,列表中包括設(shè)備的類(lèi)型和制造商等信息。
與PC機(jī)不同,OTG兩用設(shè)備的驅(qū)動(dòng)程序棧由USB主機(jī)棧和USB設(shè)備棧構(gòu)成以滿(mǎn)足兩種工作方式的需要。OTG驅(qū)動(dòng)程序通過(guò)連接器的不同或者是否有NHP交換設(shè)備的工作方式來(lái)決定使用USB主機(jī)棧還是USB設(shè)備棧。
當(dāng)OTG兩用設(shè)備以主機(jī)方式工作時(shí),USB主機(jī)棧工作。其中 的主機(jī)控制器驅(qū)動(dòng)程序負(fù)責(zé)USB 主機(jī)棧與硬件端點(diǎn)的數(shù)據(jù)交換,USB驅(qū)動(dòng)程序枚舉并保存設(shè)備的信息,目標(biāo)外設(shè)主機(jī)類(lèi)驅(qū)動(dòng)程序支持目標(biāo)設(shè)備列表里的設(shè)備。 主機(jī)類(lèi)驅(qū)動(dòng)程序由芯片制造商提供,同時(shí),OTG提供通用的主機(jī)類(lèi)驅(qū)動(dòng)程序(可以修改以用于非通用設(shè)備)。
當(dāng)OTG兩用設(shè)備以從機(jī)方式工作時(shí),USB設(shè)備棧工作。其中的設(shè)備控制器驅(qū)動(dòng)程序負(fù)責(zé)USB設(shè)備棧與硬件端點(diǎn)的數(shù)據(jù)交換,USB協(xié)議層負(fù)責(zé)處理USB協(xié)議規(guī)范,設(shè)備類(lèi)驅(qū)動(dòng)程序的功能取決于該兩用設(shè)備的功能(如數(shù)碼照相機(jī)、存儲(chǔ)設(shè)備、打印機(jī)等)。
OTG驅(qū)動(dòng)程序負(fù)責(zé)處理兩用OTG設(shè)備的工作方式轉(zhuǎn)換,同時(shí),他還可以返回其結(jié)果(如設(shè)備是否支持HNP)并處理總線(xiàn)錯(cuò)誤。應(yīng)用層程序通過(guò)OTG驅(qū)動(dòng)程序開(kāi)始或者結(jié)束一個(gè)傳輸事務(wù), 通過(guò)USB主機(jī)棧或設(shè)備棧與硬件層交換數(shù)據(jù)。
1.5 數(shù)據(jù)流模型
OTG主機(jī)和設(shè)備被劃分為功能層、USB設(shè)備層和USB接口層3個(gè)不同層次,USB接口層為OTG主機(jī)和OTG設(shè)備提供物理連接;
USB 系統(tǒng)軟件使用主機(jī)控制器來(lái)管理主機(jī)與USB設(shè)備的數(shù)據(jù)傳輸。USB系統(tǒng)軟件相對(duì)于主機(jī)控制器而言,處理的是以客戶(hù)角度觀(guān)察的數(shù)據(jù)傳輸及客戶(hù)與設(shè)備的交互。
USB設(shè)備層為USB主機(jī)系統(tǒng)軟件提供一個(gè)可用的邏輯設(shè)備。主機(jī)通過(guò)與之功能匹配的客戶(hù)軟件實(shí)現(xiàn)其各種功能。
OTG設(shè)備與以往的USB設(shè)備一樣有兩種通道:數(shù)據(jù)流通道和消息通道。數(shù)據(jù)流通道沒(méi)有定義好的結(jié)果,而消息通道則有固定的結(jié)構(gòu)。但是,每個(gè)通道都有一定的帶寬、傳輸類(lèi)型、傳輸方向和緩沖區(qū)大小。自供電設(shè)備配置一個(gè)默認(rèn)的控制通道,由他提供該設(shè)備的配置和狀態(tài)等信息。
USB OTG規(guī)范是USB2.0規(guī)范的補(bǔ)充而不是替代品。PC主機(jī)和標(biāo)準(zhǔn)外設(shè)并沒(méi)有被取代,因?yàn)樾碌腛TG僅適用于需要具有主機(jī)功能和更小體積的便攜式設(shè)備。 OTG在這些外設(shè)間引入了點(diǎn)對(duì)點(diǎn)的(point-to-point)通信方式,這使得便攜式儀器的發(fā)展有了更加廣闊的空間。USB OTG已受到Cypress等芯片供應(yīng)商、軟件開(kāi)發(fā)商和設(shè)備制造商的廣泛支持,OTG不久將會(huì)成為新一代的“移動(dòng)計(jì)算”解決方案。
總結(jié)
以上是生活随笔為你收集整理的USB OTG原理+ ID 检测原理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 高通QSD MSM APQ区别
- 下一篇: lk中内联调用的dsb()