基于AT89C52單片機(jī)的SD卡的讀寫設(shè)計(jì)
前言
本文引用地址:http://www.ex-cimer.com/article/173470.htm長(zhǎng)期以來,以Flash Memory為存儲(chǔ)體的SD卡因具備體積小、功耗低、可擦寫以及非易失性等特點(diǎn)而被廣泛應(yīng)用于消費(fèi)類電子產(chǎn)品中。特別是近年來,隨著價(jià)格不斷下降且存儲(chǔ)容量不斷提高,它的應(yīng)用范圍日益增廣。當(dāng)數(shù)據(jù)采集系統(tǒng)需要長(zhǎng)時(shí)間地采集、記錄海量數(shù)據(jù)時(shí),選擇SD卡作為存儲(chǔ)媒質(zhì)是開發(fā)者們一個(gè)很好的選擇。在電能監(jiān)測(cè)以及無功補(bǔ)償系統(tǒng)中,要連續(xù)記錄大量的電壓、電流、有功功率、無功功率以及時(shí)間等參數(shù),當(dāng)單片機(jī)采集到這些數(shù)據(jù)時(shí)可以利用SD作為存儲(chǔ)媒質(zhì)。本文主要介紹了SD卡在電能監(jiān)測(cè)及無功補(bǔ)償數(shù)據(jù)采集系統(tǒng)中的應(yīng)用方案。
應(yīng)用AT89C52讀寫SD卡有兩點(diǎn)需要注意。首先,需要尋找一個(gè)實(shí)現(xiàn)AT89C52單片機(jī)與SD卡通訊的解決方案;其次,SD卡所能接受的邏輯電平與AT89C52提供的邏輯電平不匹配,需要解決電平匹配問題。
通訊模式
SD卡有兩個(gè)可選的通訊協(xié)議:SD模式和SPI模式。SD模式是SD卡標(biāo)準(zhǔn)的讀寫方式,但是在選用SD模式時(shí),往往需要選擇帶有SD卡控制器接口的MCU,或者必須加入額外的SD卡控制單元以支持SD卡的讀寫。然而,AT89C52單片機(jī)沒有集成SD卡控制器接口,若選用SD模式通訊就無形中增加了產(chǎn)品的硬件成本。在SD卡數(shù)據(jù)讀寫時(shí)間要求不是很嚴(yán)格的情況下,選用SPI模式可以說是一種最佳的解決方案。因?yàn)樵赟PI模式下,通過四條線就可以完成所有的數(shù)據(jù)交換,并且目前市場(chǎng)上很多MCU都集成有現(xiàn)成的SPI接口電路,采用SPI模式對(duì)SD卡進(jìn)行讀寫操作可大大簡(jiǎn)化硬件電路的設(shè)計(jì)。
雖然AT89C52不帶SD卡硬件控制器,也沒有現(xiàn)成的SPI接口模塊,但是可以用軟件模擬出SPI總線時(shí)序。本文用SPI總線模式讀寫SD卡。
電平匹配
SD卡的邏輯電平相當(dāng)于3.3V TTL電平標(biāo)準(zhǔn),而控制芯片AT89C52的邏輯電平為5V CMOS電平標(biāo)準(zhǔn)。因此,它們之間不能直接相連,否則會(huì)有燒毀SD卡的可能。出于對(duì)安全工作的考慮,有必要解決電平匹配問題。
要解決這一問題,最根本的就是解決邏輯器件接口的電平兼容問題,原則主要有兩條:一為輸出電平器件輸出高電平的最小電壓值,應(yīng)該大于接收電平器件識(shí)別為高電平的最低電壓值;另一條為輸出電平器件輸出低電平的最大電壓值,應(yīng)該小于接收電平器件識(shí)別為低電平的最高電壓值。
一般來說,通用的電平轉(zhuǎn)換方案是采用類似SN74ALVC4245的專用電平轉(zhuǎn)換芯片,這類芯片不僅可以用作升壓和降壓,而且允許兩邊電源不同步。但是,這個(gè)方案代價(jià)相對(duì)昂貴,而且一般的專用電平轉(zhuǎn)換芯片都是同時(shí)轉(zhuǎn)換8路、16路或者更多路數(shù)的電平,相對(duì)本系統(tǒng)僅僅需要轉(zhuǎn)換3路來說是一種資源的浪費(fèi)。
考慮到SD卡在SPI協(xié)議的工作模式下,通訊都是單向的,于是在單片機(jī)向SD卡傳輸數(shù)據(jù)時(shí)采用晶體管加上拉電阻法的方案,基本電路如圖1所示。而在SD卡向單片機(jī)傳輸數(shù)據(jù)時(shí)可以直接連接,因?yàn)樗鼈冎g的電平剛好滿足上述的電平兼容原則,既經(jīng)濟(jì)又實(shí)用。
這個(gè)方案需要雙電源供電(一個(gè)5V電源、一個(gè)3.3V電源供電),3.3V電源可以用AMS1117穩(wěn)壓管從5V電源穩(wěn)壓獲取。
評(píng)論