1. 程式人生 > >USB HOST與 USB OTG的區別及工作原理

USB HOST與 USB OTG的區別及工作原理

在SmartQ 7上面,同時存在USB HOST與 USB OTG兩個介面,我想問一下,這兩個介面有什麼區別麼?我怎麼認為HOST屬於是多餘呢? 麻煩高手解答,感激不盡!!!

 

零 USB背景知識

USB是一種資料通訊方式,也是一種資料匯流排,而且是最複雜的匯流排之一。 
硬體上,它是用插頭連線。一邊是公頭(plug),一邊是母頭(receptacle)。例如,PC上的插座就是母頭,USB裝置使用公頭與PC連線。 
目前USB硬體介面分三種,普通PC上使用的叫Type;原來諾基亞功能機時代的介面為Mini USB;目前Android手機使用的Micro USB。

Host 
USB是由Host端控制整個匯流排的資料傳輸的。單個USB總線上,只能有一個Host。 
OTG 
On The Go,這是在USB2.0引入的一種mode,提出了一個新的概念叫主機協商協議(Host Negotiation Protocol),允許兩個裝置間商量誰去當Host。

預瞭解更多USB知識,請參考USB官網以及下面這篇文章: 
http://www.crifan.com/files/doc/docbook/usb_basic/release/html/usb_basic.html

 

USB HOST/DEVICE/OTG概念:

這裡寫圖片描述

OTG控制器可以做host,也能做device,控制器的角色一般由USB ID電平來決定。完整的USB2.0 OTG 控制器硬體訊號如下:

這裡寫圖片描述

USB_ID:輸入訊號,由 USB OTG 協議定義,用於識別 USB 口所接裝置的預設角色(host or device)。USB_ID 預設上拉,處於 device 狀況,如果要控制器進入 host 狀態,需外接 mini-A 口或 micro-A 口將 USB_ID 短接到地。

也可以由軟體進行強制切換,通過控制 
/sys/bus/platform/drivers/usb20_otg/force_usb_mode 
實現,可以有如下三種值:

0: 由硬體即USB ID決定 
1: 強制 host模式 
2: 強制 device模式

HOST模式和OTG模式區別

OTG和HOST的區別就是HOST支援的裝置多一點,但需要有對應的從裝置介面連線才能實現資料傳輸,而OTG傳輸方便,不需要別的機器上有從裝置的介面就能傳輸。

 

USB OTG的工作原理
  OTG補充規範對USB 2.0的最重要的擴充套件是其更具節能性的電源管理和允許裝置以主機和外設兩種形式工作。OTG有兩種裝置型別:兩用OTG裝置(Dualrole device)和外設式OTG裝置(Peripheralonly OTG device) 。兩用OTG裝置完全符合USB 2.0規範,同時,他還要提供有限的主機能力和一個MiniAB插座、支援主機流通協議(Host Negotiatio n Protocol, HNP),並和外設式OTG裝置一樣支援事務請求協議(Session Request Protocol, SRP)。當作為主機工作時,兩用OTG裝置可在總線上提供8 mA的電流,而以往標準主機則需要 提供100~500 mA的電流。

  2個兩用OTG裝置連線在一起時可交替以主機和從機的方式工作,這個特點相容了現有USB 規範主機/外設的結構模型。OTG主機負責初始化資料通訊的任務,比如:匯流排復位、獲取USB 各種描述符和配置裝置。這些配置完成後,2個OTG裝置便可以分別以主機和從機方式傳輸資訊,2個裝置主從角色交換的過程由主機傳輸協議(HNP)定義。

 

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對上述內容進行了圖解。

1.2對話請求協議SRP(Session Request Protocol)

  這個協議允許Adevice(可以是電池供電)在匯流排未使用時通過切斷Vbus來節省電源消耗,也為Bdevice啟動匯流排活動提供了一種方法。任何一個Adevice, 包括PC或行動式電腦,都可以響應SRP;任何一個Bdevice,包括一個標準USB外設, 都可以啟動SRP;要求一個雙重功能裝置既能啟動SRP,又能響應SRP。

1.3主機流通協議HNP(Host Negotiation Protocol)
  HNP是一種用來實現Adevice和Bdevice主機/從機轉換的協議(實際上是電纜的反轉)。主/從機功能交換的結果表現在下列過程中:
  (1)利用上拉電阻來發送訊號給從機。
  (2)Adevice可在Bdevice上設定“HNP Enable”特性。
  (3)Bdevice斷開上拉。
  (4)ADevice與上拉電阻相連,表明Adevice從屬於從機。
  (5)Adevice給Vbus供電。
  (6)Bdevice檢測Adevice的上拉。
  (7)復位/列舉/使用Adevice。

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個不同層次,如圖2所示。

  USB介面層為OTG主機和OTG裝置提供物理連線,USB系統軟體使用主機控制器來管理主機與 USB裝置的資料傳輸。USB系統軟體相對於主機控制器而言,處理的是以客戶角度觀察的資料傳輸及客戶與裝置的互動。USB裝置層為USB主機系統軟體提供一個可用的邏輯裝置。主機通過與之功能匹配的客戶軟體實現其各種功能。
  OTG裝置與以往的USB裝置一樣有兩種通道:資料流通道和訊息通道。資料流通道沒有定義好的結果,而訊息通道則有固定的結構。但是,每個通道都有一定的頻寬、傳輸型別、傳輸方向和緩衝區大小。自供電裝置配置一個預設的控制通道,由他提供該裝置的配置和狀態等資訊。


一問一答:

1 . 什麼是USB OTG?
     USB OTG是USB 2.0的補充規範
2.  USB OTG針對USB 2.0的最重要擴充套件是什麼?
    更具節能性的電源管理和允許裝置以主機和外設兩種形式工作。
3. USB2.0中定義三種類型: HOST(主機),Device(裝置), HUB
    OTG新增兩種裝置: Dual-role device(兩用裝置),Perip-heral-only OTG device(OTG外設)
4. USB 2.0中定義了三種聯結器對(插頭和插座): Standard-A(主機),Standard-B(外設),Mini-B(較小的外設)
    OTG新增插頭: Mini-A
    OTG新增插座: Mini-A和Mini-AB(同時支援Mini-A或Mini-B的插頭)
    其中插頭和插座內部的塑料顏色:Mini-A為白色,Mini-B為黑色,Mini-AB為灰色
5. USB 2.0中定義了兩種電纜: Standard-A至Standard-B,  Standard-A至Mini-B
    OTG增加的兩種電纜:Mini-A至Standard-B, Mini-A至Mini-B
6. OTG的Dual-role device(兩用裝置)必須具備:
    1) 有限的主機能力
    2) 可作為全速的外設(可選的高速方式)
    3)可作為全速的主機(可選的低速或高速方式)
    3) OTG目標裝置的列表及驅動程式
    4)支援SRP,HNP
    5)一個Mini-AB插座
    6)VBUS上不小於8mA的電流輸出
    7)與使用者通訊的方式
7. Perip-heral-only OTG device(OTG外設):
    1.是普通的USB外設
    2. 支援SRP
    3. 一個Mini-B插座(不能使用Mini-AB)

8.Android usb如何實現既可以發現accessory裝置,同時也可以發下host裝置

    做usb通訊,首先要先弄清楚哪邊是HOST那邊是SLAVE
    比如你的android手機做host,要獲得slave,用UsbDevice表示slave
    要是你的android手機做slave,要獲得host,用UsbAccessory表示host

 

轉載於:http://blog.csdn.net/ljzcom/article/details/8843360

相關文章: