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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > MC9S12UF32的嵌入式文件系統(tǒng)數(shù)據(jù)存儲(chǔ)模塊

          MC9S12UF32的嵌入式文件系統(tǒng)數(shù)據(jù)存儲(chǔ)模塊

          作者: 時(shí)間:2010-04-01 來(lái)源:網(wǎng)絡(luò) 收藏
          內(nèi)部集成的SDHC支持SD卡1.O版本的物理層協(xié)議,所以本使用標(biāo)準(zhǔn)microSD卡(而非SDHC卡),其容量最大為2 GB。這樣的容量已經(jīng)完全可以滿足大多數(shù)應(yīng)用的需求。

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


          (2)與SD卡之間的傳輸
          在完成對(duì)時(shí)鐘頻率和傳輸線寬度的配置之后,通過(guò)發(fā)送相應(yīng)的讀寫命令就可以實(shí)現(xiàn)單片機(jī)與SD卡之間的傳輸了。在單片機(jī)向SD卡寫入數(shù)據(jù)的過(guò)程中,編程者將需要寫入的數(shù)據(jù)寫入SDHC的SDATA寄存器(16位)之后,該數(shù)據(jù)將被轉(zhuǎn)移至發(fā)送數(shù)據(jù)FIFO中。與此同時(shí),只要發(fā)送數(shù)據(jù)FIFO非空,其中的數(shù)據(jù)就會(huì)不斷地通過(guò)數(shù)據(jù)線被寫入SD卡的相應(yīng)位置。在單片機(jī)從SD卡中讀取數(shù)據(jù)的過(guò)程中,SD卡中的數(shù)據(jù)將不斷發(fā)送至接收數(shù)據(jù)FIFO中。只要接收FIFO非空,單片機(jī)就可以不斷地通過(guò)讀SDATA寄存器得到接收數(shù)據(jù)FIFO中的數(shù)據(jù)。
          2.2 DSl2887實(shí)時(shí)鐘
          DSl2887模塊使用數(shù)據(jù)/地址復(fù)用的并行異步總線,可以為單片機(jī)提供100年以內(nèi)的實(shí)時(shí)鐘信息(年/月/日/時(shí)/分/秒)。它內(nèi)部具有石英晶振和鋰電源,首次使用時(shí),需要對(duì)該模塊內(nèi)部的寄存器進(jìn)行相應(yīng)配置,激活晶振使其進(jìn)入工作狀態(tài)。由于DSl2887內(nèi)部帶有鋰電源,所以一旦晶振被激活,即使外部掉電,該模塊依然可以保存并提供正確的實(shí)時(shí)鐘信息。
          設(shè)定DSl2887的時(shí)間和從DSl2887中讀取時(shí)間信息的底層程序比較簡(jiǎn)單,只需參照芯片手冊(cè)對(duì)寄存器進(jìn)行合理配置。但是,需要特別注意的是,在寫時(shí)鐘和讀取時(shí)鐘之前需要鎖存時(shí)鐘信息相關(guān)的buffer,防止在讀寫過(guò)程中由于出現(xiàn)時(shí)鐘信息自動(dòng)更新情況而導(dǎo)致的錯(cuò)誤。中,在每次讀寫實(shí)時(shí)鐘之前,查詢DSl2887內(nèi)部控制寄存器A最高位UIP是否為O,以避免上述錯(cuò)誤的產(chǎn)生。因?yàn)樾酒謨?cè)中給出,一旦UIP=O,那么在244μs內(nèi)實(shí)時(shí)鐘模塊都不會(huì)自動(dòng)更新當(dāng)前的時(shí)鐘信息,而這段時(shí)間足以讓單片機(jī)完成讀寫實(shí)時(shí)鐘的過(guò)程。

          3 FatFS的移植與配置
          3.1 FatFS軟件包簡(jiǎn)介
          采用系統(tǒng),是為了在單片機(jī)能夠?qū)D卡進(jìn)行數(shù)據(jù)讀寫的同時(shí),保證其讀寫的數(shù)據(jù)能夠被大多數(shù)通用設(shè)備識(shí)別。換言之,數(shù)據(jù)在器內(nèi)的組織型式,需要遵循一些已有的工業(yè)標(biāo)準(zhǔn)和規(guī)范。例如使用FAT系統(tǒng),數(shù)據(jù)存儲(chǔ)單元的SD卡取下來(lái)后,可以使用任何標(biāo)準(zhǔn)的讀卡器在windows、Linux等PC機(jī)上讀出。
          當(dāng)前著名的文件系統(tǒng)有若干種選擇,比如EFSL(Embedded Filesystem Library)、uC/FS、/TinyFatFS等。這之中EFSL和FatFs都是開(kāi)放源碼的,具有十分詳盡的文檔和函數(shù)手冊(cè),除錯(cuò)更新也十分及時(shí),在本文的設(shè)計(jì)中我們采用的是FatFS。
          FatFS采用使用ANSI C編寫,具有很好的硬件平臺(tái)獨(dú)立性,使用者只需要對(duì)源程序進(jìn)行簡(jiǎn)單的修改和配置,就可以將其移植到各種系列的單片機(jī)上。此外,它的內(nèi)存開(kāi)銷很小,ROM的占有量在十幾KB的量級(jí),使用者可以根據(jù)不同的應(yīng)用方便的對(duì)代碼進(jìn)行裁減。FatFS支持FATl2、FATl6和FAT32,可以建立獨(dú)立的緩沖區(qū)對(duì)多個(gè)文件進(jìn)行讀寫。FatFs是一個(gè)不斷更新完善的軟件,大量的相關(guān)信息可以從原作者的主頁(yè)上得到(http://elm-chan.org/fsw/ff/00index_e.html),同時(shí)原作者也做了很多性能測(cè)試的工作。
          3.2 FatFS的移植
          可從FatFS的主頁(yè)上下載得到FatFS R0.07版本。FatFS的主程序包含5個(gè)文件,即diskio.c、diskio.h、ff.c、ff.h和integer.h。其中,diskio.c和diskio.h是與底層硬件I/O相關(guān)的函數(shù);ff.c和ff.h是應(yīng)用函數(shù),主要涉及FatFS的配置和裁減;而integer.h中定義了FatFS軟件所使用的各種數(shù)據(jù)類型。
          移植FatFS的過(guò)程中基本不需要對(duì)diskio.h和ff.c進(jìn)行修改。除了核實(shí)integer.h中的數(shù)據(jù)類型定義是否與MC9S12U32數(shù)據(jù)類型相符之外,移植的重點(diǎn)工作在于diskio.c中6個(gè)主要函數(shù)的實(shí)現(xiàn)和ff.h中對(duì)于文件系統(tǒng)的裁減配置。dikio.c包含的6個(gè)接口函數(shù):disk_initial-ize,disk status,disk ioctl,disk read,disk write和disk_fattime。它們分別實(shí)現(xiàn)存儲(chǔ)介質(zhì)的初始化、讀?。瘜懭肴舾蓚€(gè)扇區(qū)的數(shù)據(jù)和獲取實(shí)時(shí)鐘信息的功能。

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)


          評(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); })();