基于嵌入式應(yīng)用的單芯片USB方案
USB技術(shù)的應(yīng)用已經(jīng)從最初應(yīng)用為一種連接外設(shè)和PC的方法經(jīng)過了長足的發(fā)展。USB標(biāo)準(zhǔn)的靈活性和適應(yīng)性,加上目前流行的基于USB的存儲設(shè)備和音樂播放器,激發(fā)了許多不是基于PC的嵌入式系統(tǒng)紛紛采用USB?,F(xiàn)在,從電視機(jī)和機(jī)頂盒等家庭娛樂設(shè)備,到智能儀器、機(jī)器控制器、數(shù)碼標(biāo)識系統(tǒng)和手持終端等工業(yè)應(yīng)用,各種嵌入式應(yīng)用都正在引入U(xiǎn)SB主機(jī)接口以提供數(shù)據(jù)存儲/傳輸,媒體錄音重放以及其他接口能力。
當(dāng)把USB連接引入到一個(gè)現(xiàn)有的嵌入式應(yīng)用的時(shí)候,對于如何升級設(shè)計(jì)者現(xiàn)有的設(shè)計(jì)以支持USB,有多種選擇。一個(gè)選擇就是用一個(gè)具有內(nèi)部USB 協(xié)議處理能力的設(shè)備替代它們現(xiàn)有的處理設(shè)備(CPU或微控制器)。這時(shí)用戶通常需要重新設(shè)計(jì)他們的硬件和軟件的核心部分以支持新的處理器。尤其是如果需要 USB主機(jī)能力,則需要新的軟件設(shè)備驅(qū)動和服務(wù)來處理設(shè)備枚舉之類的功能,支持不同的USB設(shè)備類和傳輸模式。對現(xiàn)有產(chǎn)品作這樣的重要變化,經(jīng)常是非常耗時(shí)并且代價(jià)不菲的。
FTDI Vinculum-II (VNC2)模塊圖。
另一種方法是使用一種現(xiàn)成的USB芯片方案,如英商飛特帝亞有限公司(FTDI)的Vinculum-II(VNC2)。Vinculum 是FTDI的嵌入式USB主/從控制器系列的名稱。最新發(fā)布的第二代芯片 VNC2是針對在嵌入式應(yīng)用中實(shí)現(xiàn)USB功能時(shí)的許多關(guān)鍵問題而設(shè)計(jì),并提供完整的單芯片USB解決方案。這款芯片的特點(diǎn)是有兩個(gè)獨(dú)立的可配置的USB 主/從接口,一個(gè)用戶可編程處理器核,具有多種靈活的接口以支持輕松集成到一個(gè)現(xiàn)有的嵌入式設(shè)計(jì)中。使用這種方案的好處在于設(shè)計(jì)者能夠重用其現(xiàn)有設(shè)計(jì)的核心部分,用最小的開發(fā)成本和最快的上市時(shí)間支持增強(qiáng)的產(chǎn)品特征。
進(jìn)一步觀察VNC2的性能,該芯片有2個(gè)獨(dú)立的USB 2.0接口,提供USB主控端或從控端的連接,具有一個(gè)16位哈弗結(jié)構(gòu)CPU核,16K字節(jié)的SRAM存儲器和258K字節(jié)的FLASH用于編程和固件存儲。由兩個(gè)嵌入式的USB主/從控制器以最小的內(nèi)部CPU負(fù)荷實(shí)現(xiàn)完整的USB協(xié)議處理。這樣解放了CPU核,使它可用于用戶處理功能??刂破髦С?個(gè)主要的USB傳輸類型(控制、批處理、中斷和同步),因此可以支持廣泛的USB應(yīng)用。
除了USB接口,VNC2還支持一系列靈活的接口,使之能夠輕松的連接到其他的處理設(shè)備和外設(shè)。所支持的接口包括一個(gè)串行UART接口,用來連接到其它CPU或微控制器,一個(gè)高速FIFO接口,可用于比如一個(gè)ASIC或PLD(可編程邏輯器件)、SPI(串行外設(shè)接口)主從端口、以及8個(gè) PWM(脈沖寬度調(diào)制)通道之間傳輸數(shù)據(jù)以支持相關(guān)電路的控制。圖2為一個(gè)VNC2所提供的靈活連接的例子的細(xì)節(jié)設(shè)計(jì)。
圖2:帶有通訊功能的MP3/媒體播放器接口設(shè)計(jì)。
圖2描述的應(yīng)用是使用FTDI VNC2設(shè)備以對現(xiàn)有處理單元的最小的負(fù)荷提供MP3和視頻播放以及與現(xiàn)有應(yīng)用的通訊功能。
MP3/音頻重放:運(yùn)行在VNC2上的固件代碼用于從USB存儲棒上讀取文件。音頻數(shù)據(jù)傳送個(gè)MP3解碼器用于音頻輸出,同時(shí)顯示屏用于圖像或視頻重放。Vinculum II軟件工具鏈具有與USB閃存接口和與顯示控制器和音頻編解碼SPI接口的設(shè)備驅(qū)動。通信:通過第二個(gè)可用的USB接口可以對應(yīng)用增加進(jìn)一步的功能。這里,通過適當(dāng)?shù)腢SB KEY可以增加通訊設(shè)備類(CDC)來支持藍(lán)牙,3G/GPRS通訊。
對于所有的嵌入式應(yīng)用,無論是采用電池供電還是市電供電的,電源消耗和管理都是關(guān)鍵問題。為了實(shí)現(xiàn)低耗電工作,VNC2支持各種低功耗模式。在典型的工作模式,CPU運(yùn)行在48MHz,VNC2芯片在1.8V核電壓僅消耗25mA(1.8V是從3.3V供電的芯片內(nèi)部產(chǎn)生的)。要進(jìn)一步降低功耗,可以首先通過降低CPU的工作頻率至24MHz或12MHz的方式,其次可采用通過軟件關(guān)閉芯片上不使用的接口的方式。另外還可使用設(shè)備掛起模式。在掛起模式下,VNC2僅消耗128uA電流。這些不同的功耗模式為用戶提供了設(shè)備功耗管理的優(yōu)良的增益控制,幫助嵌入式應(yīng)用獲取優(yōu)化的功耗性能。
軟件接口
在考慮USB應(yīng)用的軟件開發(fā)時(shí),很重要的一點(diǎn)是首先要了解USB軟件的功能。在許多USB連接方案中,有一個(gè)USB主機(jī)(比如PC)和一個(gè) USB從設(shè)備(比如打印機(jī)或USB鍵盤)。在USB從設(shè)備最初連接時(shí),USB主機(jī)(PC)的作用是識別/枚舉這個(gè)設(shè)備。枚舉涉及到從從設(shè)備中讀取USB的參數(shù)和功能信息。從設(shè)備讀來的信息包含廠商/產(chǎn)品ID,支持的傳輸和設(shè)備類型。這個(gè)設(shè)備類型表示了從設(shè)備的功能和數(shù)據(jù)傳輸要求。比方說USB鍵盤(人機(jī)接口設(shè)備)設(shè)備按照他們不同的用法會有不同的功能,對USB存儲器(大容量存儲器類設(shè)備)支持不同的數(shù)據(jù)傳輸。每個(gè)設(shè)備類型會要求不同的軟件設(shè)備驅(qū)動。在 PC應(yīng)用中,操作系統(tǒng)比如Windows執(zhí)行設(shè)備枚舉功能,具有各種驅(qū)動支持不同的USB類型。
在嵌入式應(yīng)用中實(shí)現(xiàn)USB主控功能需要采用類似的方法。集成了USB功能的嵌入式處理設(shè)備需要驅(qū)動以支持枚舉和各種USB設(shè)備類型。有些情況下沒有完整的USB驅(qū)動,需要用戶用盡開發(fā)資源。還有一些特定的設(shè)備結(jié)構(gòu),USB協(xié)議處理是由軟件實(shí)現(xiàn)的,要求設(shè)計(jì)者要么自己開發(fā)要么購買USB協(xié)議棧。這種方式除了開發(fā)和版權(quán)的開銷,USB接口性能也可能被運(yùn)行在設(shè)備CPU上的其他軟件進(jìn)程所限制。
使用VNC2 USB主/從控制器,用戶可受益于一個(gè)優(yōu)化的結(jié)構(gòu),它具有基于USB處理的硬件和軟件驅(qū)動綜合套件,以及在單個(gè)設(shè)備中提供完整USB功能的資源。用戶可以使用Vinculum II軟件工具套件在VNC2上作應(yīng)用開發(fā)。這個(gè)工具有一個(gè)嵌入式RTOS(實(shí)時(shí)操作系統(tǒng))管理下層接口函數(shù),一套設(shè)備驅(qū)動支持不同的硬件接口以及各種應(yīng)用層驅(qū)動。這個(gè)應(yīng)用層驅(qū)動對不同的USB類型設(shè)備提供支持,比如USB HID,USB主機(jī)和USB設(shè)備。還有其他的應(yīng)用驅(qū)動可用于管理FAT文件系統(tǒng)和執(zhí)行磁盤存儲功能。Vinculum II軟件工具套件幫助開發(fā)人員使用這些資源來實(shí)現(xiàn)他們自己的應(yīng)用代碼,允許在VNC2上直接處理用戶數(shù)據(jù),從而不需要在外部MCU或處理器上的主機(jī)處理功能。VNC2的軟件結(jié)構(gòu)圖如圖3所示。[!--empirenews.page--]
圖3:Vinculum-II軟件結(jié)構(gòu)。
Vinculum II軟件開發(fā)工具套件允許用戶針對VNC2上的CPU處理器創(chuàng)建基于C的應(yīng)用程序。這個(gè)工具套件是封裝為一個(gè)集成開發(fā)環(huán)境(IDE),具有標(biāo)準(zhǔn)的代碼編譯,創(chuàng)建,調(diào)試和編輯功能。這個(gè)IDE可從FTDI免費(fèi)獲取,不需要許可證或版權(quán)費(fèi)用。
開發(fā)資源
除了開發(fā)工具,F(xiàn)TDI還開發(fā)了一系列的預(yù)編譯固件鏡像文件。固件鏡像文件能包含通常的USB應(yīng)用相關(guān)的功能,比如對USB存儲設(shè)備的管理和接口,音樂重放,與USB打印機(jī),HUB和HID類型設(shè)備的接口。這些固件鏡像文件已經(jīng)可用于第一代Vinculum芯片VNC1L。預(yù)編譯固件鏡像文件提供一個(gè)備用的應(yīng)用程序,嵌入式系統(tǒng)設(shè)計(jì)者可以展開它或直接用作一個(gè)引用來添加到他們自己的專用程序中。當(dāng)結(jié)合多種特征和前面提到的免費(fèi)的軟件開發(fā)資源,VNC2為嵌入式應(yīng)用提供了一種有成本效益的完整的USB功能,同時(shí)通過把重新設(shè)計(jì)用戶現(xiàn)有設(shè)計(jì)的核心部分的工作量最小化,從而減少了開發(fā)風(fēng)險(xiǎn)。
許多的硬件平臺可用于支持采用FTDI VNC2 USB主/從芯片進(jìn)行USB應(yīng)用的原型和開發(fā)。VNC2 USB主/從控制器有各種封裝形式可用,LQFP和QFN類型的封裝有32腳、48腳和64腳等多種選擇。