新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于單片機的SD卡FAT文件系統讀寫設計

        基于單片機的SD卡FAT文件系統讀寫設計

        作者: 時間:2011-11-18 來源:網絡 收藏

        3.4讀寫單塊數據
        單塊數據的讀取是先通過單片機發送CMDl7(CMD_READ_SINGLE_BLOCK)命令,以指定數據塊起始位地址作為參數,如果讀取成功會返回1個R1命令作為響應。然后發送1個起始數據命令,接著發送單塊字節數量的數據并接收SPI數據寄存器SPIDR中的數據,最后是2字節CRC校驗。

        d.jpg
        SD卡單塊數據的寫入與讀取相似,通過單片機發送CMD24(CMD_WRITE_SINGLE_BLOCK)命令,以SD卡指定數據塊起始位地址作為參數,如果讀取成功SD卡會返回1個R1命令作為響應。然后發送1個起始數據命令,接著發送單塊字節數量的需寫入數據,最后是2字節CRC校驗。
        3.5 信息讀取
        為了SD卡文件數據管理方便并且與PC機之間兼容得更好,同時考慮到SD卡自身容量的限制,選擇FATl6文件系統對SD卡信息進行管理。
        為了方便管理和擴展性開發,對SD卡進行了分區。模擬硬盤模式創建出了MBR區(主引導扇區)與DBR區(操作系統引導記錄區),在向下兼容的同時實現了對分區過的SD卡的讀寫。
        SD卡數據可分為5部分:MBR區、DBR區、FAT區、DIR區和DATA區。MBR區是主引導區,位于整個SD卡的第1單塊上。在總共512字節的主引導扇區中,MBR只占用了其中的446個字節,另外的64個字節是DPT(Disk Partition Table,分區表),最后2個字節“55 AA”是分區的結束標志。這整體構成了SD卡的主引導扇區。DBR是操作系統引導記錄區,是操作系統可以直接訪問的第1個扇區,它包括1個引導程序和1個被稱為BPB(Bios Parameter Block)的本分區參數記錄表。BPB參數塊記錄著本分區的起始扇區、結束扇區、文件存儲格式、硬盤介質描述符、根目錄大小、FAT、個數,分配單元的大小等重要參數。
        的分區有如下幾個部分:保留區,存放FAT文件系統的重要參數和引導程序;FAT表,記錄簇使用情況;根目錄區,記錄根目錄信息。
        本文中單片機對FAT系統的讀寫利用的是MBR區上的DPT分區表信息,用于找到FAT分區。然后通過FAT分區的DBR區上的BPB分區參數記錄表信息找到根目錄,讀取根目錄信息并通過FAT表中的文件簇信息實現文件的管理。
        研究中為方便代碼的移植和優化,在FAT初始化的時候將讀寫扇區函數指針指向 SD卡的讀寫函數,并使用了2個結構體來存儲SD卡的MBR與DBR信息。但鑒于單片機自身的內存容量,又建立了1個SimpleFat.c程序文件,只存儲程序所需的幾個地址常量:StartMbrAddress(MBR起始地址)、StartDbrAddress(DBR起始地址)、StartFatlAddress(FATl表起始地址)以及SeePerClu(簇扇區數量),大大減小了單片機內存的開銷。

        51單片機相關文章:51單片機教程


        單片機相關文章:單片機教程


        單片機相關文章:單片機視頻教程


        單片機相關文章:單片機工作原理


        晶振相關文章:晶振原理
        鎖相環相關文章:鎖相環原理


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 珠海市| 华亭县| 怀来县| 大洼县| 长白| 屯昌县| 班戈县| 轮台县| 高密市| 万源市| 兴隆县| 和平区| 印江| 平罗县| 庆城县| 天柱县| 三亚市| 潮安县| 临泉县| 呼伦贝尔市| 内乡县| 卓资县| 留坝县| 来宾市| 沂南县| 鲜城| 蕉岭县| 饶阳县| 衡阳县| 西乌| 龙岩市| 新营市| 建德市| 冷水江市| 保定市| 石城县| 鹤峰县| 江北区| 昭苏县| 江城| 乌鲁木齐县|