<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > HCS12X單片機(jī)的SD卡FAT文件系統(tǒng)讀寫(xiě)設(shè)計(jì)

          HCS12X單片機(jī)的SD卡FAT文件系統(tǒng)讀寫(xiě)設(shè)計(jì)

          作者: 時(shí)間:2010-11-15 來(lái)源:網(wǎng)絡(luò) 收藏

          3.4讀寫(xiě)單塊數(shù)據(jù)
          SD卡單塊數(shù)據(jù)的讀取是先通過(guò)發(fā)送CMDl7(CMD_READ_SINGLE_BLOCK)命令,以SD卡指定數(shù)據(jù)塊起始位地址作為參數(shù),如果讀取成功SD卡會(huì)返回1個(gè)R1命令作為響應(yīng)。然后發(fā)送1個(gè)起始數(shù)據(jù)命令,接著發(fā)送單塊字節(jié)數(shù)量的數(shù)據(jù)并接收SPI數(shù)據(jù)寄存器SPIDR中的數(shù)據(jù),最后是2字節(jié)CRC校驗(yàn)。

          本文引用地址:http://www.ex-cimer.com/article/173141.htm

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



          關(guān)鍵詞: 單片機(jī)

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();