目前U盤(pán)以其體積小、易攜帶、容量大、使用方便等特點(diǎn)成為最常用的移動(dòng)存儲(chǔ)設(shè)備之一。但是一直以來(lái)人們對(duì)U盤(pán)的使用僅限于U盤(pán)與計(jì)算機(jī)之間的通訊。如果要實(shí)現(xiàn)多個(gè)U盤(pán)的內(nèi)容相互轉(zhuǎn)儲(chǔ)必須通過(guò)計(jì)算機(jī)問(wèn)接完成,比較麻煩,且無(wú)法滿足人們出門(mén)在外需要隨時(shí)隨地轉(zhuǎn)儲(chǔ)數(shù)據(jù)的要求。本文針對(duì)這一需求,設(shè)計(jì)了一款以C8051FD40單片機(jī)為核心的U盤(pán)轉(zhuǎn)儲(chǔ)器,實(shí)現(xiàn)不通過(guò)計(jì)算機(jī)直接完成兩個(gè)U盤(pán)之間的數(shù)據(jù)交換,具有體積小、傳輸速度快、操作方便、硬件綜合成本低等優(yōu)點(diǎn)。
1 系統(tǒng)硬件設(shè)計(jì)
1.1 系統(tǒng)總體結(jié)構(gòu)與工作原理
系統(tǒng)由電源模塊、USB接口轉(zhuǎn)儲(chǔ)模塊、控制模塊、鍵盤(pán)模塊和液晶顯示模塊等組成,如圖1所示。C8051F040微控制單元外接兩個(gè)CH375 U盤(pán)模塊,通過(guò)在單片機(jī)內(nèi)部開(kāi)辟一個(gè)數(shù)據(jù)緩沖區(qū),直接調(diào)用子程序庫(kù),負(fù)責(zé)將一個(gè)U盤(pán)中選中的文件數(shù)據(jù)傳送到另一個(gè)U盤(pán)中。液晶和外部鍵盤(pán)實(shí)現(xiàn)人機(jī)接口,通過(guò)鍵盤(pán)的上翻、下翻、選擇、復(fù)制等按鍵,選中要轉(zhuǎn)存的文件,并在液晶模塊中顯示文件名、文件大小等相關(guān)信息。人機(jī)交互界面友好、操作簡(jiǎn)便。
圖1 系統(tǒng)結(jié)構(gòu)框圖
1.2 CH375 U盤(pán)模塊
采用振南電子開(kāi)發(fā)的CH375 U盤(pán)讀寫(xiě)模塊,該模塊體積小巧,僅3.3x2.0 cm2。模塊供電為5 V,配有指示燈,工作時(shí)指示燈被點(diǎn)亮。模塊使用USB主從機(jī)控制器CH375B,采用并行方式驅(qū)動(dòng),可以實(shí)現(xiàn)U盤(pán)的讀寫(xiě)。共需要13根信號(hào)線(5根控制線8根數(shù)據(jù)線)。
通過(guò)該模塊提供的znFAT,一種單片機(jī)上的FAT32文件系統(tǒng)解決方案,能夠輕松地實(shí)現(xiàn)U盤(pán)上的各種文件級(jí)的應(yīng)用。主要包括文件扇區(qū)的定位、文件打開(kāi)、信息修改、文件關(guān)閉、文件刪除、文件讀、文件寫(xiě)、磁盤(pán)信息查詢(xún)等一些對(duì)文件的基本操作。該模塊具有體積小,價(jià)格較低,使用方便的特點(diǎn)。通過(guò)該模塊很容易通過(guò)單片機(jī)實(shí)現(xiàn)對(duì)兩個(gè)U盤(pán)中的相關(guān)文件的轉(zhuǎn)移。
CH375 U盤(pán)讀寫(xiě)模塊與C8051F040單片機(jī)的連接如圖2所示。C8051F040通過(guò)CS選中U盤(pán)模塊,U盤(pán)模塊則通過(guò)INT以中斷方式與單片機(jī)進(jìn)行通信。DO~D7為CH375 U盤(pán)模塊與單片機(jī)的并行通信數(shù)據(jù)線,單片機(jī)通過(guò)AO、RD、WR控制信號(hào)控制CH375U盤(pán)模塊。D+、D-為CH375 U盤(pán)模塊與 USB存儲(chǔ)設(shè)備的串行接口。通過(guò)CH375 U盤(pán)模塊可以很容易地實(shí)現(xiàn)單片機(jī)與USB存儲(chǔ)設(shè)備直接的數(shù)據(jù)轉(zhuǎn)儲(chǔ)。
圖2 CH375 U盤(pán)讀寫(xiě)模塊與C8051F040單片機(jī)的連接
1. 3 液晶顯示模塊
本系統(tǒng)使用122x32點(diǎn)陣的MGLS12232液晶顯示模塊,模塊內(nèi)置兩塊2.560位的RAM和兩片SED1520控制器,分別由E1、E2兩個(gè)選通信號(hào)控制左右兩半屏的顯示。圖形液晶顯示模塊有兩種連接方式:一種為直接訪問(wèn)方式,另一種為間接控制方式。本系統(tǒng)是采用直接控制方式,該方式將液晶顯示模塊的接口作為存儲(chǔ)器或I/O設(shè)備直接掛接在單片機(jī)總線上。該模塊體積小、價(jià)格較低且通過(guò)該液晶模塊能夠滿足對(duì)一般文件夾名、文件名和文件信息的顯示。
1.4 鍵盤(pán)模塊
鍵盤(pán)模塊是3x3矩陣式鍵盤(pán)結(jié)構(gòu),采用Button按鍵,分別定義了上電、復(fù)位、上翻、下翻、選擇、復(fù)制、粘貼等按鍵,以最少的按鍵實(shí)現(xiàn)文件轉(zhuǎn)儲(chǔ)的各種操作。
1.5 C8051F040單片機(jī)控制模塊
C8051F040單片機(jī)控制模塊是本系統(tǒng)的核心控制模塊。該單片機(jī)具有豐富的片內(nèi)資源和強(qiáng)大的控制功能:與8051完全兼容,最大系統(tǒng)時(shí)鐘頻率為24 MHz,70%指令的執(zhí)行時(shí)間為1或2個(gè)系統(tǒng)時(shí)鐘周期。豐富的中斷源,擴(kuò)展的中斷系統(tǒng)向CIP-51提供20個(gè)中斷源,一個(gè)中斷驅(qū)動(dòng)的系統(tǒng)需要較少的MCU干預(yù),因而有更高的執(zhí)行效率,這么多的中斷源完全能滿足本系統(tǒng)的所有外設(shè)。通用串行總線(USB)功能控制器,有8個(gè)靈活的端點(diǎn)管道,集成收發(fā)器和1K FIFO RAM;片內(nèi)存儲(chǔ)較大,CIP-51的SFR地址空間可包含多達(dá)256個(gè)SFR頁(yè),通過(guò)SFR分頁(yè),CIP-51MCU可以控制大量用于控制和配置片內(nèi)外設(shè)所需的SFR。串口資源豐富,具有兩個(gè)增強(qiáng)型全雙工UART、一個(gè)增強(qiáng)型SPI總線和SMBus/I2C。每種串行總線都完全用硬件實(shí)現(xiàn),都能向CIP-51產(chǎn)生中斷,因此需要很少的CPU干預(yù)。這些串總線不“共享”定時(shí)器、中斷或端口I/O等資源,可以使用任何一個(gè)或同時(shí)使用多個(gè)。
該模塊的功能是:通過(guò)在單片機(jī)內(nèi)部開(kāi)辟一個(gè)數(shù)據(jù)緩沖區(qū)緩存兩個(gè)U盤(pán)之間要轉(zhuǎn)移的文件數(shù)據(jù),并通過(guò)兩個(gè)CH375 U盤(pán)模塊控制U盤(pán)文件的打開(kāi)、讀取、寫(xiě)入和關(guān)閉,實(shí)現(xiàn)文件數(shù)據(jù)的轉(zhuǎn)移工作。該控制單元還可以將外圍鍵盤(pán)發(fā)來(lái)的中斷信息進(jìn)行處理,以實(shí)現(xiàn)文件的選擇等對(duì)單片機(jī)的控制。通過(guò)控制一個(gè)MGLS12232液晶顯示模塊來(lái)顯示一些相關(guān)的文件信息。
2 系統(tǒng)軟件設(shè)計(jì)
2.1 外設(shè)控制方式
本系統(tǒng)采用CH375 U盤(pán)模塊,該模塊附帶znFAT,單片機(jī)上的FAT32文件系統(tǒng)解決方案。從而減少了繁雜的Fat32文件系統(tǒng)方面的編程,由于CH375 U盤(pán)模塊配帶文件系統(tǒng)及文件操作子程序,通過(guò)單片機(jī)主程序調(diào)用比較容易實(shí)現(xiàn)文件名、文件信息的液晶顯示,以及文件的選擇與轉(zhuǎn)移操作。
由于C8051F040單片機(jī)的中斷資源豐富,并且中斷具有以下優(yōu)點(diǎn):
1)分時(shí)操作。CPU可以分時(shí)為多個(gè)I/O設(shè)備服務(wù),提高了計(jì)算機(jī)的利用率。
2)實(shí)時(shí)響應(yīng)。CPU能夠及時(shí)處理應(yīng)用系統(tǒng)的隨機(jī)事件,系統(tǒng)的實(shí)時(shí)性大大增強(qiáng)。
3)可靠性高。CPU具有處理設(shè)備故障及掉電等突發(fā)事件的能力,從而使系統(tǒng)的可靠性提高。
綜上所述,本系統(tǒng)的所有外設(shè)鍵盤(pán)均采用中斷控制方式,文件轉(zhuǎn)移也用中斷方式控制。這樣C8051F040的系統(tǒng)資源利用效率有了很大的提高。
2.2 文件轉(zhuǎn)儲(chǔ)方案
首先在C8051F040單片機(jī)內(nèi)部開(kāi)辟一個(gè)緩沖區(qū),當(dāng)需要轉(zhuǎn)存文件時(shí),首先選中一個(gè)U盤(pán)中的文件,當(dāng)單擊復(fù)制及粘貼按鍵后,會(huì)通過(guò)中斷自動(dòng)調(diào)用相關(guān)的程序,想將該文件打開(kāi),并讀取文件的數(shù)據(jù)與開(kāi)辟的緩沖區(qū)中,然后把緩沖區(qū)的數(shù)據(jù)存儲(chǔ)到另一個(gè)U盤(pán)相應(yīng)目錄下的新建的同名文件中。
系統(tǒng)總流程圖如圖3所示。系統(tǒng)上電后,對(duì)C8051F040單片機(jī)內(nèi)部開(kāi)辟的緩沖區(qū)進(jìn)行初始化,并使液晶屏顯示初始界面,之后進(jìn)入等待U盤(pán)插入的狀態(tài),當(dāng)?shù)却欢螘r(shí)間后,若沒(méi)用U盤(pán)插入,則顯示“請(qǐng)插入U(xiǎn)盤(pán)”的提示信息。當(dāng)U盤(pán)個(gè)數(shù)為一個(gè)或兩個(gè)時(shí),開(kāi)始讀取U盤(pán)信息,并在液晶屏上顯示基本的U盤(pán)信息。之后,C8051F040單片機(jī)等待鍵盤(pán)操作,根據(jù)鍵盤(pán)輸入的編碼調(diào)用相應(yīng)的中斷程序,處理完后,繼續(xù)等待鍵盤(pán)的中斷信號(hào)。
圖3 系統(tǒng)總流程圖
3 聯(lián)機(jī)調(diào)試
在USB轉(zhuǎn)儲(chǔ)器的兩個(gè)USB接口分別接甲、乙兩個(gè)U盤(pán),液晶顯示屏能夠顯示甲U盤(pán)里的文件,通過(guò)手動(dòng)操作轉(zhuǎn)儲(chǔ)器上的鍵盤(pán)按鈕可以選擇甲U盤(pán)里的文件,并可將其轉(zhuǎn)移到乙U盤(pán)里。在這次USB轉(zhuǎn)儲(chǔ)器的制作過(guò)程中比較難的是對(duì)設(shè)備端的程序進(jìn)行調(diào)試。由于USB協(xié)議有嚴(yán)格要求,這就使程序必須在有效的時(shí)間內(nèi)對(duì)某些請(qǐng)求或者狀態(tài)進(jìn)行,否則USB將無(wú)法正常工作。因此在調(diào)試過(guò)程中,較多的借助串口輸出程序輸出的一些信息來(lái)輔助調(diào)試,定位問(wèn)題所在。
調(diào)試工作主要分為兩步,首先是要能顯示U盤(pán)里面的文件,借助PC調(diào)試軟件(從網(wǎng)上下載的Bus Hound)將設(shè)備端的USB協(xié)議調(diào)通,然后加上U盤(pán)寫(xiě)入U(xiǎn)盤(pán)顯示程序,在液晶屏里可以看到U盤(pán)里的文件名;第二步是轉(zhuǎn)儲(chǔ),在單片機(jī)里寫(xiě)入轉(zhuǎn)儲(chǔ)程序進(jìn)行調(diào)試。通過(guò)鍵盤(pán)按鈕選擇可以實(shí)現(xiàn)轉(zhuǎn)儲(chǔ)文件。
4 結(jié)束語(yǔ)
目前市場(chǎng)上雖有單片機(jī)讀寫(xiě)U盤(pán)的功能模塊,但只能夠?qū)崿F(xiàn)簡(jiǎn)單的讀功能,還不能夠?qū)崿F(xiàn)兩個(gè)U盤(pán)之間的直接相互傳輸和顯示。本文設(shè)計(jì)的U盤(pán)轉(zhuǎn)儲(chǔ)器經(jīng)實(shí)驗(yàn)表明具有很強(qiáng)的實(shí)用性和可操作性,人們可以在戶(hù)外不借助計(jì)算機(jī)很方便地完成一個(gè)U盤(pán)到另外一個(gè)U盤(pán)的文件轉(zhuǎn)儲(chǔ)。由于采用USB接口傳輸速度非???,完全能夠滿足普通用戶(hù)的需要。系統(tǒng)采用STM封裝,具有外形小巧、方便佩戴等優(yōu)點(diǎn),是一款廉價(jià)實(shí)用的電子產(chǎn)品。本系統(tǒng)目前的不足是能管理的USB存儲(chǔ)設(shè)備只有兩個(gè),這是本系統(tǒng)將來(lái)需要進(jìn)一步完善的地方。