详述USB OTG发展及协议标准
???? 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 OTG发展及协议标准的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 詹姆斯拿下三双 本赛季第六次 个人生涯第
- 下一篇: 人工智能----语音助手