0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何將USB應(yīng)用到嵌入式領(lǐng)域?如何實(shí)現(xiàn)USB點(diǎn)對(duì)點(diǎn)的通訊?

Q4MP_gh_c472c21 ? 來源:未知 ? 作者:李倩 ? 2018-08-06 16:51 ? 次閱讀

USB On-The-Go 擴(kuò)大了USB 的應(yīng)用領(lǐng)域,將USB 從傳統(tǒng)的PC 與外設(shè)通訊的模式,擴(kuò)展到移動(dòng)電子嵌入式領(lǐng)域中,拋開主機(jī)PC,實(shí)現(xiàn)通常的外設(shè)與外設(shè)之間點(diǎn)對(duì)點(diǎn)(Point to Point)的數(shù)據(jù)傳輸模式。

1 什么是USB On-The-Go

我們先來回顧一下通用串行總線(Universal Serial Bus,簡稱為USB)發(fā)展的歷史:

i)1994 年11 月,以Intel 為首的7 家公司(Intel、Compaq、Microsoft、IBM、DEC、Northern Telecom 和NEC)推出了USB 協(xié)議的第一個(gè)草案,USB 作為一種新型的串行總線,揭開了新一輪的USB 總線的革命,但這時(shí),USB 并不為計(jì)算機(jī)技術(shù)人員所熟知;

ii)1996 年2 月,USB 協(xié)議規(guī)范1.0 版本發(fā)布,版權(quán)屬于Compaq、Intel、Microsoft和NEC 等4 家公司,并同意任何人可免費(fèi)使用。自此,USB 開始逐漸被廣大技術(shù)人員和用戶所認(rèn)可,并逐漸開始成為PC 主板上的標(biāo)準(zhǔn)接口;

iii)1998 年10 月,USB 1.1 版本發(fā)布,集中修訂了USB 1.0 中的問題,并進(jìn)一步突出了USB 的優(yōu)勢(shì)。到目前,USB 1.1 仍是開發(fā)USB 低速(1.5Mbps,Low-Speed)和全速(12Mbps,F(xiàn)ull-Speed)設(shè)備的標(biāo)準(zhǔn)版本。USB 的低功耗、速度高、成本低、支持即插即用和維護(hù)方便等優(yōu)勢(shì)更加穩(wěn)定,USB 開始成為鼠標(biāo)、鍵盤、游戲桿、打印機(jī)、光驅(qū)、硬盤、顯示器和數(shù)碼相機(jī)等幾乎各種PC 外設(shè)與PC 連接的標(biāo)準(zhǔn)協(xié)議之一。各種USB 的外設(shè)產(chǎn)品如雨后春筍般出現(xiàn),如USB Flash 讀卡器、USB 移動(dòng)硬盤、USB 數(shù)碼相機(jī)、USB 鍵盤等,幾乎所有的PC 外設(shè)都有相應(yīng)的USB 接口的產(chǎn)品。一時(shí)間,USB 成為了最為流行的PC 接口標(biāo)準(zhǔn),嵌入式軟硬件工程師也將USB 應(yīng)用到自己的設(shè)計(jì)之中;

iv)2000 年4 月,Compaq、HP、Intel、Lucent、Microsoft、NEC 和Philips 等7 家公司聯(lián)合發(fā)布USB 2.0 協(xié)議規(guī)范版本。新版本最大的變化就是將USB 的總線速度一下子提高到了480Mbps,即開始支持高速設(shè)備(High-Speed)。由此,USB 翻開了新的一頁,徹底打破了USB 應(yīng)用在視頻等高速傳輸領(lǐng)域中的速度瓶頸,大大擴(kuò)展了USB 應(yīng)用領(lǐng)域。從低速的鼠標(biāo)、鍵盤,到全速的硬盤,再到高速的視頻傳輸,USB 幾乎無所不能,可以應(yīng)用到任何一種PC 外設(shè)中。USB 取代串口、并口等傳統(tǒng)PC 接口只是個(gè)時(shí)間問題了。

從問世,到協(xié)議規(guī)范2.0 版本,USB 不斷在自我完善,走向成熟。從普通計(jì)算機(jī)用戶,計(jì)算機(jī)工程師,到硬件芯片生產(chǎn)廠商,都已經(jīng)完全認(rèn)可了USB。廠商對(duì)于USB 的硬件和軟件支持的也越來越完備,現(xiàn)在開發(fā)一個(gè)USB 外設(shè)產(chǎn)品,所需要投入的成本和時(shí)間大大降低了,幾年前是沒有辦法做到這一點(diǎn)的。但是,隨著USB 應(yīng)用領(lǐng)域的逐漸擴(kuò)大,人們對(duì)于USB的期望也越來越高,希望USB 能應(yīng)用在各種計(jì)算機(jī)領(lǐng)域中,尤其是在移動(dòng)通訊領(lǐng)域中,希望能通過PDA 等移動(dòng)設(shè)備來直接和USB 外設(shè)通信,使得USB 能應(yīng)用在沒有PC 的領(lǐng)域中。非PC 應(yīng)用領(lǐng)域? 這正是USB 一個(gè)致命的弱點(diǎn)。USB 的拓?fù)浣Y(jié)構(gòu)中居于核心地位的是Host,任何一次USB 的數(shù)據(jù)傳輸都必須由Host 來發(fā)起和控制,所有的USB 外設(shè)都只能和Host 建立連接,任何兩個(gè)外設(shè)之間或是兩個(gè)Host 之間無法直接通信。而目前,大量的扮演Host 角色的是個(gè)

電腦PC。因此,“如何將USB 應(yīng)用到嵌入式領(lǐng)域?如何實(shí)現(xiàn)USB 點(diǎn)對(duì)點(diǎn)的通訊?”等問題,開始進(jìn)入了USB 開發(fā)者的討論議程。正是在這種新的需求之下,USB On-The-Go 應(yīng)運(yùn)而生。2001 年12 月,USB On-The-Go 版本協(xié)議1.0 正式發(fā)布(簡寫為OTG 1.0)。

USB On-The-Go,顧名思義,是USB 應(yīng)用在便攜式移動(dòng)設(shè)備領(lǐng)域中,因此,我們姑且將其翻譯為“便攜式USB”(或者“移動(dòng)USB”),簡記成USB OTG。OTG 1.0 作為USB 2.0的補(bǔ)充協(xié)議,基本上符合USB 2.0 規(guī)范。但是,有所不同的是符合USB OTG 的設(shè)備完全拋開了PC,既可以作為Host,也可以作為外設(shè),而與另一個(gè)OTG 設(shè)備直接實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)(Pear to Pear)通訊。因此,這類OTG 設(shè)備也被成為是雙角色設(shè)備(Dual-Role Device,簡稱為DRD),并能夠根據(jù)接入設(shè)備的特性和數(shù)據(jù)傳輸過程中的情況,自動(dòng)切換為Host 或是外設(shè)。例如,一個(gè)OTG 數(shù)碼相機(jī)可以直接與OTG 打印機(jī)相連,打印圖片;兩個(gè)OTG MP3 播放器可以之間連在一起,實(shí)現(xiàn)音樂文件的共享。需要注意的是,USB OTG 設(shè)備保留了作為普通USB 2.0 外設(shè)的功能,可以作為外設(shè)直接連接到PC Host 上。

2 USB OTG 設(shè)備的功能

USB OTG 定義了兩種設(shè)備類型:雙角色設(shè)備DRD 和單外部設(shè)備(Peripheral-OnlyDevice,簡稱為POD)。DRD 具備Host 和外設(shè)的兩種功能,POD 基本與外設(shè)功能近似,因此,我們這里著重討論DRD。

要成為一個(gè)USB Host,必須具有存儲(chǔ)外設(shè)驅(qū)動(dòng)程序、提供足夠的USB 端口電流和A型Host 插座的能力。而其所要實(shí)現(xiàn)的基本功能包括3 部分:

i)管理和控制總線,包括提供USB 端口電源管理;

ii)檢測(cè)外設(shè)的接入和斷開,枚舉(Enumerate)設(shè)備;

iii)初始化總線上所有的數(shù)據(jù)包傳輸?shù)然顒?dòng)。

同樣,USB 外設(shè)也具有特定的功能:

i)響應(yīng)USB Host 的命令,執(zhí)行又Host 發(fā)起的發(fā)送設(shè)備描述符、傳送數(shù)據(jù)等活動(dòng);

ii) 遠(yuǎn)程喚醒處于掛起(Suspend)狀態(tài)的主機(jī);

iii) 提供自供電(Self-Powered)電源(如果所需電流大于總線能提供的限額,選此項(xiàng))。

DRD 具有USB Host 和外設(shè)的雙重功能,但是,正因?yàn)榫哂辛穗p重的角色任務(wù),DRD又必須有切換角色等新的任務(wù)和功能,因此,我們可以用(1)式來簡單的定義OTG DRD的功能:

DRD = Host + Peripheral + OtherLL(1)

由(1)式可知,完整的USB OTG DRD 還必須具有除了通常的Host 和外設(shè)之外的一些功能,當(dāng)然DRD 的Host 功能是有限的,不要求完全實(shí)現(xiàn)PC Host 的功能,不過,這正符合了嵌入式領(lǐng)域中對(duì)USB 靈活性和便攜性的要求:

i)作為外設(shè),支持12Mbps 的全速模式(或者是480Mbps 的高速模式);

ii)作為Host,也支持全速模式(或者是低速和高速模式);

iii)產(chǎn)生目標(biāo)外設(shè)列表(Targeted Peripheral List,簡寫為TPL);

iv)會(huì)話請(qǐng)求協(xié)議(Session Request Protocol,簡寫為SRP);

v)主機(jī)交流協(xié)議(Host Negotiation Protocol,簡寫為HNP);

vi)有且僅有1 個(gè)Mini-AB 插座;

vii)至少為總線提供8mA 的電流;

viii)能及時(shí)將總線活動(dòng)狀態(tài)通知給設(shè)備用戶。

3 USB OTG 體系的軟件描述

3.1 OTG 配置描述符

在OTG 系統(tǒng)處于枚舉過程時(shí),A 設(shè)備就會(huì)發(fā)送GetDescriptor 命令給B 設(shè)備(開始處于外設(shè)狀態(tài)的設(shè)備),要求B 設(shè)備發(fā)送OTG 配置描述符。配置描述符包括3 個(gè)字節(jié),分別是bLength、bDescriptorType 和bmAttributes。

3.2 會(huì)話請(qǐng)求協(xié)議(Session Request Protocol,簡寫為SRP)

SRP 用于B 設(shè)備向A 設(shè)備請(qǐng)求建立會(huì)話和使用總線。

一般,OTG 系統(tǒng)中的A 設(shè)備采用的是電池供電,因?yàn)檫@些設(shè)備是便攜式和可移動(dòng)的,這就決定了,OTG 系統(tǒng)電源管理是非常重要的一個(gè)專題。因此,為了節(jié)省OTG 系統(tǒng)的電源開支,OTG 2.0 規(guī)定A 設(shè)備在沒有總線活動(dòng)的時(shí)候,可以關(guān)掉VBus 上的電源。這樣,當(dāng)一個(gè)B 設(shè)備連接到A 設(shè)備上之后,就要初始化SRP,并發(fā)送給A 設(shè)備,請(qǐng)求A 設(shè)備在VBus上提供電流支持,進(jìn)而進(jìn)行通信。OTG 中,DRD 可以作為A 設(shè)備,也可以作為B 設(shè)備,因此,DRD 必須支持初始化SRP 和響應(yīng)SRP;POD 只能作B 設(shè)備,所以,只能初始化SRP。SRP 中,B 設(shè)備有兩種方式可以向A 設(shè)備發(fā)送請(qǐng)求,要求建立SRP:一種是數(shù)據(jù)線脈沖(Data-Line Pulsing),一種是VBus 脈沖(VBus Pulsing)。具體的脈沖方法在OTG 2.0 中有詳細(xì)的說明。任何一個(gè)A 設(shè)備只要求能響應(yīng)一種SRP 方式,而B 設(shè)備必須能初始化兩種SRP方式。這樣,當(dāng)B 設(shè)備先初始化一種SRP,而A 設(shè)備無法響應(yīng)是,則B 設(shè)備就要用另一種SRP 方式。

3.3 主機(jī)交流協(xié)議(Host Negotiation Protocol,簡寫為HNP)

HNP 用于初始B 設(shè)備與初始A 設(shè)備之間切換Host 角色。

OTG DRD 具有Mini AB 型插座,因此,DRD 既可作為Host,也可以作為外設(shè)。而在某一個(gè)OTG 連接中,這個(gè)DRD 到底是作Host(即A 設(shè)備),還是作外設(shè)(即B 設(shè)備),則要根據(jù)接入的另一個(gè)OTG 設(shè)備來定。如果,接入的是OTG POD,那么,毫無疑問,這個(gè)DRD 肯定是作A 設(shè)備。但,如果接入的是另一個(gè)DRD,那么這兩個(gè)DRD 之間,就可以HNP來隨時(shí)切換Host 角色。

一次完整的HNP 流程是這樣的:B 設(shè)備希望控制總線,成為Host;在A 設(shè)備發(fā)送了SetFeature 命令后,B 設(shè)備就可以來請(qǐng)求控制總線;A 設(shè)備掛起總線,通知B 設(shè)備可以控制總線;B 設(shè)備發(fā)送信號(hào),斷開與A 設(shè)備的連接;A 設(shè)備啟動(dòng)D+信號(hào)線上的上拉電阻,將D+置高;這樣,A 設(shè)備就開始作為外設(shè),放棄了總線的控制權(quán),B 設(shè)備成為了Host;在B設(shè)備完成了對(duì)總線的控制,就需要上拉其上的D+電阻,放棄總線控制權(quán)。當(dāng)然,這一系列的HNP 活動(dòng),不僅僅是通過信號(hào)線上的電平變化來實(shí)現(xiàn)的。電平變化只是一種標(biāo)志,真正內(nèi)部對(duì)總線的控制權(quán)的變化,則要通過軟件來實(shí)現(xiàn)。

3.4 OTG 的軟件結(jié)構(gòu)

OTG 的軟件結(jié)構(gòu)包括3 部分:

i)OTG 系統(tǒng)硬件驅(qū)動(dòng):包括SRP 和HNP;

ii)OTG 系統(tǒng)外設(shè)軟件:實(shí)現(xiàn)標(biāo)準(zhǔn)的USB 類,來實(shí)現(xiàn)特定的USB 外設(shè)功能;

iii)OTG 系統(tǒng)Host 軟件:包括Host 驅(qū)動(dòng)程序、操作系統(tǒng)支持軟件、支持外設(shè)的類庫。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • usb
    usb
    +關(guān)注

    關(guān)注

    60

    文章

    7881

    瀏覽量

    263770
  • 數(shù)據(jù)傳輸
    +關(guān)注

    關(guān)注

    9

    文章

    1805

    瀏覽量

    64417

原文標(biāo)題:USB是如何從PC擴(kuò)展到嵌入式的?USB OTG發(fā)展及協(xié)議標(biāo)準(zhǔn)

文章出處:【微信號(hào):gh_c472c2199c88,微信公眾號(hào):嵌入式微處理器】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    怎么利用ARM7來實(shí)現(xiàn)嵌入式USB?

    USB設(shè)備都只能與主機(jī)建立連接。不僅如此,軟件復(fù)雜性以及較高的功率要求,使得人們對(duì)嵌入式設(shè)備中使用USB的興趣與日俱增。嵌入式USB結(jié)合
    發(fā)表于 11-06 08:15

    為什么要開發(fā)嵌入式USB主機(jī)?如何設(shè)計(jì)嵌入式USB主機(jī)?

    為什么要開發(fā)嵌入式USB主機(jī)?非PC應(yīng)用領(lǐng)域?如何設(shè)計(jì)嵌入式USB主機(jī)嵌入式
    發(fā)表于 04-26 06:11

    嵌入式系統(tǒng)USB接口的研究及設(shè)計(jì)

    本文針對(duì)嵌入式系統(tǒng)中USB 接口進(jìn)行了研究,提出了MCU+USB嵌入式USB Host 的實(shí)現(xiàn)
    發(fā)表于 06-13 11:29 ?15次下載

    嵌入式USB從設(shè)備驅(qū)動(dòng)程序設(shè)計(jì)

    本文通過基于S3C2410 的嵌入式USB 從設(shè)備驅(qū)動(dòng)程序的實(shí)現(xiàn),介紹嵌入式Linux 系統(tǒng)中的USB 從設(shè)備驅(qū)動(dòng)程序的設(shè)計(jì)方法,同時(shí)介紹了
    發(fā)表于 08-14 14:07 ?15次下載

    基于TTL串口的嵌入式USB主機(jī)系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)

    本文介紹了一種基于TTL 串口的嵌入式USB 主機(jī)系統(tǒng)。介紹了該系統(tǒng)的硬件實(shí)現(xiàn),以及USB 主機(jī)的底層驅(qū)動(dòng)軟件的實(shí)現(xiàn),并簡要介紹其在數(shù)據(jù)采集
    發(fā)表于 08-15 08:23 ?29次下載

    USB嵌入式主機(jī)控制器設(shè)計(jì)

    USB嵌入式主機(jī)控制器設(shè)計(jì) 過去USB僅應(yīng)用于個(gè)人計(jì)算機(jī)其在嵌入式系統(tǒng)領(lǐng)域的巨大潛力尚未開發(fā)USB
    發(fā)表于 03-18 10:40 ?55次下載

    USB嵌入式主機(jī)控制器設(shè)計(jì)

    USB嵌入式主機(jī)控制器設(shè)計(jì) 過去USB僅應(yīng)用于個(gè)人計(jì)算機(jī)其在嵌入式系統(tǒng)領(lǐng)域的巨大潛力尚未開發(fā)USB
    發(fā)表于 05-06 17:22 ?621次閱讀
    <b class='flag-5'>USB</b><b class='flag-5'>嵌入式</b>主機(jī)控制器設(shè)計(jì)

    基于嵌入式系統(tǒng)的USB(HID)設(shè)備

    基于嵌入式系統(tǒng)的USB(HID)設(shè)備 目前嵌入式系統(tǒng)在數(shù)字化電子產(chǎn)品領(lǐng)域應(yīng)用越來越廣泛。隨著其成本的降低,大有取代單片機(jī)的趨勢(shì)。 USB設(shè)
    發(fā)表于 10-06 08:25 ?1252次閱讀
    基于<b class='flag-5'>嵌入式</b>系統(tǒng)的<b class='flag-5'>USB</b>(HID)設(shè)備

    嵌入式ARM9的USB設(shè)計(jì)與實(shí)現(xiàn)

    嵌入式ARM9的USB設(shè)計(jì)與實(shí)現(xiàn) 隨著嵌入式系統(tǒng)的廣泛應(yīng)用,各種小型終端需要開發(fā)出與外界聯(lián)系的USB接口。目前,常用的技術(shù)有兩種?;趩纹?/div>
    發(fā)表于 05-11 14:44 ?1523次閱讀
    <b class='flag-5'>嵌入式</b>ARM9的<b class='flag-5'>USB</b>設(shè)計(jì)與<b class='flag-5'>實(shí)現(xiàn)</b>

    嵌入式USB MiniHost系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

    設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)嵌入式USB主機(jī)系統(tǒng)的硬件和軟件,用于解決USB設(shè)備不能脫離PC主機(jī)的問題。并在設(shè)計(jì)的硬件和軟件基礎(chǔ)上利用嵌入式C語言編制了
    發(fā)表于 04-12 15:04 ?47次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>USB</b> MiniHost系統(tǒng)設(shè)計(jì)與<b class='flag-5'>實(shí)現(xiàn)</b>

    基于USB嵌入式主機(jī)棧

    基于USB嵌入式主機(jī)棧
    發(fā)表于 10-31 08:52 ?4次下載
    基于<b class='flag-5'>USB</b><b class='flag-5'>嵌入式</b>主機(jī)棧

    嵌入式系統(tǒng)USB接口的虛擬示波器的開發(fā)與實(shí)現(xiàn)

    嵌入式系統(tǒng)USB接口的虛擬示波器的開發(fā)與實(shí)現(xiàn)
    發(fā)表于 10-31 10:28 ?14次下載
    <b class='flag-5'>嵌入式</b>系統(tǒng)<b class='flag-5'>USB</b>接口的虛擬示波器的開發(fā)與<b class='flag-5'>實(shí)現(xiàn)</b>

    基于μC/OS-Ⅱ的嵌入式USB控制軟件的實(shí)現(xiàn)

    0 引言 2010年USB 3.0的正式推出象征USB傳輸極速時(shí)代的到來,但是嵌入式領(lǐng)域由于考慮成本等各方面因素很多仍采用USB 1.1協(xié)議
    發(fā)表于 12-01 01:57 ?390次閱讀
     基于μC/OS-Ⅱ的<b class='flag-5'>嵌入式</b><b class='flag-5'>USB</b>控制軟件的<b class='flag-5'>實(shí)現(xiàn)</b>

    嵌入式系統(tǒng)中USB主機(jī)的應(yīng)用方式

    嵌入式系統(tǒng)中USB技術(shù)主要有兩種應(yīng)用方式,一種是USB總線設(shè)備的USB設(shè)備方式,一種是USB主控制器的
    發(fā)表于 10-30 14:16 ?1668次閱讀

    USB嵌入式主機(jī)堆棧

    USB標(biāo)準(zhǔn)下,USB設(shè)備之間不能直接通信。它們只能與控制一個(gè)或多個(gè)設(shè)備通信的總線的 USB 主機(jī)通信。常見的 USB 主機(jī)是 PC。本應(yīng)用筆記討論了
    發(fā)表于 05-03 09:13 ?164次閱讀
    <b class='flag-5'>USB</b><b class='flag-5'>嵌入式</b>主機(jī)堆棧