51單片機與SD卡的接口電路和程序_第1頁
51單片機與SD卡的接口電路和程序_第2頁
51單片機與SD卡的接口電路和程序_第3頁
51單片機與SD卡的接口電路和程序_第4頁
51單片機與SD卡的接口電路和程序_第5頁
免費預覽已結(jié)束,剩余1頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、51單片機與SD卡的接口電路和程序 (1) 長期以來,以Flash Memory 為存儲體的SD卡因具備體積小、功耗低、可擦寫以及非易失性等特點而被廣泛 應用于消費類電子產(chǎn)品中。特別是近年來,隨著價格不斷下降且存儲容量不斷提高,它的應用范圍日益增廣。 當數(shù)據(jù)采集系統(tǒng)需要長時間地采集、記錄海量數(shù)據(jù)時,選擇 SD卡作為存儲媒質(zhì)是開發(fā)者們一個很好的選擇。 在電能監(jiān)測以及無功補償系統(tǒng)中,要連續(xù)記錄大量的電壓、電流、有功功率、無功功率以及時間等參數(shù),當單 片機采集到這些數(shù)據(jù)時可以利用 SD作為存儲媒質(zhì)。本文主要介紹了 SD卡在電能監(jiān)測及無功補償數(shù)據(jù)采集系 統(tǒng)中的應用方案。 設(shè)計方案 應用AT89C52

2、讀寫SD卡有兩點需要注意。首先,需要尋找一個實現(xiàn) AT89C52 單片機與SD卡通訊的解決 方案;其次,SD卡所能接受的邏輯電平與 AT89C52 提供的邏輯電平不匹配,需要解決電平匹配問題。 通訊模式 SD卡有兩個可選的通訊協(xié)議: SD模式和SPI模式。SD模式是SD卡標準的讀寫方式,但是在選用 SD模式 時,往往需要選擇帶有 SD卡控制器接口的 MCU,或者必須加入額外的 SD卡控制單元以支持 SD卡的讀寫。 然而,AT89C52 單片機沒有集成 SD卡控制器接口,若選用 SD模式通訊就無形中增加了產(chǎn)品的硬件成本。 在SD卡數(shù)據(jù)讀寫時間要求不是很嚴格的情況下,選用 SPI模式可以說是一種最

3、佳的解決方案。因為在 SPI 模式下,通過四條線就可以完成所有的數(shù)據(jù)交換,并且目前市場上很多 MCU都集成有現(xiàn)成的 SPI接口電路, 采用SPI模式對SD卡進行讀寫操作可大大簡化硬件電路的設(shè)計。 雖然AT89C52 不帶SD卡硬件控制器,也沒有現(xiàn)成的 SPI接口模塊,但是可以用軟件模擬出 SPI總線時序。 本文用SPI總線模式讀寫 SD卡。 電平匹配 SD卡的邏輯電平相當于 3.3V TTL 電平標準,而控制芯片 AT89C52 的邏輯電平為5V CMOS 電平標準。因 此,它們之間不能直接相連,否則會有燒毀SD卡的可能。出于對安全工作的考慮,有必要解決電平匹配問題。 要解決這一問題,最根本的

4、就是解決邏輯器件接口的電平兼容問題,原則主要有兩條:一為輸出電平器件輸出 高電平的最小電壓值,應該大于接收電平器件識別為高電平的最低電壓值;另一條為輸出電平器件輸出低電平 的最大電壓值,應該小于接收電平器件識別為低電平的最高電壓值。 一般來說,通用的電平轉(zhuǎn)換方案是采用類似 SN74ALVC4245 的專用電平轉(zhuǎn)換芯片,這類芯片不僅可以用作升 壓和降壓,而且允許兩邊電源不同步。但是,這個方案代價相對昂貴,而且一般的專用電平轉(zhuǎn)換芯片都是同時 轉(zhuǎn)換8路、16路或者更多路數(shù)的電平,相對本系統(tǒng)僅僅需要轉(zhuǎn)換 3路來說是一種資源的浪費。 考慮到SD卡在SPI協(xié)議的工作模式下,通訊都是單向的,于是在單片機向

5、SD卡傳輸數(shù)據(jù)時采用晶體管加上 拉電阻法的方案,基本電路如圖 1所示。而在SD卡向單片機傳輸數(shù)據(jù)時可以直接連接,因為它們之間的電平 剛好滿足上述的電平兼容原則,既經(jīng)濟又實用。 凱甲曲入 這個方案需要雙電源供電(一個 5V電源、一個3.3V電源供電),3.3V電源可以用AMS1117 穩(wěn)壓管從5V 電源穩(wěn)壓獲取。 硬件接口設(shè)計 SD卡提供9Pin的引腳接口便于外圍電路對其進行操作, 9Pin的引腳隨工作模式的不同有所差異。在 SPI模 式下,引腳1 (DAT3 )作為SPI片選線CS用,引腳2 (CMD )用作SPI總線的數(shù)據(jù)輸出線 MOSI ,而引腳 7 (DAT0 )為數(shù)據(jù)輸入線 MISO,

6、引腳5用作時鐘線(CLK )。除電源和地,保留引腳可懸空。 的MCU是ATMEL公司生產(chǎn)的低電壓、高性能 CMOS 8位單片機AT89C52 ,內(nèi)含8K字節(jié)的可反復擦寫的 只讀程序存儲器和 256字節(jié)的隨機存儲數(shù)據(jù)存儲器。由于 AT89C52只有256字節(jié)的數(shù)據(jù)存儲器,而 SD卡 的數(shù)據(jù)寫入是以塊為單位,每塊為 512字節(jié),所以需要在單片機最小系統(tǒng)上增加一片 RAM。本系統(tǒng)中RAM 選用存儲器芯片 HM62256 ,容量為32K。對RAM進行讀寫時,鎖存器把低 8位地址鎖存,與 P2 口的8位 地址數(shù)據(jù)構(gòu)成16位地址空間,從而可使 SD卡一次讀寫512字節(jié)的塊操作。系統(tǒng)硬件圖如圖 2所示。 軟

7、件設(shè)計 SPI工作模式 SD卡在上電初期自動進入 SD總線模式,在此模式下向 SD卡發(fā)送復位命令 CMD0。如果SD卡在接收復位 命令過程中CS低電平有效,則進入 SPI模式,否則工作在 SD總線模式。 對于不帶SPI串行總線接口的 AT89C52 單片機來說,用軟件來模擬 SPI總線操作的具體做法是:將 P1.5 口 (模擬CLK線)的初始狀態(tài)設(shè)置為 1 ,而在允許接收后再置 P1.5為0。這樣,MCU在輸出1位SCK時鐘的 同時,將使接口芯片串行左移,從而輸出 1位數(shù)據(jù)至AT89C52單片機的P1.7 (模擬MISO線),此后再置 P1.5為1,使單片機從P1.6 (模擬MOSI線)輸出1

8、位數(shù)據(jù)(先為高位)至串行接口芯片。至此,模擬 1位 數(shù)據(jù)輸入輸出便完成。此后再置 P1.5為0,模擬下1位數(shù)據(jù)的輸入輸出,依此循環(huán) 8次,即可完成1次通過 SPI總線傳輸8位數(shù)據(jù)的操作。 本文的實現(xiàn)程序把 SPI總線讀寫功能集成在一起,傳遞的 val變量既是向SPI寫的數(shù)據(jù),也是從 SPI讀取的 數(shù)據(jù)。具體程序如下:(程序是在 Keil uVision2 的編譯環(huán)境下編寫) sbit CS=P3A5; sbit CLK= P1A5; sbit DataI=P1A7; sbit DataO=P1A6; #define SD_Disable() CS=1 / 片選關(guān) #define SD_Enab

9、le() CS=0 / 片選開 unsigned char SPI_TransferByte(unsigned char val) ( unsigned char BitCounter; for(BitCounter=8; BiCounter!=0; BitCounter-) ( CLK=0; DataI=0; / write if(val&0 x80) DataI=1; val=1; CLK=1; if(DataO)val|=1; / read CLK=0; return val; SD卡的初始化 對SD卡進行操作首先要對 SD卡進行初始化,初始化的過程中設(shè)置 SD卡工作在SPI模式

10、,其流程圖如圖 3 所示。 (開始) 及送 74 個時鈾周期 進入 SPIfiffe模式 走送激活%令 CMD 接收 3占玉響成 CZOZD 圖 3 SB 孝初始化航料圈 在復位成功之后可以通過 CMD55和ACMD41判斷當前電壓是否在工作范圍內(nèi)。主機還可以繼續(xù)通過 讀取SD卡的CID寄存器,通過 CMD16設(shè)置數(shù)據(jù)Block長度,通過 CMD9讀取卡的CSD寄存器。 寄存器中,主機可獲知卡容量,支持的命令集等重要參數(shù)。 SD卡初始化的C語言程序如下: unsigned char SD_Init(void) ( unsigned char retry,temp; unsigned char i; for (i=0;i*圈 5讀 S

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論