新聞中心

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

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

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

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


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

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

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


        評論


        相關(guān)推薦

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

        關(guān)閉
        主站蜘蛛池模板: 海安县| 大埔县| 潜江市| 武隆县| 邯郸县| 政和县| 永安市| 温州市| 抚松县| 镇赉县| 公主岭市| 临沂市| 临城县| 霸州市| 洛扎县| 应城市| 维西| 五华县| 大港区| 喀什市| 安徽省| 彰化市| 新巴尔虎右旗| 阳朔县| 拉萨市| 鞍山市| 景德镇市| 泸定县| 巴彦淖尔市| 田林县| 永寿县| 道真| 财经| 和田市| 天全县| 新丰县| 高唐县| 阿拉善左旗| 西城区| 麻江县| 武城县|