問(wèn)題與挑戰(zhàn)
作為現(xiàn)今普遍接受的移動(dòng)存儲(chǔ)工具,USB閃存盤(pán)在各種嵌入式系統(tǒng)中也獲得廣泛應(yīng)用。
本文介紹低成本PIC控制器通過(guò)USB2.0全速接口與閃存盤(pán)進(jìn)行連接的實(shí)現(xiàn)過(guò)程,并著重針對(duì)PIC微控制器和VinculumUSB接口芯片說(shuō)明有關(guān)嵌入式接口的硬件設(shè)計(jì)以及程序的編寫(xiě)。
如今各種閃存盤(pán)和USB外設(shè)價(jià)格已相當(dāng)?shù)土⒈粡V泛應(yīng)用到帶USB接口的PC中。而要將它們應(yīng)用于8位或16位嵌入式系統(tǒng)中,如何解決成本和功耗等問(wèn)題才是關(guān)鍵。這其中的原因主要是這類(lèi)系統(tǒng)中用到的嵌入式控制器,如Microchip公司推出并得到廣泛應(yīng)用的PIC系列器件具有多種存儲(chǔ)密度和外設(shè),但由于缺乏接口、資源和性能,無(wú)法作為USB的主控制器。
在實(shí)際應(yīng)用中,可用VNC1LVinculum控制器來(lái)實(shí)現(xiàn)這種連接,該芯片提供了作為系統(tǒng)控制器的PIC和USB2.0全速端口之間的接口,順利實(shí)現(xiàn)與USB閃存盤(pán)的連接,同時(shí)該方案具有很短的執(zhí)行時(shí)間和最小系統(tǒng)成本。Vinculum基于定制處理器內(nèi)核,有兩個(gè)直接存儲(chǔ)訪問(wèn)(DMA)引擎以加快數(shù)據(jù)傳輸和32位數(shù)字協(xié)處理器優(yōu)化文件系統(tǒng)的計(jì)算,所有這些都在一個(gè)芯片里完成,芯片帶有64K嵌入式閃存和4K內(nèi)部數(shù)據(jù)SRAM。
Vinculum專(zhuān)門(mén)針對(duì)嵌入式USB控制器市場(chǎng),只需要很少外部支持元件。Vinculum核與常用MCU核相比的一個(gè)主要特點(diǎn)是其代碼長(zhǎng)度大幅縮短,減少內(nèi)核在代碼上的開(kāi)銷(xiāo),因此可以在單芯片e-Flash存儲(chǔ)器里裝入更多功能,這一特點(diǎn)也正好可以彌補(bǔ)基于PIC的嵌入式系統(tǒng)的不足。系統(tǒng)原理圖見(jiàn)圖1,通過(guò)Vinculum將小型PICMCU連到USB“A”連接器上,然后就可以連接USB閃存盤(pán)了。
搭建模擬系統(tǒng)
PIC是系統(tǒng)控制器,通過(guò)通用I/O引腳(引腳9、10、11上的RC0、RC1、RA2)接收從傳感器或其他來(lái)源傳過(guò)來(lái)的數(shù)據(jù),對(duì)數(shù)據(jù)格式進(jìn)行轉(zhuǎn)換,然后用數(shù)據(jù)流將數(shù)據(jù)寫(xiě)入閃存盤(pán)上的文件里。命令和數(shù)據(jù)通過(guò)TXD(引腳6)傳到VNC1L的RXD(引腳32),VNC1L在USB閃存盤(pán)上生成FAT12/16/32文件并存儲(chǔ)數(shù)據(jù),并通過(guò)USB2DM(引腳28)和USB2DP(引腳29)和閃存盤(pán)通信。數(shù)據(jù)也用同樣引腳讀出,然后將數(shù)據(jù)通過(guò)VNC1L的TXD(引腳31)傳到PIC的PXD(引腳5)以供系統(tǒng)固件使用。
在PIC引腳2和3之間接入一個(gè)20MHz晶振可在其UART接口獲得高達(dá)115200bit/s波特率,而使用內(nèi)部8MHz振蕩器只能獲得最高9600bit/s波特率,因此加接晶振可提高系統(tǒng)性能。PIC的IO引腳RC2和RC3都被固件使用,以模擬與VNC1LUART連接的RTS/CTS握手信號(hào)。系統(tǒng)由PIC上的固件控制,數(shù)據(jù)傳輸則由PIC發(fā)出的指令控制,該指令由Vinculum上的標(biāo)準(zhǔn)固件進(jìn)行解釋。雖然說(shuō)起來(lái)很簡(jiǎn)單,但完成設(shè)計(jì)還有其他一些工作要做,例如器件還需要電源、控制時(shí)鐘的晶振以及編程。
系統(tǒng)需要標(biāo)準(zhǔn)的5V250mA電源(PSU),可為USB“A”連接器提供高達(dá)200mA電流,同時(shí)為VNC1L和PIC各提供25mA驅(qū)動(dòng)電流。VNC1L采用3.3v電源,由一個(gè)3.3vLDO調(diào)壓器提供,它帶有一個(gè)5v容限IO引腳,可使其連到PIC而不需要用到電平轉(zhuǎn)換器。在低功耗應(yīng)用中,VNC1L不工作時(shí)可進(jìn)入2mA睡眠模式,如需喚醒器件,只需觸發(fā)RART接口的振鈴指示(RI)引腳(引腳38)。如果它連到RXD線上(如圖所示),就可以用一個(gè)空命令觸發(fā)以喚醒器件。
該設(shè)計(jì)還包括一個(gè)雙色LED指示器,由引腳16和18推動(dòng)。它可以顯示是否成功連上USB閃存盤(pán)并可以訪問(wèn)文件系統(tǒng)。
VNC1L和PIC編程
該設(shè)計(jì)包括兩個(gè)程序頭文件,每個(gè)器件需要一個(gè),同時(shí)還要有相應(yīng)的開(kāi)發(fā)環(huán)境。對(duì)于生產(chǎn)設(shè)計(jì)而言,兩個(gè)器件都要在插入PCB之間預(yù)先編程,以減少連接頭和跳線。
在正常工作狀態(tài)下,J1和J2需要連上,而其他跳線保持?jǐn)嚅_(kāi)。對(duì)VNC1L編程的時(shí)候,將J1和J2跳線移開(kāi)以使VNC1LUART輸入與PIC輸出分開(kāi)。把5VPSU斷開(kāi),然后將TTL-232R-3V3線纜接到H2上,將該線纜的USB端接到PC上,而在PC上安裝好VPROG編程軟件。將J4連上以便將VNC1L的PROG#引腳拉低,并短暫將J3短路以使器件復(fù)位使其進(jìn)入編程狀態(tài)。編程完成后,記住恢復(fù)跳線設(shè)定到工作位置。
對(duì)PIC編程時(shí)編程頭連到器件的RA0、RA1和MCLR#引腳,通過(guò)編程頭提供5V編程電壓。PIC微控制器編程前先將5VPSU斷開(kāi),編程頭連到標(biāo)準(zhǔn)PIC編程環(huán)境如PICKit2上,可以使用Microchip的調(diào)試與下載工具。
本文所附的C代碼實(shí)例顯示PIC等待閃存盤(pán)檢測(cè),然后打開(kāi)一個(gè)名為hello.txt的文件,接著將“HelloWorld”以及回車(chē)換行符寫(xiě)入該文件中,最后關(guān)閉文件并等待將閃存盤(pán)移開(kāi)。
VNC1L固件
VNC1L采用標(biāo)準(zhǔn)固件進(jìn)行編程,稱(chēng)為VDAP,它可以解釋來(lái)自于PIC的命令。這些VDAP命令有些類(lèi)似于DOS指令,如DIR、RD以及WR等,命令集也支持容易被微處理器控制的單字節(jié)十六進(jìn)制命令,VDAP命令包含在PIC固件中,可控制USB閃存盤(pán)的接入,典型命令序列可以是生成一個(gè)文件、從文件中讀出/寫(xiě)入數(shù)據(jù)然后關(guān)閉文件。
結(jié)論
FTDI的VinculumVNC1L提供了一個(gè)低成本微控制器與USB2.0低/全速外設(shè)之間的接口,易于使用和編程,其指令集類(lèi)似于DOS命令,可在微控制器環(huán)境下很容易地編寫(xiě)調(diào)試數(shù)據(jù)以及傳輸例程,同時(shí)設(shè)計(jì)簡(jiǎn)單,使嵌入式系統(tǒng)能以較低成本實(shí)現(xiàn)USB主機(jī)功能。因此用戶將可以采用低成本通用USB閃存盤(pán)作為系統(tǒng)存儲(chǔ)媒介,而且還能在現(xiàn)場(chǎng)進(jìn)行軟件升級(jí)。此外VNC1L還可用于連接除了大容量存儲(chǔ)設(shè)備之外的很多其他USB外設(shè),不過(guò)這部分內(nèi)容在本文討論范圍之外。
VinculumIC給USB接口增加不到10%的功耗,對(duì)系統(tǒng)而言更低,但能以非常容易及直接的方式為便攜式設(shè)備增加USB2.0主機(jī)控制器端口。VDAP固件以及介紹完整指令集的文件可從FTDI的Vinculum網(wǎng)站()下載。
責(zé)任編輯:gt
-
微控制器
+關(guān)注
關(guān)注
48文章
7334瀏覽量
150087 -
控制器
+關(guān)注
關(guān)注
112文章
15879瀏覽量
175336 -
usb
+關(guān)注
關(guān)注
60文章
7772瀏覽量
262358
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論