本文以Vinculum VNC1L智能型USB Host橋接器為例,說明如何為系統控制器PIC16F688增加USB 2.0全速連接埠以便系統能連接USB閃存盤,并在最少的設計時間與資源下完成此設計。討論內容包括PIC微控制器和VNC1L智能型USB Host橋接器芯片的嵌入式接口硬件設計,并說明如何在PIC微控制器進行程序開發,以便讓USB閃存盤能在廣泛的嵌入式應用中用作可移除儲存媒體。 VNC1L為Vinculum家族的第一顆芯片,它采用定制化處理器,并搭配兩個加速數據傳輸的直接內存存取(DMA)引擎和一個32位數字協同處理器,以達到最高的文件操作效率。 它還在單一芯片中集成了64kB e-Flash和4kB內部數據SRAM。Vinculum家族鎖定嵌入式USB控制器市場,這類產品僅需少量外部支持元件。Vinculum家族核心的主要特點之一,是其程序代碼長度明顯短于一般微控制器實現該功能所需代碼的長度。這樣,減少核心程序代碼的資源后,便可讓更多功能代碼保存芯片內部的e-Flash內存中。 VNC1L還能處理整個USB協議并內建了12MHz到48MHz時鐘。這些特性與PIC嵌入式系統形成互補。在如圖所示的電路中,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程序使用。 圖:USB閃存盤驅動器與PIC微控制器的接口電路 PIC16F688內的程序控制整個系統。此外,由PIC16F688發出的指令控制其與VNC1L之間的傳輸操作。VNC1L的標準程序會解讀并執行來自PIC16F688的指令。以上只是系統的簡單介紹,若欲完成整個設計還需要更多的資源,而這些組件尚須電源、控制時鐘的石英晶體以及程序設計。 利用PIC中第2引腳與第3引腳的20MHz晶體能讓UART接口能達到比115,200bps更高的的波特率,而使用內部8MHz振蕩器最高僅能達到9,600bps,因此該設計能提升系統效率。PIC程序把RC2與RC3 I/O引腳模擬成RTS/CTS來與VNC1L的UART接口進行連接。 該系統需要額定5V/250mA電源,其中對USB"A"連接器提供200mA電流,并為VNC1L提供25mA電流,另外25mA電流則供給PIC16F688。VNC1L所要求的3.3V電壓由3.3V LDO穩壓器提供。它具有兼容5伏的I/O口,能使其連接至PIC,而不需電位切換器。 針對低功耗應用,VNC1L在不使用時能切換至2mA休眠模式。如欲喚醒VNC1,可通過UART接口的響鈴偵測(RI)引腳(38號引腳)實現,若它們已連接至RXD線路,則可通過連續的偽指令來喚醒。 此設計同樣包含一個雙色狀態LED指示燈,由16與18引腳供電。當成功登錄USB閃存盤及存取文件系統時,系統便給出顯示。 1 VNC1L與PIC程序開發 VNC1L內部固化有標準的程序,名為VDAP。該程序能解讀從PIC傳來的指令。這些指令類似DOS指令,如DIR、RD、以及WR等,指令集亦支持單一字節的hex指令,更適合由微處理器進行控制。位于PIC程序中的VDAP指令可用來控制USB閃存盤的存取操作。典型的指令順序為建立文件、讀/寫數據至文件、關閉文件。 該設計包含兩個燒錄程序的接頭,各個接頭分別支持器件所需要的開發環境。在產品設計環境中,每個器件可以在被焊在印刷電路板前被預先燒錄,因此不需接頭與連接器。 在正常運作模式中,J1與J2應接上,其它連接器應為開路狀態。VNC1L在燒錄時需移除J1與J2的連接器,以隔離VNC1L UART的輸入端和PIC輸出端,然后切斷5伏特電源,將TTL-232R-3V3線連接至H2。通過已安裝的VPROG程序工具,把線路的USB端連接到PC,之后接上J4連接器,將VNCL1A的PROG#引角拉低,讓J3暫時短路以重設器件,并切換至燒錄模式。完成燒錄后,應將連接器設定操作模式。 |