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