大容量輔助存儲系統(tǒng)的設(shè)計
Unsigned char fCHundredth;
Unsigned char fCTime[2];
Unsigned char fCDate[2];
Unsigned char fADate[2];
Unsigned char fHighClust[2];
Unsigned char fMTime[2];
Unsigned char fMDate[2];
Unsigned char fLowCluster[2];
Unsigned char fFileSize[4];
}
文件目錄表之后就是數(shù)據(jù)區(qū)DATA,用來存放文件數(shù)據(jù),占用大部分的磁盤空間。數(shù)據(jù)的 讀寫以扇區(qū)為單位,一個簇所包含的扇區(qū)數(shù)由BPB參數(shù)來決定,通過根目錄找到對應(yīng)的文件 名,格式化完成或進(jìn)行寫操作時,就要新建對應(yīng)文件名的文件分配表區(qū)和根目錄區(qū),通過文 件分配表區(qū)中的保存的簇號,完成對應(yīng)的數(shù)據(jù)讀寫,完成一個簇的操作后,根據(jù)文件分配表 的鏈?zhǔn)浇Y(jié)構(gòu),找到文件的待操作的下一個簇的簇號,進(jìn)行相應(yīng)的操作,直到文件結(jié)束。
2.3 數(shù)據(jù)塊的寫操作
完成SD卡的初始化之后即可進(jìn)行它的讀寫操作。SD卡的讀寫操作都是通過發(fā)送SD卡命令 完成的。SPI總線模式支持單塊(CMD24)和多塊(CMD25)寫操作。單塊寫操作的數(shù)據(jù)塊長 度只能是512字節(jié)。單塊寫入時,命令為CMD24,當(dāng)應(yīng)答為0時說明可以寫入數(shù)據(jù)。SD卡對每 個發(fā)送給自己的數(shù)據(jù)塊都通過一個應(yīng)答命令確認(rèn),它為1個字節(jié)長,當(dāng)?shù)?位為00101時,表 明數(shù)據(jù)塊被正確寫入SD卡。多塊寫是單塊連續(xù)寫的循環(huán)操作,只是寫單塊和寫多塊開始時的 令牌包有所不同,多塊操作是從指定位置開始寫下去,直到SD卡收到一個停止命令CMD12時 才停止。多塊數(shù)據(jù)寫時序如圖3所示。
3 結(jié)束語
通過對SPI模式下SD卡寫操作和文件系統(tǒng)的研究,實現(xiàn)了單片機(jī)對SD卡FAT32文件的操 作,包括文件的創(chuàng)建、寫操作等。該課題研究在數(shù)據(jù)采集系統(tǒng)方面有著廣泛的應(yīng)用前景,項 目實施以來直接經(jīng)濟(jì)效益20萬元。本文創(chuàng)新點:為數(shù)據(jù)采集系統(tǒng)提供了一種非易失性存儲的 解決方案,采集到的大量數(shù)據(jù)會以標(biāo)準(zhǔn)數(shù)據(jù)文件的格式記錄到SD卡上。
評論