淺談USB閃存盤(pán)與PIC微控制器系統的連接
——
作為現今普遍接受的移動(dòng)存儲工具,USB閃存盤(pán)在各種嵌入式系統中也獲得廣泛應用。
本文介紹低成本PIC控制器通過(guò)USB2.0全速接口與閃存盤(pán)進(jìn)行連接的實(shí)現過(guò)程,并著(zhù)重針對PIC微控制器和VinculumUSB接口芯片說(shuō)明有關(guān)嵌入式接口的硬件設計以及程序的編寫(xiě)。
如今各種閃存盤(pán)和USB外設價(jià)格已相當低廉,并被廣泛應用到帶USB接口的PC中.而要將它們應用于8位或16位嵌入式系統中,如何解決成本和功耗等問(wèn)題才是關(guān)鍵.這其中的原因主要是這類(lèi)系統中用到的嵌入式控制器,如Microchip公司推出并得到廣泛應用的PIC系列器件具有多種存儲密度和外設,但由于缺乏接口、資源和性能,無(wú)法作為USB的主控制器。
在實(shí)際應用中,可用VNC1LVinculum控制器來(lái)實(shí)現這種連接,該芯片提供了作為系統控制器的PIC和USB2.0全速端口之間的接口,順利實(shí)現與USB閃存盤(pán)的連接,同時(shí)該方案具有很短的執行時(shí)間和最小系統成本。Vinculum基于定制處理器內核,有兩個(gè)直接存儲訪(fǎng)問(wèn)(DMA)引擎以加快數據傳輸和32位數字協(xié)處理器優(yōu)化文件系統的計算,所有這些都在一個(gè)芯片里完成
,芯片帶有64K嵌入式閃存和4K內部數據SRAM。
Vinculum專(zhuān)門(mén)針對嵌入式USB控制器市場(chǎng),只需要很少外部支持元件。Vinculum核與常用MCU核相比的一個(gè)主要特點(diǎn)是其代碼長(cháng)度大幅縮短,減少內核在代碼上的開(kāi)銷(xiāo),因此可以在單芯片e-Flash存儲器里裝入更多功能,這一特點(diǎn)也正好可以彌補基于PIC的嵌入式系統的不足。系統原理圖見(jiàn)圖1,通過(guò)Vinculum將小型PICMCU連到USB“A”連接器上,然后就可以連接USB閃存盤(pán)了。
搭建模擬系統
PIC是系統控制器,通過(guò)通用I/O引腳(引腳9、10、11上的RC0、RC1、RA2)接收從傳感器或其他來(lái)源傳過(guò)來(lái)的數據,對數據格式進(jìn)行轉換,然后用數據流將數據寫(xiě)入閃存盤(pán)上的文件里。命令和數據通過(guò)TXD(引腳6)傳到VNC1L的RXD(引腳32),VNC1L在USB閃存盤(pán)上生成FAT12/16/32文件并存儲數據,并通過(guò)USB2DM(引腳28)和USB2DP(引腳29)和閃存盤(pán)通信。數據也用同樣引腳讀出,然后將數據通過(guò)VNC1L的TXD(引腳31)傳到PIC的PXD(引腳5)以供系統固件使用。
在PIC引腳2和3之間接入一個(gè)20MHz晶振可在其UART接口獲得高達115200bit/s波特率,而使用內部8MHz振蕩器只能獲得最高9600bit/s波特率,因此加接晶振可提高系統性能。PIC的IO引腳RC2和RC3都被固件使用,以模擬與VNC1LUART連接的RTS/CTS握手信號。系統由PIC上的固件控制,數據傳輸則由PIC發(fā)出的指令控制,該指令由Vinculum上的標準固件進(jìn)行解釋。雖然說(shuō)起來(lái)很簡(jiǎn)單,但完成設計還有其他一些工作要做,例如器件還需要電源、控制時(shí)鐘的晶振以及編程。
系統需要標準的5V250mA電源(PSU),可為USB“A”連接器提供高達200mA電流,同時(shí)為VNC1L和PIC各提供25mA驅動(dòng)電流。VNC1L采用3.3v電源,由一個(gè)3.3vLDO調壓器提供,它帶有一個(gè)5v容限IO引腳,可使其連到PIC而不需要用到電平轉換器。在低功耗應用中,VNC1L不工作時(shí)可進(jìn)入2mA睡眠模式,如需喚醒器件,只需觸發(fā)RART接口的振鈴指示(RI)引腳(引腳38)。如果它連到RXD線(xiàn)上(如圖所示),就可以用一個(gè)空命令觸發(fā)以喚醒器件。
該設計還包括一個(gè)雙色LED指示器,由引腳16和18推動(dòng)。它可以顯示是否成功連上USB閃存盤(pán)并可以訪(fǎng)問(wèn)文件系統。

VNC1L和PIC編程
該設計包括兩個(gè)程序頭文件,每個(gè)器件需要一個(gè),同時(shí)還要有相應的開(kāi)發(fā)環(huán)境。對于生產(chǎn)設計而言,兩個(gè)器件都要在插入PCB之間預先編程,以減少連接頭和跳線(xiàn)。
在正常工作狀態(tài)下,J1和J2需要連上,而其他跳線(xiàn)保持斷開(kāi)。對VNC1L編程的時(shí)候,將J1和J2跳線(xiàn)移開(kāi)以使VNC1LUART輸入與PIC輸出分開(kāi)。把5VPSU斷開(kāi),然后將TTL-232R-3V3線(xiàn)纜接到H2上,將該線(xiàn)纜的USB端接到PC上,而在PC上安裝好VPROG編程軟件。將J4連上以便將VNC1L的PROG#引腳拉低,并短暫將J3短路以使器件復位使其進(jìn)入編程狀態(tài)。編程完成后,記住恢復跳線(xiàn)設定到工作位置。
對PIC編程時(shí)編程頭連到器件的RA0、RA1和MCLR#引腳,通過(guò)編程頭提供5V編程電壓。PIC微控制器編程前先將5VPSU斷開(kāi),編程頭連到標準PIC編程環(huán)境如PICKit2上,可以使用Microchip的調試與下載工具。
本文所附的C代碼實(shí)例顯示PIC等待閃存盤(pán)檢測,然后打開(kāi)一個(gè)名為hello.txt的文件,接著(zhù)將“HelloWorld”以及回車(chē)換行符寫(xiě)入該文件中,最后關(guān)閉文件并等待將閃存盤(pán)移開(kāi)。

VNC1L固件
VNC1L采用標準固件進(jìn)行編程,稱(chēng)為VDAP,它可以解釋來(lái)自于PIC的命令。這些VDAP命令有些類(lèi)似于DOS指令,如DIR、RD以及WR等,命令集也支持容易被微處理器控制的單字節十六進(jìn)制命令,VDAP命令包含在PIC固件中,可控制USB閃存盤(pán)的接入,典型命令序列可以是生成一個(gè)文件、從文件中讀出/寫(xiě)入數據然后關(guān)閉文件。
結論
FTDI的VinculumVNC1L提供了一個(gè)低成本微控制器與USB2.0低/全速外設之間的接口,易于使用和編程,其指令集類(lèi)似于DOS命令,可在微控制器環(huán)境下很容易地編寫(xiě)調試數據以及傳輸例程,同時(shí)設計簡(jiǎn)單,使嵌入式系統能以較低成本實(shí)現USB主機功能。因此用戶(hù)將可以采用低成本通用USB閃存盤(pán)作為系統存儲媒介,而且還能在現場(chǎng)進(jìn)行軟件升級。此外VNC1L還可用于連接除了大
容量存儲設備之外的很多其他USB外設,不過(guò)這部分內容在本文討論范圍之外。
VinculumIC給USB接口增加不到10%的功耗,對系統而言更低,但能以非常容易及直接的方式為便攜式設備增加USB2.0主機控制器端口。VDAP固件以及介紹完整指令集的文件可從FTDI的Vinculum網(wǎng)站(http://www.vinculum.com)下載。
linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)
評論