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