導航:首頁 > 操作系統 > 單片機fat文件系統

單片機fat文件系統

發布時間:2022-07-07 22:44:20

A. 電腦硬碟的類型FAT和FAT32是什麼意思它們有什麼區別

現在硬碟的容量是越來越大了,大家肯定對分區是越來越頭痛,到底是選擇FAT32還是NTFS,當然FAT是沒有選擇的必要了!
很多朋友都了解,FAT32分區格式有32G容量限制,但在實際應用中,很多朋友發現,使用FAT32分區格式分了大於32G的分區,卻一點問題沒有,這究竟是怎麼一回事呢?
經過仔細了解,原來WINDOWS對FAT32的支持最大可以達到單個分區2T,最小512M,但為什麼很多資料卻明白的寫明WINDOWS最大隻支持32G的FAT32,這原來是由簇的大小確定的,使用越小的簇,存儲效率越高,更能有效的管理硬碟空間!舉個例,同樣2G的硬碟分區,FAT和FAT32的簇大小分別是32KB和4KB,所以FAT32要優於FAT,而簇大於32KB的話,硬碟的效率會非常低,浪費也很大,對文件的安全性也不好,所以FAT最大隻支持2G的硬碟空間(WIN2K和WINXP可以分4G的FAT分區)!
FAT和FAT32主分區與簇的大小匯整如下,我們可仔細做個比較:

分區大小 FAT16簇大小FAT32簇大小
16MB-32MB 2KB 不支持
32MB-127MB 2KB 512bytes
128MB-255MB 4KB 512bytes
256MB-259MB 8KB 512bytes
260MB-511MB 8KB 4KB
512MB-1023MB 16KB 4KB
1024MB-2047MB32KB 4KB
2048MB-8GB 不支持 4KB
8GB-16GB 不支持 8KB
16GB-32GB 不支持 16KB
32GB以上 不支持 32KB

從上表可以看出,FAT32分區超過32G過後,簇的大小也超過了32KB,和FAT超過2G時一樣,效率和管理也大打折扣,所以盡量不要使用超過32G以上的FAT32分區,雖然不支持超過4GB的單個文件也是一個原因!

而Win 2000的NTFS文件系統,當分區的大小在2G以下時,簇的大小都比相應的FAT32簇小。當分區的大小在2G以上時(2G~2T),簇的大小都為4KB。相比之下,NTFS可以比FAT32更有效地管理磁碟空間,最大限度地避免了磁碟空間的浪費。

B. 單片機中使用Fat32文件系統,怎樣自連續創建文件

我近期在使用AVR MEGE32 + VS1003 + SD卡製作MP3播放機。雖然已經學習了呵呵,以前用單片機讀寫過SD卡。雖然看過一些關於FAT32文件系統的參考資料,,lzBIAo

C. SD的FAT文件系統

基於AT89C52單片機的SD卡讀寫設計
[日期:2008-8-4] 來源:中電網 作者:武漢理工大學自動化學院 蘇義鑫 程 敏 武漢大學 何力 [字體:大 中 小]

前言

長期以來,以Flash Memory為存儲體的SD卡因具備體積小、功耗低、可擦寫以及非易失性等特點而被廣泛應用於消費類電子產品中。特別是近年來,隨著價格不斷下降且存儲容量不斷提高,它的應用范圍日益增廣。當數據採集系統需要長時間地採集、記錄海量數據時,選擇SD卡作為存儲媒質是開發者們一個很好的選擇。在電能監測以及無功補償系統中,要連續記錄大量的電壓、電流、有功功率、無功功率以及時間等參數,當單片機採集到這些數據時可以利用SD作為存儲媒質。本文主要介紹了SD卡在電能監測及無功補償數據採集系統中的應用方案。

設計方案

應用AT89C52讀寫SD卡有兩點需要注意。首先,需要尋找一個實現AT89C52單片機與SD卡通訊的解決方案;其次,SD卡所能接受的邏輯電平與AT89C52提供的邏輯電平不匹配,需要解決電平匹配問題。

通訊模式

SD卡有兩個可選的通訊協議:SD模式和SPI模式。SD模式是SD卡標準的讀寫方式,但是在選用SD模式時,往往需要選擇帶有SD卡控制器介面的MCU,或者必須加入額外的SD卡控制單元以支持SD卡的讀寫。然而,AT89C52單片機沒有集成SD卡控制器介面,若選用SD模式通訊就無形中增加了產品的硬體成本。在SD卡數據讀寫時間要求不是很嚴格的情況下,選用SPI模式可以說是一種最佳的解決方案。因為在SPI模式下,通過四條線就可以完成所有的數據交換,並且目前市場上很多MCU都集成有現成的SPI介面電路,採用SPI模式對SD卡進行讀寫操作可大大簡化硬體電路的設計。

雖然AT89C52不帶SD卡硬體控制器,也沒有現成的SPI介面模塊,但是可以用軟體模擬出SPI匯流排時序。本文用SPI匯流排模式讀寫SD卡。

電平匹配

SD卡的邏輯電平相當於3.3V TTL電平標准,而控制晶元AT89C52的邏輯電平為5V CMOS電平標准。因此,它們之間不能直接相連,否則會有燒毀SD卡的可能。出於對安全工作的考慮,有必要解決電平匹配問題。

要解決這一問題,最根本的就是解決邏輯器件介面的電平兼容問題,原則主要有兩條:一為輸出電平器件輸出高電平的最小電壓值,應該大於接收電平器件識別為高電平的最低電壓值;另一條為輸出電平器件輸出低電平的最大電壓值,應該小於接收電平器件識別為低電平的最高電壓值。

一般來說,通用的電平轉換方案是採用類似SN74ALVC4245的專用電平轉換晶元,這類晶元不僅可以用作升壓和降壓,而且允許兩邊電源不同步。但是,這個方案代價相對昂貴,而且一般的專用電平轉換晶元都是同時轉換8路、16路或者更多路數的電平,相對本系統僅僅需要轉換3路來說是一種資源的浪費。

考慮到SD卡在SPI協議的工作模式下,通訊都是單向的,於是在單片機向SD卡傳輸數據時採用晶體管加上拉電阻法的方案,基本電路如圖1所示。而在SD卡向單片機傳輸數據時可以直接連接,因為它們之間的電平剛好滿足上述的電平兼容原則,既經濟又實用。

這個方案需要雙電源供電(一個5V電源、一個3.3V電源供電),3.3V電源可以用AMS1117穩壓管從5V電源穩壓獲取。

硬體介面設計

SD卡提供9Pin的引腳介面便於外圍電路對其進行操作,9Pin的引腳隨工作模式的不同有所差異。在SPI模式下,引腳1(DAT3)作為SPI片選線CS用,引腳2(CMD)用作SPI匯流排的數據輸出線MOSI,而引腳7(DAT0)為數據輸入線MISO,引腳5用作時鍾線(CLK)。除電源和地,保留引腳可懸空。

本文中控制SD卡的MCU是ATMEL公司生產的低電壓、高性能CMOS 8位單片機AT89C52,內含8K位元組的可反復擦寫的只讀程序存儲器和256位元組的隨機存儲數據存儲器。由於AT89C52隻有256位元組的數據存儲器,而SD卡的數據寫入是以塊為單位,每塊為512位元組,所以需要在單片機最小系統上增加一片RAM。本系統中RAM選用存儲器晶元HM62256,容量為32K。對RAM進行讀寫時,鎖存器把低8位地址鎖存,與P2口的8位地址數據構成16位地址空間,從而可使SD卡一次讀寫512位元組的塊操作。系統硬體圖如圖2所示。

軟體設計

SPI工作模式

SD卡在上電初期自動進入SD匯流排模式,在此模式下向SD卡發送復位命令CMD0。如果SD卡在接收復位命令過程中CS低電平有效,則進入SPI模式,否則工作在SD匯流排模式。

對於不帶SPI串列匯流排介面的AT89C52單片機來說,用軟體來模擬SPI匯流排操作的具體做法是:將P1.5口(模擬CLK線)的初始狀態設置為1,而在允許接收後再置P1.5為0。這樣,MCU在輸出1位SCK時鍾的同時,將使介面晶元串列左移,從而輸出1位數據至AT89C52單片機的P1.7(模擬MISO線),此後再置P1.5為1,使單片機從P1.6(模擬MOSI線)輸出1位數據(先為高位)至串列介面晶元。至此,模擬1位數據輸入輸出便完成。此後再置P1.5為0,模擬下1位數據的輸入輸出,依此循環8次,即可完成1次通過SPI匯流排傳輸8位數據的操作。

本文的實現程序把SPI匯流排讀寫功能集成在一起,傳遞的val變數既是向SPI寫的數據,也是從SPI讀取的數據。具體程序如下:(程序是在Keil uVision2的編譯環境下編寫)

sbit CS=P3^5;

sbit CLK= P1^5;

sbit DataI=P1^7;

sbit DataO=P1^6;

#define SD_Disable() CS=1 //片選關

#define SD_Enable() CS=0 //片選開

unsigned char SPI_TransferByte(unsigned char val)

{

unsigned char BitCounter;

for(BitCounter=8; BiCounter!=0; BitCounter--)

{ CLK=0;

DataI=0; // write

if(val&0x80) DataI=1;

val<<=1;

CLK=1;

if(DataO)val|=1; // read

}

CLK=0;

return val;

}

SD卡的初始化

對SD卡進行操作首先要對SD卡進行初始化,初始化的過程中設置SD卡工作在SPI模式,其流程圖如圖3所示。

在復位成功之後可以通過CMD55和ACMD41判斷當前電壓是否在工作范圍內。主機還可以繼續通過CMD10讀取SD卡的CID寄存器,通過CMD16設置數據Block長度,通過CMD9讀取卡的CSD寄存器。從CSD寄存器中,主機可獲知卡容量,支持的命令集等重要參數。SD卡初始化的C語言程序如下:

unsigned char SD_Init(void)

{ unsigned char retry,temp;

unsigned char i;

for (i=0;i<0x0f;i++)

{ SPI_TransferByte(0xff); //延遲74個以上的時鍾

}

SD_Enable(); //開片選

SPI_TransferByte(SD_RESET); //發送復位命令

SPI_TransferByte(0x00);

SPI_TransferByte(0x00);

SPI_TransferByte(0x00);

SPI_TransferByte(0x00);

SPI_TransferByte(0x95);

SPI_TransferByte(0xff);

SPI_TransferByte(0xff);

retry=0;

do{ temp=Write_Command_SD(SD_INIT,0);

//發送初始化命令

retry++;

if(retry==100) //重試100次

{SD_Disable(); //關片選

return(INIT_CMD1_ERROR);

//如果重試100次失敗返回錯誤號

}

}while(temp!=0);

SD_Disable(); //關片選

return(TRUE); //返回成功

}

數據塊的讀寫

完成SD卡的初始化之後即可進行它的讀寫操作。SD卡的讀寫操作都是通過發送SD卡命令完成的。SPI匯流排模式支持單塊(CMD24)和多塊(CMD25)寫操作,多塊操作是指從指定位置開始寫下去,直到SD卡收到一個停止命令CMD12才停止。單塊寫操作的數據塊長度只能是512位元組。單塊寫入時,命令為CMD24,當應答為0時說明可以寫入數據,大小為512位元組。SD卡對每個發送給自己的數據塊都通過一個應答命令確認,它為1個位元組長,當低5位為00101時,表明數據塊被正確寫入SD卡。

在需要讀取SD卡中數據的時候,讀SD卡的命令字為CMD17,接收正確的第一個響應命令位元組為0xFE,隨後是512個位元組的用戶數據塊,最後為2個位元組的CRC驗證碼。

可見,讀寫SD卡的操作都是在初始化後基於SD卡命令和響應完成操作的,寫、讀SD卡的程序流程圖如圖4和圖5所示。

結束語

實驗結果表明單片機使用12MHz的晶體振盪器時,讀寫速度和功耗都基本令人滿意,可以應用於對讀寫速度要求不高的情況下。本文詳細闡述了用AT89C52單片機對SD卡進行操作的過程,提出了一種不帶SD卡控制器,MCU讀寫SD卡的方法,實現了SD卡在電能監測及無功補償數據採集系統中的用途。

D. FAT32文件系統是寫入SD卡中還是寫入單片機中

在這里的文件系統,不是說SD卡的文件系統是什麼,而是說這個單片機系統以什麼方式儲存文件,是以FAT32方式儲存,那麼單片機就要運行支持FAT32文件系統的函數。來與FAT32格式的,SD卡,硬碟等硬體進行讀寫文件。。。。明白了嗎?是指單片機里加入了FAT32的支持函數。。。所以你說的對啊。。當然這個函數是要單片機運行的,也是寫到單片機里的。。。。。

E. FAT文件系統由哪幾部分構成

le:文件分配表)

FAT32
這種格式採用32位的文件分配表,使其對磁碟的管理能力大大增強,突破了FAT16對每一個分區的容量只有2GB的限制。可以支持的磁碟大小達到2TB(2048GB),運用FAT32的分區格式後,用戶可以將一個大硬碟定義成一個分區,而不必分為幾個分區使用,大大方便了對硬碟的管理工作。而且,FAT32還具有一個最大的優點是:在一個不超過8GB的分區中,FAT32分區格式的每個簇容量都固定為4KB,與FAT16相比,可以大大地減少硬碟空間的浪費,提高了硬碟利用效率。
目前,支持這一磁碟分區格式的操作系統有win 97、win 98和win 2000。但是,這種分區格式也有它的缺點,首先是採用FAT32格式分區的磁碟,由於文件分配表的擴大,運行速度比採用FAT16格式分區的硬碟要慢;另外,由於dos系統和某些早期的應用軟體不支持這種分區格式,所以採用這種分區格式後,就無法再使用老的dos操作系統和某些舊的應用軟體了。

NTFS是Windows NT引入的新型文件系統,它具有許多新特性。NTFS中,卷中所有存放的數據均在一個叫$MFT的文件中,叫主文件表(Master File Table)。而$MFT則由文件記錄(File Record)數組構成。File Record的大小一般是固定的,通常情況下均為1KB,這個概念相當於Linux中的inode。File Record在$MFT文件中物理上是連續的,且從0開始編號。$MFT僅供File System本身組織、架構文件系統使用,這在NTFS中稱為元數據(Metadata)。

F. 讀寫FAT32文件系統的單片機程序

由於單片機種類不一,代碼也不同,我建議你了解、認識FAT32文件系統,把它爛在心裡,只有這樣才能完成各種任務。

閱讀全文

與單片機fat文件系統相關的資料

熱點內容
文件夾變成了 瀏覽:560
linuxpython綠色版 瀏覽:431
怎麼下載小愛同學音箱app 瀏覽:554
python佔位符作用 瀏覽:76
javajdbcpdf 瀏覽:543
php網頁模板下載 瀏覽:192
python試講課pygame 瀏覽:409
安居客的文件夾名稱 瀏覽:677
家裡伺服器如何玩 瀏覽:451
網站源碼使用視頻 瀏覽:748
stc89c52單片機最小系統 瀏覽:452
郵件安全證書加密 瀏覽:416
雲伺服器如何訪問百度 瀏覽:279
常州電信伺服器dns地址 瀏覽:839
用小方塊製作解壓方塊 瀏覽:42
圖像壓縮編碼實現 瀏覽:68
特色功能高拋低吸線副圖指標源碼 瀏覽:71
西方哲學史pdf羅素 瀏覽:874
python最常用模塊 瀏覽:184
溫州直播系統源碼 瀏覽:112