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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > STCl2C5A60S2單片機(jī)的SD卡讀寫

          STCl2C5A60S2單片機(jī)的SD卡讀寫

          作者: 時間:2011-09-30 來源:網(wǎng)絡(luò) 收藏

          O 引言
          SD卡是一種微型、低功耗、可移動的Flash多功能存儲卡,該卡向上兼容MMC卡,并增加了智能保護(hù)機(jī)制,以有效地防止盜版,同時具有更快的傳輸速率及更高的存儲容量,可廣泛用于便攜式消費(fèi)類電子產(chǎn)品中。本文首先介紹了STC12C5A60S2單片機(jī)在SPI協(xié)議下與SD卡的硬件接口電路,然后簡要闡述了SPI總線模式以及軟件模擬的SPI總線數(shù)據(jù)通訊,最后給出了實現(xiàn)SD卡的初始化和讀寫操作的軟件流程。

          1 STC單片機(jī)
          /AD/PWM系列單片機(jī)是宏晶科技生產(chǎn)的單時鐘/機(jī)器周期(IT)的單片機(jī),這是一種高速、低功耗、超強(qiáng)抗干擾的新一代805l單片機(jī),它的指令代碼完全兼容傳統(tǒng)8051,但速度比8051快8~12倍.工作電壓為5.5~3.3 V (5 V單片機(jī)),工作頻率范圍為O~35 MHz。該單片機(jī)內(nèi)部集成有MAX810專用復(fù)位電路,2路PWM,8路高速10位A/D轉(zhuǎn)換(250 K/S),片上還集成有1280字節(jié)RAM,I/O口驅(qū)動能力均可達(dá)到20 mA,無需專用編程器和仿真器數(shù)秒內(nèi)即可通過串口(P3.0/P3.1)下載用戶程序,由于其帶有通用全雙工異步串行口(UART),因此,特別適合電機(jī)控制,而且干擾較強(qiáng)的場合。

          2 硬件電路設(shè)計
          系統(tǒng)中的接口電路采用的單片機(jī)控制,并通過軟件編程實現(xiàn)SPI模式的數(shù)據(jù)傳輸(包括串行時鐘、數(shù)據(jù)的輸入和輸出)。在SPI模式下。單片機(jī)與SD卡的連接主要有四根線(包括時鐘線,兩根數(shù)據(jù)傳輸線和一根片選線),其接口硬件連接電路如圖1所示。

          圖2所示是基于單片機(jī)的電路設(shè)計原理圖,其中包括STC12C5A60S2單片機(jī)的晶振電路和復(fù)位電路SD卡連接電路、和SD卡套插座連接電路。

          3 通訊模式的選擇
          通常,SD卡有兩種總線模式,即SD總線模式和SPI總線模式。其中SD總線模式采用四條數(shù)據(jù)線并行傳輸數(shù)據(jù),數(shù)據(jù)傳輸速率高,但是傳輸協(xié)議復(fù)雜,只有少數(shù)單片機(jī)才提供有此接口,而用軟件方法模擬SD總線又比較繁瑣,會降低SD卡的數(shù)據(jù)傳輸速率;而SPI總線模式只有一條數(shù)據(jù)傳輸線。傳輸協(xié)議簡單,易于實現(xiàn),雖然數(shù)據(jù)傳輸速率較低,但絕大多數(shù)中高檔單片機(jī)都提供有SPI總線,同時由于其易于用軟件方法來模擬。因此,本設(shè)計采用SPI總線模式。
          SPI總線技術(shù)是MOTOROIA公司推出的一種同步串行總線接口,是目前單片機(jī)應(yīng)用系統(tǒng)中最常用的幾種串行擴(kuò)展接口之一。 SPI總線主要通過三根線進(jìn)行數(shù)據(jù)傳輸,包括同步時鐘線SCK、主機(jī)輸入/從機(jī)輸出數(shù)據(jù)線MISO、主機(jī)輸出/從機(jī)輸人數(shù)據(jù)線MOSI。另外,它還有一條低電平有效的從機(jī)片選線CS,片選信號以及同步時鐘脈沖由主機(jī)提供。SPI總線模式的數(shù)據(jù)是以字節(jié)為單位進(jìn)行傳輸?shù)?,主機(jī)與SD卡的各種通信都由主機(jī)控制。

          4 軟件設(shè)計
          4.1 SD卡的初始化
          SD卡從上電到對SD卡進(jìn)行正確的讀寫操作,往往都需要一個上電初始化的過程。SD卡上電后,主機(jī)必須先向SD卡發(fā)送74個時鐘周期,以完成SD卡的上電過程。通常SD卡上電后會自動進(jìn)入SD總線模式,并在SD總線模式下向SD卡發(fā)送復(fù)位命令(CMD0)。因此,主機(jī)在對SD卡進(jìn)行任何操作前,都必須先要拉低SD卡的片選信號CS(card select),以使SD卡進(jìn)入SPI總線模式,然后再由主機(jī)向SD卡發(fā)送命令。SD卡可以響應(yīng)主機(jī)發(fā)來的各種應(yīng)答信號,同時向主機(jī)發(fā)送一個特殊的數(shù)據(jù)響應(yīng)標(biāo)志。若主機(jī)讀到的應(yīng)答信號為01,即表明SD卡已進(jìn)人SPI模式,此時,主機(jī)即可不斷地向SD卡發(fā)送命令字(CMDl)并讀取SD卡的應(yīng)答信號,直到應(yīng)答信號為00,表明SD卡已完成初始化過程,并準(zhǔn)備好接受下一命令。此后,系統(tǒng)便可讀取SD卡的各寄存器,以進(jìn)行讀寫等操作。SD卡初始化流程如圖3所示。下面是SD卡初始化的程序代碼:


          4.2 SD卡的讀寫
          SD卡的數(shù)據(jù)傳輸主要通過塊讀寫來實現(xiàn)。塊長度默認(rèn)為512 KB。當(dāng)RAM中已存放由模數(shù)轉(zhuǎn)換模塊傳來的512 KB數(shù)據(jù)時,單片機(jī)便向SD卡寫入此塊數(shù)據(jù)。塊讀取時,可發(fā)送命令CMDl7,接收到的應(yīng)答信號為0x00。這樣就可以直接接收數(shù)據(jù)了,接收到的數(shù)據(jù)的第1個字節(jié)為數(shù)據(jù)令牌0xfe,后面的為接收到的數(shù)據(jù),當(dāng)輸出口變?yōu)楦唠娖綍r。表明讀取操作完成。SD卡的讀操作與寫操作相同,故此不再贅述。圖4所示是SD卡的讀寫軟件流程圖。其具體程序代碼如下:


          5 結(jié)束語
          該SD卡與STCl2C5A60S2單片機(jī)的接口電路已在實際的試驗板上驗證成功,并已證明可以正確實現(xiàn)數(shù)據(jù)通訊,故可對SD卡上的文件進(jìn)行各種操作。



          關(guān)鍵詞: STCl2C5A60S2 SD卡讀寫

          評論


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