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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于AVR單片機(jī)和串口的SD卡讀取平臺(tái)的設(shè)計(jì)

          基于AVR單片機(jī)和串口的SD卡讀取平臺(tái)的設(shè)計(jì)

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

          O 引言
          SD卡(secure digital memory card,安全數(shù)碼卡)是一種基于半導(dǎo)體快閃記憶器的新一代記憶設(shè)備,它被廣泛地于便攜式裝置上使用,例如數(shù)碼相機(jī)、個(gè)人數(shù)碼助理(PDA)和多媒體播放器等。SD卡由日本松下、東芝及美國(guó)SanDisk公司于1999年8月共同開(kāi)發(fā)研制。大小猶如一張郵票的SD記憶卡,重量只有2 g,但卻擁有高記憶容量、快速數(shù)據(jù)傳輸率、極大的移動(dòng)靈活性以及很好的安全性。
          本文正是通過(guò)經(jīng)過(guò)軟硬結(jié)合的設(shè)計(jì)方案,來(lái)讀取SD卡上FAT32文件系統(tǒng)中的數(shù)據(jù),F(xiàn)AT32是微軟公司開(kāi)發(fā)的新一代的文件系統(tǒng),支持更大的存儲(chǔ)容量和長(zhǎng)達(dá)255個(gè)字符的文件名,也可以通過(guò)串口轉(zhuǎn)USB接口芯片通過(guò)計(jì)算機(jī)來(lái)訪問(wèn)存儲(chǔ)器中的數(shù)據(jù),從而實(shí)現(xiàn)多渠道的立體的訪問(wèn)方式,進(jìn)一步提升了資源的利用率。

          1 文件系統(tǒng)
          1.1 FAT文件系統(tǒng)簡(jiǎn)介

          文件配置表(FAT)是一種由微軟公司發(fā)明的并帶有部分專(zhuān)利的文件系統(tǒng),供MS-DOS使用,也是非NT內(nèi)核的微軟窗口使用的文件系統(tǒng)。FAT文件系統(tǒng)考慮當(dāng)時(shí)計(jì)算機(jī)效能有限,所以未被復(fù)雜化,因而被幾乎所有個(gè)人計(jì)算機(jī)的操作系統(tǒng)支持。這些特性使它成為理想的軟盤(pán)和記憶卡的文件系統(tǒng)。但FAT有一個(gè)嚴(yán)重的缺點(diǎn):當(dāng)文件被刪除并且在同一位置被寫(xiě)入新數(shù)據(jù),他們的片段通常是分散的,減慢了讀寫(xiě)速度。磁盤(pán)碎片重整是一種解決方法,但必須經(jīng)常重組來(lái)保持FAT文件系統(tǒng)的效率。
          1.2 FAT文件系統(tǒng)升級(jí)版
          FAT32實(shí)際上是文件分區(qū)表采取的一種形式,它是相對(duì)于FATl6而言的。它可以大大地節(jié)約磁盤(pán)空間。文件在磁盤(pán)上是以簇的方式存放的,簇里存放了一個(gè)文件就不能再存放另外的文件。
          FAT32最大的優(yōu)點(diǎn)是可以支持的磁盤(pán)大小達(dá)到2 TB(2 048 GB),但是不能支持小于512 MB的分區(qū)。由于采用了更小的簇,F(xiàn)AT32文件系統(tǒng)可以更有效率地保存信息。FAT32可以更高效地使用空間。FAT32使用較小的簇(即,對(duì)于大小在8 GB以內(nèi)的驅(qū)動(dòng)器,使用4 KB的簇),這與大的FAT或FAT16驅(qū)動(dòng)器相比,可將磁盤(pán)空間的使用率提高10 9,6~15%。
          FAT32更穩(wěn)定可靠。FAT32可以重新定位根文件夾,而且它使用文件分配表的備份副本,而不是使用默認(rèn)副本。此外,F(xiàn)AT32驅(qū)動(dòng)器上的引導(dǎo)記錄也得到擴(kuò)展,包括了關(guān)鍵數(shù)據(jù)結(jié)構(gòu)的備份副本。因此,與現(xiàn)有的FAT16驅(qū)動(dòng)器相比,F(xiàn)AT32驅(qū)動(dòng)器不容易受單點(diǎn)故障的影響。
          FAT32更靈活。FAT32驅(qū)動(dòng)器上的根文件夾是普通的簇鏈,因此它可以位于驅(qū)動(dòng)器上的任何位置。以前對(duì)根文件夾數(shù)量的限制不復(fù)存在。此外,可以禁用文件分配表鏡像,這樣就可以讓文件分配表的副本而不是讓第一個(gè)文件分配表處于活動(dòng)狀態(tài)。這些功能允許您動(dòng)態(tài)重調(diào)FAT32分區(qū)的大小。

          2 硬件設(shè)計(jì)
          2.1 芯片概述

          ATmega32是基于增強(qiáng)的AVR RISC結(jié)構(gòu)的低功耗8位CMOS微控制器。由于其先進(jìn)的指令集以及單時(shí)鐘周期指令執(zhí)行時(shí)間,ATmega32的數(shù)據(jù)吞吐率高達(dá)1 MIPS/MHz,從而可以緩減系統(tǒng)在功耗和處理速度之間的矛盾。ATmega32 AVR內(nèi)核具有豐富的指令集和32個(gè)通用工作寄存器。所有的寄存器都直接與算邏單元(ALU)相連接,使得一條指令可以在一個(gè)時(shí)鐘周期內(nèi)同時(shí)訪問(wèn)2個(gè)獨(dú)立的寄存器。這種結(jié)構(gòu)大大提高了代碼效率,并且具有比普通的CISC微控制器最高至10倍的數(shù)據(jù)吞吐率。
          PL2303用于實(shí)現(xiàn)USB和標(biāo)準(zhǔn)RS 232串行端口之間的轉(zhuǎn)換,2個(gè)獨(dú)立的大型緩沖用于兩種總線的連接,大型數(shù)據(jù)緩沖器用于USB的批量數(shù)據(jù)傳輸,自動(dòng)握手模式可用于串行通訊,因而可以達(dá)到遠(yuǎn)大于標(biāo)準(zhǔn)UART控制器的波特率。PL2303支持USB電源管理和遠(yuǎn)程喚醒協(xié)議。本設(shè)計(jì)中PL2303芯片主要應(yīng)用在將主控單元的下載線與供電模塊合二為一,大大簡(jiǎn)化了系統(tǒng)的設(shè)計(jì)復(fù)雜度。
          NOKIA 5110液晶顯示器,傳統(tǒng)的點(diǎn)陣式液晶顯示器,不內(nèi)置英文及漢字字庫(kù),因此NOKIA 5110液晶顯示的過(guò)程,需要單片機(jī)把從存儲(chǔ)器中讀取到的ASCII碼值轉(zhuǎn)換成對(duì)應(yīng)的英文及漢字點(diǎn)陣信息,然后通過(guò)串口把點(diǎn)陣信息傳輸?shù)揭壕э@示器上進(jìn)行顯示。
          2.2 硬件設(shè)計(jì)
          硬件單元包括:AVR主控ATmega32單元模塊,SD卡接口模塊,液晶顯示接口模塊,串口轉(zhuǎn)USB接口。
          2.2.1 主控電路設(shè)計(jì)
          主控電路(如圖1所示)主要負(fù)責(zé)將從輸入接口中讀到的數(shù)據(jù)轉(zhuǎn)換成對(duì)應(yīng)的字模碼。

          基于AVR單片機(jī)和串口的SD卡讀取平臺(tái)的設(shè)計(jì)


          2.2.2 存儲(chǔ)系統(tǒng)模塊及下載接口設(shè)計(jì)
          SD卡接口如圖2所示。
          2.2.3 液晶顯示模塊設(shè)計(jì)
          液晶顯示接口如圖3所示。


          上一頁(yè) 1 2 下一頁(yè)

          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(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); })();