用SL811HS實(shí)現(xiàn)OTG設(shè)備互聯(lián)
摘 要: 本文介紹了用SL811HS設(shè)計(jì)OTG雙角色設(shè)備的原理,并著重分析了主機(jī)協(xié)商協(xié)議和會話請求協(xié)議。
關(guān)鍵詞: USB;OTG;雙角色設(shè)備;會話請求協(xié)議;主機(jī)協(xié)商協(xié)議
OTG概述
在USB的系統(tǒng)上,是由一個主計(jì)算機(jī)來管理所有的通信,外圍設(shè)備之間不能直接通信,必須通過主計(jì)算機(jī)來進(jìn)行彼此間的聯(lián)系。2001年發(fā)布的On-The-Go(OTG)是USB2.0規(guī)范的補(bǔ)充協(xié)議,彌補(bǔ)了USB2.0規(guī)范不能用于點(diǎn)對點(diǎn)通信的不足。OTG定義了一個功能較少的主計(jì)算機(jī),主要用在連接單一USB設(shè)備的便攜設(shè)備上。OTG的典型應(yīng)用有蜂窩電話、PDA和機(jī)頂盒等。圖1是OTG應(yīng)用于PDA和機(jī)頂盒的實(shí)例。
為了更好地支持便攜設(shè)備,OTG要滿足有限的主機(jī)性能,以降低軟件的復(fù)雜性,適合便攜式設(shè)備外形的小USB連接器和節(jié)能等要求。
為了達(dá)到這些目標(biāo),OTG補(bǔ)充協(xié)議介紹了雙角色設(shè)備(DRD)。DRD是USB2.0兼容設(shè)備,既能作主機(jī),也能用作外設(shè),它具有如下特性:
?有限的主機(jī)性能;
?全速操作(高速可選);
?目標(biāo)外設(shè)列表;
?會話請求協(xié)議(SRP);
?主機(jī)協(xié)商協(xié)議(HNP);
?一個且只有一個小型AB插座;
?VBUS的最小輸出8mA;
?與用戶進(jìn)行信息通信的手段。
圖1 OTG的典型應(yīng)用
圖2 SL811HS的框圖
圖3 SL811HS OTG框圖
圖4 VBUS脈沖調(diào)制,D+/D-,和ID腳檢測
圖5 電壓比較器
SL811HS概述
SL811HS是雙角色主機(jī)/外圍設(shè)備的嵌入式USB控制器,可以與全速或低速USB外設(shè)通信。SL811HS可以與微處理器、微控制器、DSP、或者各種總線(如ISA和PCMCIA)接口。圖2是SL811HS的框圖。
SL811HS_OTG DRD參考設(shè)計(jì)
圖3說明了如何用SL811HS外加CPU和一些模擬元件設(shè)計(jì)OTG雙角色設(shè)備。在軟件的控制下,SL811HS可以支持USB主機(jī)和外設(shè)模式,不需要額外的硬件。
模擬元件的作用
VBUS閾值
無論在主機(jī)還是外設(shè)模式下,都必須監(jiān)測VBUS。為了支持會話請求協(xié)議,需要檢查VBUS處于什么電平,以確定會話何時開始和結(jié)束。
本設(shè)計(jì)中用四個電壓比較器監(jiān)測VBUS,它們覆蓋了下列OTG參數(shù):
A設(shè)備Vbus有效: VA_Vbus_VLD >4.4V
A設(shè)備會話有效: VA_Sess_VLD 0.8V-2.0V
B設(shè)備會話有效: VB_Sess_VLD 0.8V-4.0V
B設(shè)備會話結(jié)束: VB_Sess_End 0.2V-0.8V
VBUS脈沖調(diào)制
VBUS脈沖調(diào)制是會話請求協(xié)議的一部分,在本設(shè)計(jì)中將CPU的一個GPIO口經(jīng)過R40連到VBUS來實(shí)現(xiàn)VBUS脈沖調(diào)制,如圖4所示。
D+和D-的上拉和下拉電阻
為了使設(shè)備能夠作為主機(jī)和外設(shè)工作,必須能夠切換D+和D-上的上拉和下拉電阻。有許多方法可以控制這些電阻的切換。圖4中顯示的方法是采用外部CPU的GPIO口來切換D+和D-上的電阻。當(dāng)DRD工作在主機(jī)模式時,GPIOy和GPIOz連接15k的下拉電阻到地,并且GPIOx浮空1.5k的上拉電阻。當(dāng)DRD工作在外設(shè)模式時,GPIOx連接1.5k的上拉電阻到電源,同時GPIOy和GPIOz浮空15k的下拉電阻。(注意,OTG補(bǔ)充協(xié)議不允許關(guān)閉D-上的下拉電阻,本設(shè)計(jì)中的切換方式僅用于調(diào)試目的。)
ID腳檢測
當(dāng)用戶將插頭插入小型AB插座時,ID腳用來確定DRD是A設(shè)備還是B設(shè)備。如果ID對地短路,就表示插入的是小型A插頭,從而使得DRD成為A設(shè)備。軟件通過一個GPIO口來監(jiān)測ID腳的狀態(tài)。
過流檢測和控制
當(dāng)DRD是A設(shè)備時,在會話期間需要提供VBUS。連接的B設(shè)備需要的電流有可能超出A設(shè)備的負(fù)載能力。圖5中的比較器1用來檢測過流,當(dāng)VBUS跌到4.4V以下時,表示過流情況產(chǎn)生了。另外,圖6所示的限流電路提供過流保護(hù),在過流情況下,由軟件關(guān)閉VBUS。
圖6 過流檢測和控制
圖7 SRP狀態(tài)圖1
VBUS開/關(guān)控制
如圖6所示,GPIO開/關(guān)用于控制VBUS。當(dāng)DRD是A設(shè)備時,由軟件打開VBUS直到會話結(jié)束。當(dāng)DRD是B設(shè)備時,VBUS必須關(guān)閉。
SL811HS_OTG的軟件
當(dāng)SL811HS是一個DRD時,軟件必須支持所有SetFeature命令和OTG描述符。OTG有兩個主要功能:會話請求協(xié)議和主機(jī)協(xié)商協(xié)議。
會話請求協(xié)議(SRP)
SRP協(xié)議能讓B設(shè)備請求A設(shè)備提供電源VBUS,并開始會話。當(dāng)B設(shè)備發(fā)起SRP時,軟件促使數(shù)據(jù)線(D+)發(fā)脈沖,然后VBUS發(fā)脈沖。A設(shè)備可以通過提供電源VBUS來響應(yīng)數(shù)據(jù)線脈沖或者VBUS脈沖。圖7和圖8是SRP中兩個DRD的狀態(tài)圖。
當(dāng)A設(shè)備打開電源VBUS時,SRP結(jié)束。一旦A設(shè)備確定VBUS已經(jīng)到達(dá)一個有效電平,它就成為USB主機(jī),并且檢測B設(shè)備。
主機(jī)協(xié)商協(xié)議(HNP)
HNP協(xié)議能讓B設(shè)備變成主機(jī)。當(dāng)連接的DRD必須改變角色時,就避免了最終用戶交換小型AB電纜的麻煩(通常情況下,用戶不明白設(shè)備有不同的角色)。
圖9是A設(shè)備部分HNP狀態(tài)圖,圖10是B設(shè)備的HNP狀態(tài)圖。要注意的是:a_host狀態(tài)是將控制從A設(shè)備轉(zhuǎn)讓給B設(shè)備的起始狀態(tài),并且也是當(dāng)控制從B設(shè)備歸還時的結(jié)束狀態(tài)。同樣,b_peripheral是B設(shè)備的HNP起始和結(jié)束點(diǎn)。
當(dāng)A設(shè)備掛起總線時,對B設(shè)備的控制轉(zhuǎn)讓開始。如果B設(shè)備需要變成主機(jī),它將會通過關(guān)閉D+的上拉電阻來發(fā)一個“斷開”信號。因?yàn)锳設(shè)備已經(jīng)允許B設(shè)備HNP,所以A設(shè)備會把這個“斷開”狀態(tài)當(dāng)作B設(shè)備要變成主機(jī)的請求。A設(shè)備通過打開D+的上拉電阻來完成控制的轉(zhuǎn)讓。
圖8 SRP狀態(tài)圖2
圖9 HNP狀態(tài)圖1
圖10 HNP狀態(tài)圖2
圖11 HNP狀態(tài)圖3
圖12 HNP狀態(tài)圖4
當(dāng)B設(shè)備停止所有的總線活動時,控制就歸還給A設(shè)備。B設(shè)備掛起活動之后,引起A設(shè)備關(guān)閉它的上拉電阻而成為主機(jī)。這個“斷開”狀態(tài)被B設(shè)備檢測到,B設(shè)備再次變成外設(shè),并打開它的上拉電阻。
圖11闡明了A設(shè)備怎樣從a_peripheral狀態(tài)返回到a_host狀態(tài)。圖12闡明了B設(shè)備怎樣從b_host狀態(tài)返回到b_peripheral狀態(tài)。
結(jié)語
SL811HS是一個雙角色USB主機(jī)控制器,通過附加一些模擬元件和一個外部CPU,就能實(shí)現(xiàn)整個OTG系統(tǒng)。■
參考文獻(xiàn)
1 On-The-Go Supplement to the USB 2.0 Specification Revision 1.0.2001
2 SL811HS Embedded USB Host/Slave Controller. Cypress Semiconductor Corporation
3 蕭世文.USB2.0硬件設(shè)計(jì).北京:清華大學(xué)出版社
評論