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