連結(jié)USB閃存盤與PIC微控制器的簡(jiǎn)單方案
背景簡(jiǎn)介
今日USB裝置幾乎無(wú)所不在,市面上充斥著各式各樣的USB閃存盤和各種USB外圍裝置,由于這些裝置大多是屬于USBSlave,應(yīng)用領(lǐng)域也就局限在PC市場(chǎng)。近來(lái)USB閃存盤的價(jià)格快速滑落,刺激出新的應(yīng)用,如何在原有產(chǎn)品上使用USB閃存盤成為許多公司的難點(diǎn)。想要在8與16位微控制器中增加USBHost的功能,設(shè)計(jì)過(guò)程、成本與功耗便成為了重要的考量因素。部份原因源自于這類系統(tǒng)使用的嵌入式控制器,目前尚缺乏適合的接口、資源、以及效率來(lái)連結(jié)USBHost控制器。
在此應(yīng)用范例中,將以VinculumVNC1L智能型USBHost橋接器IC做為一個(gè)例子,說(shuō)明如何為系統(tǒng)控制器PIC16F688增加一個(gè)USB2.0全速連結(jié)埠。使這個(gè)系統(tǒng)能連結(jié)USB閃存盤,并能在耗用最少的設(shè)計(jì)時(shí)間與資源下完成設(shè)計(jì)。
VNC1L簡(jiǎn)介
VNC1L為Vinculum家族的第一顆芯片。此智能型USBHost橋接器采用客制化的處理器,并搭配兩個(gè)加速數(shù)據(jù)傳輸?shù)闹苯觾?nèi)存存取(DMA)引擎及一個(gè)32位數(shù)值協(xié)同處理器,以達(dá)到最高的文件操作效率-且全部整合于一內(nèi)置64Kbyteflash、以及4Kbyte內(nèi)部數(shù)據(jù)SRAM的單一芯片中。Vinculum家族鎖定嵌入式USB控制器市場(chǎng),這類產(chǎn)品僅需少量外部支持組件。Vinculum家族核心的主要特點(diǎn)之一,就是其程序代碼長(zhǎng)度明顯短于一般微控制器實(shí)現(xiàn)該功能代碼的長(zhǎng)度,而降低核心程序代碼的資源后,將可使更多功能能得以收納至芯片內(nèi)部的e-Flash內(nèi)存中。VNC1L可處理整個(gè)USB協(xié)議并內(nèi)建12MHz到48MHz的時(shí)鐘。這些特性恰巧與PIC嵌入式系統(tǒng)形成互補(bǔ)。圖1為此系統(tǒng)之架構(gòu)說(shuō)明,其利用VNC1L連結(jié)一個(gè)小型PIC16F688微控制器及USBType“A”連結(jié)器,進(jìn)而可連接USB閃存盤。
設(shè)計(jì)說(shuō)明
此PIC16F688為系統(tǒng)控制器,由其通用I/O引腳(9、10、11引腳上的RC1、RC0、RA2)來(lái)取得傳感器或其它來(lái)源的數(shù)據(jù),并轉(zhuǎn)換數(shù)據(jù)格式且將串流格式數(shù)據(jù)寫入U(xiǎn)SB閃存盤的文件中,指令與數(shù)據(jù)系通過(guò)TXD(6號(hào)引腳)傳送至VNC1LRXD(32號(hào)引腳)。VNC1L可處理FAT12/16/32文件系統(tǒng)和儲(chǔ)存在USB閃存盤的數(shù)據(jù)。VNC1L通過(guò)28號(hào)針腳的USB2DP和29號(hào)針腳的USB2DM與USB閃存盤進(jìn)行通訊。通過(guò)相同的引腳,數(shù)據(jù)能從USB閃存盤存取,并從VNC1LTXD(31號(hào)引腳)傳送到PIC的RXD(5號(hào)引腳),以供PIC程序使用。
PIC16F688上的程序控制整個(gè)系統(tǒng),此外,由PIC16F688發(fā)出的指令控制其與VNC1L之間的傳輸作業(yè)。VNC1L的標(biāo)準(zhǔn)程序會(huì)解讀并執(zhí)行來(lái)自PIC16F688的指令。以上只是系統(tǒng)的簡(jiǎn)單介紹,若欲完成整個(gè)設(shè)計(jì)還需要更多的資源,而這些組件尚須電源、控制時(shí)鐘的石英晶體以及程序設(shè)計(jì)。
運(yùn)用PIC中第2與第3針腳的20MHz晶體,讓UART接口能達(dá)到比115200bit/s更高的的波特率(baudrate),相對(duì)于使用內(nèi)部8MHz振蕩器最高僅能達(dá)到9600bit/s,因此其能提升系統(tǒng)效率。PIC程序把RC2與RC3I/O引腳模擬成RTS/CTS來(lái)與VNC1L的UART接口連接。
此時(shí),系統(tǒng)需要5伏特/250mA的額定電源,其中對(duì)于USB“A”連結(jié)器提供200mA電流,并為VNC1L提供25mA電流,另25mA電流則用以供電PIC16F688。VNC1L所要求的3.3伏電壓由3.3vLDO穩(wěn)壓器供應(yīng),其中尚有兼容5伏的IO口,能使其連接至PIC,而不需電位切換器。
針對(duì)低功耗應(yīng)用,VNC1L在不使用時(shí)能切換至2mA休眠模式。如欲喚醒該組件,則可通過(guò)UART接口的響鈴偵測(cè)(RI)引腳(38號(hào)引腳)達(dá)成;若其已連接至RXD線路,如圖中所示,則可通過(guò)接續(xù)的偽指令來(lái)喚醒該組件。
此設(shè)計(jì)同樣包含一個(gè)雙色狀態(tài)LED指示燈,其由16與18號(hào)引腳供電。當(dāng)成功登錄USB閃存盤及存取文件系統(tǒng)時(shí),系統(tǒng)便將提出顯示。
VNC1L程序
VNC1L內(nèi)部固化有標(biāo)準(zhǔn)的程序,名為VDAP(VinculumDiskandPeripheral),該程序能解讀從PIC傳來(lái)的指令。這些指令類似DOS指令,如DIR、RD、以及WR等等。指令集亦支持單一字節(jié)的hex指令,更適合由微處理器進(jìn)行控制。
而收錄于PIC程序中的VDAP指令可用來(lái)控制USB閃存盤的存取作業(yè)。典型的指令順序?yàn)榻⑽募?、讀/寫數(shù)據(jù)至文件,之后關(guān)閉文件。
VNC1L與PIC程序開發(fā)
此設(shè)計(jì)含有兩個(gè)燒錄程序的接頭,各個(gè)接頭分別支持器件所需要的開發(fā)環(huán)境。在產(chǎn)品設(shè)計(jì)環(huán)境中,每個(gè)器件可在焊上印刷電路板前被預(yù)先燒錄,因此不需接頭與jumpers。
在正常運(yùn)作模式中,J1與J2應(yīng)接上,其它jumpers應(yīng)為開路狀態(tài)。VNC1L在燒錄時(shí)需移除J1與J2的jumpers,以隔離VNC1LUART的輸入端和PIC輸出端。之后先切斷5伏特電源,然后將TTL-232R-3V3線連結(jié)至H2。通過(guò)已安裝的VPROG程序工具,把線路的USB端連結(jié)到PC,之后接上J4jumper,將VNCL1A的PROG#引角拉低,讓J3暫時(shí)短路以重設(shè)器件,并切換至燒錄模式。完成燒錄后,并請(qǐng)將jumpers設(shè)定回復(fù)至運(yùn)作模式。
PIC的燒錄接頭需連結(jié)至器件的RA0、RA1、以及MCLR#引腳,5伏特?zé)涬妷?電源則通過(guò)接頭傳送至組件。待切斷5伏特電源后,再對(duì)PIC微控制器進(jìn)行燒錄。接頭應(yīng)連結(jié)至如PICKit2等標(biāo)準(zhǔn)PIC開發(fā)環(huán)境,以便利用Microchip的除錯(cuò)與下載工具。
FTDI在網(wǎng)站上(http://www.vinculum.com/projects/SampleCsource.zip)提供了一個(gè)PIC的范例程序。在這個(gè)C范例程序中,PIC將等待USB閃存盤被偵測(cè)出,然后開啟一個(gè)名為hello.txt的檔案?!癏elloWorld”字符串以及換行指令碼和linefeed字符將被寫入文件,待關(guān)閉文件后,USB閃存盤便可移除。
結(jié)論
FTDI的VinculumVNC1L是一個(gè)容易使用、容易設(shè)計(jì)的智能型USBHost橋接器,使得低成本微控制器可輕易地增加USB2.0低/全速的USB接口。在電源方面,VinculumVNC1L僅在USB接口增加少于10%的消耗。類似DOS的指令集,讓傳輸?shù)臄?shù)據(jù)能在微控制器環(huán)境中輕易進(jìn)行編寫與除錯(cuò),伴隨著簡(jiǎn)易的硬件周邊則大大地減輕工程師的負(fù)擔(dān),為嵌入式系統(tǒng)提供一個(gè)USB主控端設(shè)計(jì)方案不再是件艱難的工作。這使得低成本、高普及率的USB閃存盤能作為系統(tǒng)的儲(chǔ)存媒體,并能提供現(xiàn)場(chǎng)升級(jí)軟件之功能。在本文討論范圍外,值得附帶一提的是,除了高容量?jī)?chǔ)存裝置以外,VNC1L還能用來(lái)連結(jié)許多其它USB外圍裝置。
VDAP程序及描述完整指令集之文件,請(qǐng)由FTDI的Vinculum網(wǎng)站下載(http://www.vinculum.com).
評(píng)論