新聞中心

        EEPW首頁 > 電源與新能源 > 設計應用 > AT89S52單片機和FAT16文件的SD卡讀寫設計

        AT89S52單片機和FAT16文件的SD卡讀寫設計

        作者: 時間:2014-01-16 來源:網(wǎng)絡 收藏
        個數(shù)、磁盤介質描述、分配單元大小等重要參數(shù)。

        本文引用地址:http://www.104case.com/article/226899.htm

        DBR之后是FAT(File Allocation Table,文件分配記錄表),記錄文件在磁盤上的存儲位置。在Windows系統(tǒng)中,文件存儲的單位是簇而不是字節(jié),1個文件不是連續(xù)地存放于磁盤的某一區(qū)域,而往往分成若干段,像鏈子一樣存放。FAT表記錄了每個文件的起始簇號、后繼簇號和終止簇號。FAT表中的每個表項對應數(shù)據(jù)存儲區(qū)中的1個簇,由于FAT表對文件管理的重要性,F(xiàn)AT表有1個備份。

        DIR是根目錄區(qū),緊接著第2個FAT表(FAT2)之后,記錄著根目錄下每個文件的起始簇號、大小等屬性。操作系統(tǒng)根據(jù)DIR中文件的起始簇號和大小,結合FAT表來定位文件。文件系統(tǒng)中1個文件的存儲示意圖如圖5所示。

        AT89S52單片機和FAT16文件的SD卡讀寫設計3.2 SD卡指令規(guī)范

        通過相應指令與SD卡進行交互。SD卡有特定的指令格式,都是6字節(jié)長,最高有效位(MSB)傳輸優(yōu)先,如圖6所示。

        AT89S52單片機和FAT16文件的SD卡讀寫設計

        SD卡指令的最高2位“01”是SD卡指令的開始標志,最后1位“1”是結束標志。6位的指令是SD卡的指令序號,例如CMD17的6位指令即17的二進制表示010001。指令參數(shù)占4字節(jié),具體內容參照SD卡規(guī)范。7位CRC校檢的生成多項式為G(x)=x7+x3+1。事實上SD卡在進入SPI模式后,不再通過CRC碼來確認指令的傳輸正確與否,指令中的7為CRC校檢,只在SD模式下起作用。因此僅SD卡上電后的第1條切換SPI模式指令CMd0 需要校檢碼,而此校檢碼是固定的0x95,其他指令的CRC均置1即可。SD卡響應有4種格式,不同指令對應不同響應,具體內容可參看SD卡規(guī)范。

        3.3 SD卡讀寫驅動

        3.3.1 SPI時序模擬

        用軟件來模擬SPI總線的具體方法是:將SCK的初始狀態(tài)置0,允許接收后(即CS置0)將SCK置1,這樣由DI線輸出1位數(shù)據(jù)到SD卡;接著再將SCK置0,由DO線從SD卡讀1位數(shù)據(jù)。至此,模擬1位數(shù)據(jù)輸入輸出完成。此后再將SCK置1,依次循環(huán)8次,完成SPI總線1字節(jié)數(shù)據(jù)的輸入輸出。

        以下是本系統(tǒng)軟件模擬SPI時序的匯編代碼。以通用寄存器A作為函數(shù)參數(shù),實現(xiàn)將寄存器A中的數(shù)據(jù)通過SPI總線發(fā)送出去,并將從SPI總線讀到的數(shù)據(jù)存到寄存器A中。

        AT89S52單片機和FAT16文件的SD卡讀寫設計

        3.3.2 SD卡的初始化

        SD卡的初始化流程如圖7所示。SD卡上電延時74個時鐘周期后,單片機向SD卡發(fā)送復位命令CMDO,使SD卡進入SPI模式。之后循環(huán)發(fā)送激活SD卡指令CMD1,直到接收到SD卡響應的第0位為0。

        AT89S52單片機和FAT16文件的SD卡讀寫設計3.3.3 SD卡數(shù)據(jù)塊的讀寫

        完成SD卡的初始化后,就可以對SD卡進行讀寫操作。讀寫操作都是通過指令來完成的:單塊寫命令CMD24,多塊寫命令CMD25;單塊讀命令 CMD17,多塊讀命令CMD18。單塊讀寫時,數(shù)據(jù)塊的長度為512字節(jié),多塊讀寫時SD卡收到1個停止命令CMD12后停止讀寫。圖8、圖9分別是單塊讀、寫SD卡的軟件流程。

        AT89S52單片機和FAT16文件的SD卡讀寫設計

        3.4 文件讀寫

        按照文件系統(tǒng)的文件組織規(guī)范,編寫讀文件函數(shù)和寫文件函數(shù)。FAT16文件讀寫的軟件流程如圖10所示。

        AT89S52單片機和FAT16文件的SD卡讀寫設計



        關鍵詞: AT89S52 單片機 FAT16

        評論


        相關推薦

        技術專區(qū)

        關閉
        主站蜘蛛池模板: 广宗县| 夏邑县| 辽阳县| 紫阳县| 海晏县| 通江县| 伊金霍洛旗| 慈溪市| 广饶县| 郸城县| 西乡县| 福建省| 乐安县| 烟台市| 嵊泗县| 平远县| 拉萨市| 开阳县| 威远县| 万山特区| 邻水| 高淳县| 镇沅| 镇原县| 开江县| 集贤县| 衡水市| 安多县| 江都市| 聂荣县| 高密市| 千阳县| 七台河市| 盈江县| 香河县| 淮北市| 桓台县| 濮阳县| 五指山市| 蒙自县| 庄浪县|