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