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