USB On-The-Go 擴大了USB 的應用領域,將USB 從傳統的PC 與外設通訊的模式,擴展到移動電子和嵌入式領域中,拋開主機PC,實現通常的外設與外設之間點對點(Point to Point)的數據傳輸模式。
1 什么是USB On-The-Go
我們先來回顧一下通用串行總線(Universal Serial Bus,簡稱為USB)發展的歷史:
i)1994 年11 月,以Intel 為首的7 家公司(Intel、Compaq、Microsoft、IBM、DEC、Northern Telecom 和NEC)推出了USB 協議的第一個草案,USB 作為一種新型的串行總線,揭開了新一輪的USB 總線的革命,但這時,USB 并不為計算機技術人員所熟知;
ii)1996 年2 月,USB 協議規范1.0 版本發布,版權屬于Compaq、Intel、Microsoft和NEC 等4 家公司,并同意任何人可免費使用。自此,USB 開始逐漸被廣大技術人員和用戶所認可,并逐漸開始成為PC 主板上的標準接口;
iii)1998 年10 月,USB 1.1 版本發布,集中修訂了USB 1.0 中的問題,并進一步突出了USB 的優勢。到目前,USB 1.1 仍是開發USB 低速(1.5Mbps,Low-Speed)和全速(12Mbps,Full-Speed)設備的標準版本。USB 的低功耗、速度高、成本低、支持即插即用和維護方便等優勢更加穩定,USB 開始成為鼠標、鍵盤、游戲桿、打印機、光驅、硬盤、顯示器和數碼相機等幾乎各種PC 外設與PC 連接的標準協議之一。各種USB 的外設產品如雨后春筍般出現,如USB Flash 讀卡器、USB 移動硬盤、USB 數碼相機、USB 鍵盤等,幾乎所有的PC 外設都有相應的USB 接口的產品。一時間,USB 成為了最為流行的PC 接口標準,嵌入式軟硬件工程師也將USB 應用到自己的設計之中;
iv)2000 年4 月,Compaq、HP、Intel、Lucent、Microsoft、NEC 和Philips 等7 家公司聯合發布USB 2.0 協議規范版本。新版本最大的變化就是將USB 的總線速度一下子提高到了480Mbps,即開始支持高速設備(High-Speed)。由此,USB 翻開了新的一頁,徹底打破了USB 應用在視頻等高速傳輸領域中的速度瓶頸,大大擴展了USB 應用領域。從低速的鼠標、鍵盤,到全速的硬盤,再到高速的視頻傳輸,USB 幾乎無所不能,可以應用到任何一種PC 外設中。USB 取代串口、并口等傳統PC 接口只是個時間問題了。
從問世,到協議規范2.0 版本,USB 不斷在自我完善,走向成熟。從普通計算機用戶,計算機工程師,到硬件芯片生產廠商,都已經完全認可了USB。廠商對于USB 的硬件和軟件支持的也越來越完備,現在開發一個USB 外設產品,所需要投入的成本和時間大大降低了,幾年前是沒有辦法做到這一點的。但是,隨著USB 應用領域的逐漸擴大,人們對于USB的期望也越來越高,希望USB 能應用在各種計算機領域中,尤其是在移動通訊領域中,希望能通過PDA 等移動設備來直接和USB 外設通信,使得USB 能應用在沒有PC 的領域中。非PC 應用領域? 這正是USB 一個致命的弱點。USB 的拓撲結構中居于核心地位的是Host,任何一次USB 的數據傳輸都必須由Host 來發起和控制,所有的USB 外設都只能和Host 建立連接,任何兩個外設之間或是兩個Host 之間無法直接通信。而目前,大量的扮演Host 角色的是個
人電腦PC。因此,“如何將USB 應用到嵌入式領域?如何實現USB 點對點的通訊?”等問題,開始進入了USB 開發者的討論議程。正是在這種新的需求之下,USB On-The-Go 應運而生。2001 年12 月,USB On-The-Go 版本協議1.0 正式發布(簡寫為OTG 1.0)。
USB On-The-Go,顧名思義,是USB 應用在便攜式移動設備領域中,因此,我們姑且將其翻譯為“便攜式USB”(或者“移動USB”),簡記成USB OTG。OTG 1.0 作為USB 2.0的補充協議,基本上符合USB 2.0 規范。但是,有所不同的是符合USB OTG 的設備完全拋開了PC,既可以作為Host,也可以作為外設,而與另一個OTG 設備直接實現點對點(Pear to Pear)通訊。因此,這類OTG 設備也被成為是雙角色設備(Dual-Role Device,簡稱為DRD),并能夠根據接入設備的特性和數據傳輸過程中的情況,自動切換為Host 或是外設。例如,一個OTG 數碼相機可以直接與OTG 打印機相連,打印圖片;兩個OTG MP3 播放器可以之間連在一起,實現音樂文件的共享。需要注意的是,USB OTG 設備保留了作為普通USB 2.0 外設的功能,可以作為外設直接連接到PC Host 上。
2 USB OTG 設備的功能
USB OTG 定義了兩種設備類型:雙角色設備DRD 和單外部設備(Peripheral-OnlyDevice,簡稱為POD)。DRD 具備Host 和外設的兩種功能,POD 基本與外設功能近似,因此,我們這里著重討論DRD。
要成為一個USB Host,必須具有存儲外設驅動程序、提供足夠的USB 端口電流和A型Host 插座的能力。而其所要實現的基本功能包括3 部分:
i)管理和控制總線,包括提供USB 端口電源管理;
ii)檢測外設的接入和斷開,枚舉(Enumerate)設備;
iii)初始化總線上所有的數據包傳輸等活動。
同樣,USB 外設也具有特定的功能:
i)響應USB Host 的命令,執行又Host 發起的發送設備描述符、傳送數據等活動;
ii) 遠程喚醒處于掛起(Suspend)狀態的主機;
iii) 提供自供電(Self-Powered)電源(如果所需電流大于總線能提供的限額,選此項)。
DRD 具有USB Host 和外設的雙重功能,但是,正因為具有了雙重的角色任務,DRD又必須有切換角色等新的任務和功能,因此,我們可以用(1)式來簡單的定義OTG DRD的功能:
DRD = Host + Peripheral + OtherLL(1)
由(1)式可知,完整的USB OTG DRD 還必須具有除了通常的Host 和外設之外的一些功能,當然DRD 的Host 功能是有限的,不要求完全實現PC Host 的功能,不過,這正符合了嵌入式領域中對USB 靈活性和便攜性的要求:
i)作為外設,支持12Mbps 的全速模式(或者是480Mbps 的高速模式);
ii)作為Host,也支持全速模式(或者是低速和高速模式);
iii)產生目標外設列表(Targeted Peripheral List,簡寫為TPL);
iv)會話請求協議(Session Request Protocol,簡寫為SRP);
v)主機交流協議(Host Negotiation Protocol,簡寫為HNP);
vi)有且僅有1 個Mini-AB 插座;
vii)至少為總線提供8mA 的電流;
viii)能及時將總線活動狀態通知給設備用戶。
3 USB OTG 體系的軟件描述
3.1 OTG 配置描述符
在OTG 系統處于枚舉過程時,A 設備就會發送GetDescriptor 命令給B 設備(開始處于外設狀態的設備),要求B 設備發送OTG 配置描述符。配置描述符包括3 個字節,分別是bLength、bDescriptorType 和bmAttributes。
3.2 會話請求協議(Session Request Protocol,簡寫為SRP)
SRP 用于B 設備向A 設備請求建立會話和使用總線。
一般,OTG 系統中的A 設備采用的是電池供電,因為這些設備是便攜式和可移動的,這就決定了,OTG 系統電源管理是非常重要的一個專題。因此,為了節省OTG 系統的電源開支,OTG 2.0 規定A 設備在沒有總線活動的時候,可以關掉VBus 上的電源。這樣,當一個B 設備連接到A 設備上之后,就要初始化SRP,并發送給A 設備,請求A 設備在VBus上提供電流支持,進而進行通信。OTG 中,DRD 可以作為A 設備,也可以作為B 設備,因此,DRD 必須支持初始化SRP 和響應SRP;POD 只能作B 設備,所以,只能初始化SRP。SRP 中,B 設備有兩種方式可以向A 設備發送請求,要求建立SRP:一種是數據線脈沖(Data-Line Pulsing),一種是VBus 脈沖(VBus Pulsing)。具體的脈沖方法在OTG 2.0 中有詳細的說明。任何一個A 設備只要求能響應一種SRP 方式,而B 設備必須能初始化兩種SRP方式。這樣,當B 設備先初始化一種SRP,而A 設備無法響應是,則B 設備就要用另一種SRP 方式。
3.3 主機交流協議(Host Negotiation Protocol,簡寫為HNP)
HNP 用于初始B 設備與初始A 設備之間切換Host 角色。
OTG DRD 具有Mini AB 型插座,因此,DRD 既可作為Host,也可以作為外設。而在某一個OTG 連接中,這個DRD 到底是作Host(即A 設備),還是作外設(即B 設備),則要根據接入的另一個OTG 設備來定。如果,接入的是OTG POD,那么,毫無疑問,這個DRD 肯定是作A 設備。但,如果接入的是另一個DRD,那么這兩個DRD 之間,就可以HNP來隨時切換Host 角色。
一次完整的HNP 流程是這樣的:B 設備希望控制總線,成為Host;在A 設備發送了SetFeature 命令后,B 設備就可以來請求控制總線;A 設備掛起總線,通知B 設備可以控制總線;B 設備發送信號,斷開與A 設備的連接;A 設備啟動D+信號線上的上拉電阻,將D+置高;這樣,A 設備就開始作為外設,放棄了總線的控制權,B 設備成為了Host;在B設備完成了對總線的控制,就需要上拉其上的D+電阻,放棄總線控制權。當然,這一系列的HNP 活動,不僅僅是通過信號線上的電平變化來實現的。電平變化只是一種標志,真正內部對總線的控制權的變化,則要通過軟件來實現。
3.4 OTG 的軟件結構
OTG 的軟件結構包括3 部分:
i)OTG 系統硬件驅動:包括SRP 和HNP;
ii)OTG 系統外設軟件:實現標準的USB 類,來實現特定的USB 外設功能;
iii)OTG 系統Host 軟件:包括Host 驅動程序、操作系統支持軟件、支持外設的類庫。
-
usb
+關注
關注
60文章
8062瀏覽量
269456 -
數據傳輸
+關注
關注
9文章
1990瀏覽量
65390
原文標題:USB是如何從PC擴展到嵌入式的?USB OTG發展及協議標準
文章出處:【微信號:gh_c472c2199c88,微信公眾號:嵌入式微處理器】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
怎么利用ARM7來實現嵌入式USB?
嵌入式USB從設備驅動程序設計
基于TTL串口的嵌入式USB主機系統的設計和實現
基于嵌入式系統的USB(HID)設備

嵌入式ARM9的USB設計與實現

嵌入式USB MiniHost系統設計與實現

基于μC/OS-Ⅱ的嵌入式USB控制軟件的實現

USB嵌入式主機堆棧

評論