基于ATmega32的SD卡上FAT32文件系統(tǒng)數(shù)據(jù)讀取
O 引言
SD卡(secure digital memory card,安全數(shù)碼卡)是一種基于半導(dǎo)體快閃記憶器的新一代記憶設(shè)備,它被廣泛地于便攜式裝置上使用,例如數(shù)碼相機(jī)、個人數(shù)碼助理(PDA)和多媒體播放器等。SD卡由日本松下、東芝及美國SanDisk公司于1999年8月共同開發(fā)研制。大小猶如一張郵票的SD記憶卡,重量只有2 g,但卻擁有高記憶容量、快速數(shù)據(jù)傳輸率、極大的移動靈活性以及很好的安全性。
本文正是通過AVR單片機(jī)經(jīng)過軟硬結(jié)合的設(shè)計方案,來讀取SD卡上FAT32文件系統(tǒng)中的數(shù)據(jù),F(xiàn)AT32是微軟公司開發(fā)的新一代的文件系統(tǒng),支持更大的存儲容量和長達(dá)255個字符的文件名,也可以通過串口轉(zhuǎn)USB接口芯片通過計算機(jī)來訪問存儲器中的數(shù)據(jù),從而實現(xiàn)多渠道的立體的訪問方式,進(jìn)一步提升了資源的利用率。
1 文件系統(tǒng)
1.1 FAT文件系統(tǒng)簡介
文件配置表(FAT)是一種由微軟公司發(fā)明的并帶有部分專利的文件系統(tǒng),供MS-DOS使用,也是非NT內(nèi)核的微軟窗口使用的文件系統(tǒng)。FAT文件系統(tǒng)考慮當(dāng)時計算機(jī)效能有限,所以未被復(fù)雜化,因而被幾乎所有個人計算機(jī)的操作系統(tǒng)支持。這些特性使它成為理想的軟盤和記憶卡的文件系統(tǒng)。但FAT有一個嚴(yán)重的缺點:當(dāng)文件被刪除并且在同一位置被寫入新數(shù)據(jù),他們的片段通常是分散的,減慢了讀寫速度。磁盤碎片重整是一種解決方法,但必須經(jīng)常重組來保持FAT文件系統(tǒng)的效率。
1.2 FAT文件系統(tǒng)升級版
FAT32實際上是文件分區(qū)表采取的一種形式,它是相對于FATl6而言的。它可以大大地節(jié)約磁盤空間。文件在磁盤上是以簇的方式存放的,簇里存放了一個文件就不能再存放另外的文件。
FAT32最大的優(yōu)點是可以支持的磁盤大小達(dá)到2 TB(2 048 GB),但是不能支持小于512 MB的分區(qū)。由于采用了更小的簇,F(xiàn)AT32文件系統(tǒng)可以更有效率地保存信息。FAT32可以更高效地使用空間。FAT32使用較小的簇(即,對于大小在8 GB以內(nèi)的驅(qū)動器,使用4 KB的簇),這與大的FAT或FAT16驅(qū)動器相比,可將磁盤空間的使用率提高10 9,6~15%。
FAT32更穩(wěn)定可靠。FAT32可以重新定位根文件夾,而且它使用文件分配表的備份副本,而不是使用默認(rèn)副本。此外,F(xiàn)AT32驅(qū)動器上的引導(dǎo)記錄也得到擴(kuò)展,包括了關(guān)鍵數(shù)據(jù)結(jié)構(gòu)的備份副本。因此,與現(xiàn)有的FAT16驅(qū)動器相比,F(xiàn)AT32驅(qū)動器不容易受單點故障的影響。
FAT32更靈活。FAT32驅(qū)動器上的根文件夾是普通的簇鏈,因此它可以位于驅(qū)動器上的任何位置。以前對根文件夾數(shù)量的限制不復(fù)存在。此外,可以禁用文件分配表鏡像,這樣就可以讓文件分配表的副本而不是讓第一個文件分配表處于活動狀態(tài)。這些功能允許您動態(tài)重調(diào)FAT32分區(qū)的大小。
2 硬件設(shè)計
2.1 芯片概述
ATmega32是基于增強(qiáng)的AVR RISC結(jié)構(gòu)的低功耗8位CMOS微控制器。由于其先進(jìn)的指令集以及單時鐘周期指令執(zhí)行時間,ATmega32的數(shù)據(jù)吞吐率高達(dá)1 MIPS/MHz,從而可以緩減系統(tǒng)在功耗和處理速度之間的矛盾。ATmega32 AVR內(nèi)核具有豐富的指令集和32個通用工作寄存器。所有的寄存器都直接與算邏單元(ALU)相連接,使得一條指令可以在一個時鐘周期內(nèi)同時訪問2個獨立的寄存器。這種結(jié)構(gòu)大大提高了代碼效率,并且具有比普通的CISC微控制器最高至10倍的數(shù)據(jù)吞吐率。
PL2303用于實現(xiàn)USB和標(biāo)準(zhǔn)RS 232串行端口之間的轉(zhuǎn)換,2個獨立的大型緩沖用于兩種總線的連接,大型數(shù)據(jù)緩沖器用于USB的批量數(shù)據(jù)傳輸,自動握手模式可用于串行通訊,因而可以達(dá)到遠(yuǎn)大于標(biāo)準(zhǔn)UART控制器的波特率。PL2303支持USB電源管理和遠(yuǎn)程喚醒協(xié)議。本設(shè)計中PL2303芯片主要應(yīng)用在將主控單元的下載線與供電模塊合二為一,大大簡化了系統(tǒng)的設(shè)計復(fù)雜度。
NOKIA 5110液晶顯示器,傳統(tǒng)的點陣式液晶顯示器,不內(nèi)置英文及漢字字庫,因此NOKIA 5110液晶顯示的過程,需要單片機(jī)把從存儲器中讀取到的ASCII碼值轉(zhuǎn)換成對應(yīng)的英文及漢字點陣信息,然后通過串口把點陣信息傳輸?shù)揭壕э@示器上進(jìn)行顯示。
2.2 硬件設(shè)計
硬件單元包括:AVR主控ATmega32單元模塊,SD卡接口模塊,液晶顯示接口模塊,串口轉(zhuǎn)USB接口。
2.2.1 主控電路設(shè)計
主控電路(如圖1所示)主要負(fù)責(zé)將從輸入接口中讀到的數(shù)據(jù)轉(zhuǎn)換成對應(yīng)的字模碼。
2.2.2 存儲系統(tǒng)模塊及下載接口設(shè)計
SD卡接口如圖2所示。
2.2.3 液晶顯示模塊設(shè)計
液晶顯示接口如圖3所示。
2.2.4 USB轉(zhuǎn)換接口模塊設(shè)計
計算機(jī)端串行轉(zhuǎn)USB接口的設(shè)計如圖4所示。
3 軟件設(shè)計
系統(tǒng)軟件設(shè)計主要包括AVR單片機(jī)主控程序,中斷服務(wù)控制子程序,LCD控制子程序,編碼轉(zhuǎn)化子程序等幾個模塊。單片機(jī)端程序運行流程如圖5所示,計算機(jī)端運行程序流程如圖6所示。
4 總結(jié)及展望
由于本設(shè)計中采用的都是一些通用器件,是對通用器件的一次嘗試性擴(kuò)展應(yīng)用,通過LCD設(shè)計的人機(jī)接口實現(xiàn)設(shè)備的友好操作,能夠通過單片機(jī)和計算機(jī)進(jìn)行雙向立體式的讀寫,能夠?qū)崿F(xiàn)在線的實時的FAT32文件系統(tǒng)資源管理,因此本系統(tǒng)具有一定社會價值和應(yīng)用價值。