ISP1362 USB OTG控制芯片及其應用
1 引言
USB已在PC及筆記本電腦中得到了廣泛的應用,它們起到了集線器的作用,用以連接數(shù)碼相機、打印機等各種外設,但目前大部分設備還不能實現(xiàn)彼此之間的直接通信。
新的USB On-The-Go標準正是針對這一情況而推出的,它將最終結束用電腦作為各種電子設備連接紐帶的時代,借助USB On-The-Go,外設既可作為主機,也可作為從機,彼此之間能夠互相通信,并可根據(jù)實際情況協(xié)商確定哪個設備作為主機。
2 Isp1362的結構特點
飛利浦Isp1362由OTG控制器、主機控制器、外設控制器、USB收發(fā)器、OTG收發(fā)器和緩存器等組成,通過內(nèi)部集成的總線接口可與cpu相連,Isp1362的內(nèi)部結構如圖1所示。
OTG控制器模塊用于提供OTG要求的所有控制、監(jiān)控及交換功能。它還支持OTG supplement 1.0標準規(guī)定的所有功能。
若以OTG模式進行配置,Isp1362既可用作主機,也可用作外設,并支持主機與外設之間角色轉換的主機通信協(xié)議hnp(host negotIatIon protocol)和兩種模式下的對話請求協(xié)議srp(sessIon request proto-col)。Isp1362作為主機使用時,能夠關閉vbus以響應srp,而作為外設使用時,能夠啟動srp以喚醒主機。一套OTG寄存器提供的控制及狀態(tài)監(jiān)控功能可以用來支持hnp及srp軟件。
Isp1362支持內(nèi)置電源供電及外部電源供電兩種模式。對于較低功耗的應用設計,可用內(nèi)部集成的電荷泵激勵器。而如果應用系統(tǒng)的功耗較高,則要用外部電源供電。
作為外設控制器時,Isp1362支持兩個控制端點,還能以全速及低速將多達14個端點編程為任何四種傳輸類型。
除了通用的USB收發(fā)器,Isp1362還集成了計時器及全OTG功能所需要的模擬元件。一個12mhz~48mhz的鎖相環(huán)?pll 使得采用低成本的12mhz晶振成為可能,同時由于采用了低頻率運作模式,也降低了emI。
Isp1362還內(nèi)置了一個用于非OTG配置(僅限于主機及外設)的過流保護電路。當Isp1362用作主機時,一個片內(nèi)的3.3v到5v電荷激勵器可調(diào)整支持大量外設所要求的輸出電流。此外,Isp1362還提供兩個USB端口。端口1可進行軟件配置,并可用作下行、上行或OTG端口。作為OTG端口,端口1可在主機或外設模式下工作,并可通過hnp或布線變化來動態(tài)轉換角色。端口2只用作下行傳輸。
3 Isp1362的引腳功能
圖2是lqfp封裝的Isp1362bd的引腳排列,其主要引腳功能如下:
d0~d15:連接到Isp1362內(nèi)部寄存器和緩沖存儲器的16比特數(shù)據(jù)總線。
rd(引腳20):讀信號線。低電平時表示hc/dc驅動器需要讀相應的緩沖存儲器和寄存器。
cs(引腳21):片選信號,低電平有效。用于控制hc/dc驅動器訪問對應的緩沖存儲器和寄存器。
wr(引腳22):寫信號線。低電平時表示hc/dc驅動器需要寫數(shù)據(jù)到相應的緩沖存儲器和寄存器。
test0(引腳23):輸入輸出測試。
dreq1(引腳24):dma請求輸出。當它有效時,通知dma控制器hc正在請求數(shù)據(jù)傳送。
dreq2(引腳25):dma請求輸出。當它有效時,通知dma控制器dc正在請求數(shù)據(jù)傳送。
dack1(引腳28):dma確認輸入。表明來自hc的dma傳輸請求已經(jīng)被dma控制器確認。
dack2(引腳29):dma確認輸入。表明來自dc的dma傳輸請求已經(jīng)被dma控制器確認。
Int1和Int2(引腳30,31):連接到外部微處理器的Irq引腳,使Isp1362執(zhí)行中斷服務程序(Isrs)。
reset(引腳32):復位輸入。
圖3
h suspend(引腳33):該引腳為高電平時,主機控制器處于“掛起”狀態(tài),為低電平時,喚醒主機控制器。
d suspend(引腳34):該引腳電平為高時,設備控制器處于“掛起”狀態(tài),電平為低時,喚醒設備控制器。
h-psw1(引腳35):和外部pmos開關相連。當引腳電平為低時,打開pmos開關以為vbus提供下行端口;引腳電平為高時,關閉pmos開關。
clkout(引腳38):可編程時鐘輸出。默認時鐘頻率為12mhz,變化范圍為3mhz~48mhz。
a0(引腳61):用于決定控制器處于命令狀態(tài)還是數(shù)據(jù)狀態(tài);
a1(引腳62):用于決定控制器工作于主機還是設備控制模式:0 表示處于主機控制(hc)模式;1表示處于設備控制(dc)模式。
4 應用舉例
下面以Isp1362開發(fā)的USB主機為例詳細說明Isp1362的應用。該設計所采用硬件平臺是mo-torola mcf5249c3實驗開發(fā)板,以它作為母板,為USB主機開發(fā)提供rs232、bdm接口,并提供8m的sdram及2m的flash rom的編程調(diào)試資源。該設計采用的軟件平臺是metrowerks codewarrIor,通過對mcf5249編程實現(xiàn)對Isp1362的控制,從而完成USB主機功能。
4.1 硬件連接原理圖
圖3所示為Isp1362控制芯片與mcf5249的硬件連接電路原理圖。
4.2 USB主機軟件流程
整個USB主機軟件流程如圖4所示,軟件部分主要包括USB主機和USB外設功能模塊。它們既可相互獨立,又可相互調(diào)用,共同完成USB主機的功能。
4.3 mcf5249和Isp1362底層通信的實現(xiàn)
這是整個USB體系軟件的根基,包括了mcf5249對Isp1362的讀、寫、設定地址等操作,主要通過mcf5249訪問Isp1362的控制寄存器來完成。Isp1362的寄存器結構是命令—數(shù)據(jù)寄存器對結構,一個完整的寄存器訪問周期需要在一個命令階段后緊跟一個數(shù)據(jù)階段。命令階段用來告知Isp1362將在數(shù)據(jù)階段訪問它的寄存器。在微處理器的16位數(shù)據(jù)總線上,命令階段占低字節(jié),高位填零。下面是讀32位寄存器的程序代碼:
unsIgned long read_reg32(unsIgned char reg_no)
{
unsIgned Int result_l,result_h;
unsIgned long result;
outport(hc_com, reg_no); //命令階段
result_l=Inport(hc_data); //數(shù)據(jù)階段
result_h=Inport(hc_data); //數(shù)據(jù)階段
result = result_h;
result = result<<16;
result = result+result_l;
return(result);
}
4.4 主機功能實現(xiàn)
整個程序通過中斷調(diào)度來完成主機功能。USB總線在工作的時候,系統(tǒng)仍然按照特定的時序和協(xié)議規(guī)范運行。如系統(tǒng)通過數(shù)據(jù)線上的電平變化檢測到USB設備的接入與移出,接著主機和外設就按照事先約定的順序執(zhí)行一系列的信息交換, 即:主機重啟外設→主機給外設供電→外設通過缺省的地址0與主機通訊→主機給外設分配地址→主機請求外設的一系列功能和設備描述符。因此, 在c 語言中, 通過順序的編程和中斷的調(diào)度,就可以完成主機系統(tǒng)的標準的USB活動。
5 結束語
借助Isp1362,開發(fā)商可制造兼容OTG的雙功能產(chǎn)品,實現(xiàn)點到點通信,其中的Isp1362不僅可作為主機或傳統(tǒng)外設使用,還可根據(jù)需要動態(tài)轉換主機/外設角色。Isp1362的低功耗特性使其成為小型手持設備如個人數(shù)字助理(pda)、數(shù)碼相機、mp3播放器及移動電話等的理想選擇,能滿足此類產(chǎn)品對電池使用壽命、產(chǎn)品尺寸的嚴格要求。