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