婷婷亚洲天堂影院-国产精品豆花视频www-伊人影院在线观看-日本少妇浓毛bbwbbwbbw-av网站观看-亚州欧美在线-91精品国产乱码久-任我爽精品视频在线播放-日本视频不卡-亚洲国产精品va在线观看香蕉-国产毛片乡下农村妇女-国产成人免费ā片在线观看老同学-欧美日韩免费在线-成人无码视频免费播放-色综合美女-免费毛片av

電子開發網

電子開發網電子設計 | 電子開發網Rss 2.0 會員中心 會員注冊
搜索: 您現在的位置: 電子開發網 >> 電子開發 >> 單片機 >> 正文

基于AT89C52單片機的SD卡讀寫設計

作者:佚名    文章來源:本站原創    點擊數:    更新時間:2008-11-1
摘要: 長期以來,以Flash Memory為存儲體的SD卡因具備體積小、功耗低、可擦寫以及非易失性等特點而被廣泛應用于消費類電子產品中。特別是近年來,隨著價格不斷下降且存儲容量不斷提高,它的應用范圍日益增廣。當數據采集系統需要長時間地采集、記錄海量數據時,選擇SD卡作為存儲媒質是開發者們一個很好的選擇。在電能監測以及無功補償系統中,要連續記錄大量的電壓、電流、有功功率、無功功率以及時間等參數,當單片機采集到這些數據時可以利用SD作為存儲媒質。本文主要介紹了SD卡在電能監測及無功補償數據采集系統中的應用方案。

前言

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

設計方案

應用AT89C52讀寫SD卡有兩點需要注意。首先,需要尋找一個實現AT89C52單片機與SD卡通訊的解決方案;其次,SD卡所能接受的邏輯電平與AT89C52提供的邏輯電平不匹配,需要解決電平匹配問題。

通訊模式

SD卡有兩個可選的通訊協議:SD模式和SPI模式。SD模式是SD卡標準的讀寫方式,但是在選用SD模式時,往往需要選擇帶有SD卡控制器接口的MCU,或者必須加入額外的SD卡控制單元以支持SD卡的讀寫。然而,AT89C52單片機沒有集成SD卡控制器接口,若選用SD模式通訊就無形中增加了產品的硬件成本。在SD卡數據讀寫時間要求不是很嚴格的情況下,選用SPI模式可以說是一種最佳的解決方案。因為在SPI模式下,通過四條線就可以完成所有的數據交換,并且目前市場上很多MCU都集成有現成的SPI接口電路,采用SPI模式對SD卡進行讀寫操作可大大簡化硬件電路的設計。

雖然AT89C52不帶SD卡硬件控制器,也沒有現成的SPI接口模塊,但是可以用軟件模擬出SPI總線時序。本文用SPI總線模式讀寫SD卡。

電平匹配

SD卡的邏輯電平相當于3.3V TTL電平標準,而控制芯片AT89C52的邏輯電平為5V CMOS電平標準。因此,它們之間不能直接相連,否則會有燒毀SD卡的可能。出于對安全工作的考慮,有必要解決電平匹配問題。

要解決這一問題,最根本的就是解決邏輯器件接口的電平兼容問題,原則主要有兩條:一為輸出電平器件輸出高電平的最小電壓值,應該大于接收電平器件識別為高電平的最低電壓值;另一條為輸出電平器件輸出低電平的最大電壓值,應該小于接收電平器件識別為低電平的最高電壓值。

一般來說,通用的電平轉換方案是采用類似SN74ALVC4245的專用電平轉換芯片,這類芯片不僅可以用作升壓和降壓,而且允許兩邊電源不同步。但是,這個方案代價相對昂貴,而且一般的專用電平轉換芯片都是同時轉換8路、16路或者更多路數的電平,相對本系統僅僅需要轉換3路來說是一種資源的浪費。

考慮到SD卡在SPI協議的工作模式下,通訊都是單向的,于是在單片機向SD卡傳輸數據時采用晶體管加上拉電阻法的方案,基本電路如圖1所示。而在SD卡向單片機傳輸數據時可以直接連接,因為它們之間的電平剛好滿足上述的電平兼容原則,既經濟又實用。

這個方案需要雙電源供電(一個5V電源、一個3.3V電源供電),3.3V電源可以用AMS1117穩壓管從5V電源穩壓獲取。

硬件接口設計

SD卡提供9Pin的引腳接口便于外圍電路對其進行操作,9Pin的引腳隨工作模式的不同有所差異。在SPI模式下,引腳1(DAT3)作為SPI片選線CS用,引腳2(CMD)用作SPI總線的數據輸出線MOSI,而引腳7(DAT0)為數據輸入線MISO,引腳5用作時鐘線(CLK)。除電源和地,保留引腳可懸空。

本文中控制SD卡的MCU是ATMEL公司生產的低電壓、高性能CMOS 8位單片機AT89C52,內含8K字節的可反復擦寫的只讀程序存儲器和256字節的隨機存儲數據存儲器。由于AT89C52只有256字節的數據存儲器,而SD卡的數據寫入是以塊為單位,每塊為512字節,所以需要在單片機最小系統上增加一片RAM。本系統中RAM選用存儲器芯片HM62256,容量為32K。對RAM進行讀寫時,鎖存器把低8位地址鎖存,與P2口的8位地址數據構成16位地址空間,從而可使SD卡一次讀寫512字節的塊操作。系統硬件圖如圖2所示。

軟件設計

SPI工作模式

SD卡在上電初期自動進入SD總線模式,在此模式下向SD卡發送復位命令CMD0。如果SD卡在接收復位命令過程中CS低電平有效,則進入SPI模式,否則工作在SD總線模式。

對于不帶SPI串行總線接口的AT89C52單片機來說,用軟件來模擬SPI總線操作的具體做法是:將P1.5口(模擬CLK線)的初始狀態設置為1,而在允許接收后再置P1.5為0。這樣,MCU在輸出1位SCK時鐘的同時,將使接口芯片串行左移,從而輸出1位數據至AT89C52單片機的P1.7(模擬MISO線),此后再置P1.5為1,使單片機從P1.6(模擬MOSI線)輸出1位數據(先為高位)至串行接口芯片。至此,模擬1位數據輸入輸出便完成。此后再置P1.5為0,模擬下1位數據的輸入輸出,依此循環8次,即可完成1次通過SPI總線傳輸8位數據的操作。

本文的實現程序把SPI總線讀寫功能集成在一起,傳遞的val變量既是向SPI寫的數據,也是從SPI讀取的數據。具體程序如下:(程序是在Keil uVision2的編譯環境下編寫)

sbit CS=P3^5;

sbit CLK= P1^5;

sbit DataI=P1^7;

sbit DataO=P1^6;

#define SD_Disable() CS=1 //片選關

#define SD_Enable() 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&0x80) DataI=1;

val<<=1;

CLK=1;

if(DataO)val|=1; // read

}

CLK=0;

return val;

}

SD卡的初始化

對SD卡進行操作首先要對SD卡進行初始化,初始化的過程中設置SD卡工作在SPI模式,其流程圖如圖3所示。

在復位成功之后可以通過CMD55和ACMD41判斷當前電壓是否在工作范圍內。主機還可以繼續通過CMD10讀取SD卡的CID寄存器,通過CMD16設置數據Block長度,通過CMD9讀取卡的CSD寄存器。從CSD寄存器中,主機可獲知卡容量,支持的命令集等重要參數。SD卡初始化的C語言程序如下:

unsigned char SD_Init(void)

{ unsigned char retry,temp;

unsigned char i;

for (i=0;i<0x0f;i++)

{ SPI_TransferByte(0xff); //延遲74個以上的時鐘

}

SD_Enable(); //開片選

SPI_TransferByte(SD_RESET); //發送復位命令

SPI_TransferByte(0x00);

SPI_TransferByte(0x00);

SPI_TransferByte(0x00);

SPI_TransferByte(0x00);

SPI_TransferByte(0x95);

SPI_TransferByte(0xff);

SPI_TransferByte(0xff);

retry=0;

do{ temp=Write_Command_SD(SD_INIT,0);

//發送初始化命令

retry++;

if(retry==100) //重試100次

{SD_Disable(); //關片選

return(INIT_CMD1_ERROR);

//如果重試100次失敗返回錯誤號

}

}while(temp!=0);

SD_Disable(); //關片選

return(TRUE); //返回成功

}

數據塊的讀寫

完成SD卡的初始化之后即可進行它的讀寫操作。SD卡的讀寫操作都是通過發送SD卡命令完成的。SPI總線模式支持單塊(CMD24)和多塊(CMD25)寫操作,多塊操作是指從指定位置開始寫下去,直到SD卡收到一個停止命令CMD12才停止。單塊寫操作的數據塊長度只能是512字節。單塊寫入時,命令為CMD24,當應答為0時說明可以寫入數據,大小為512字節。SD卡對每個發送給自己的數據塊都通過一個應答命令確認,它為1個字節長,當低5位為00101時,表明數據塊被正確寫入SD卡。

在需要讀取SD卡中數據的時候,讀SD卡的命令字為CMD17,接收正確的第一個響應命令字節為0xFE,隨后是512個字節的用戶數據塊,最后為2個字節的CRC驗證碼。

可見,讀寫SD卡的操作都是在初始化后基于SD卡命令和響應完成操作的,寫、讀SD卡的程序流程圖如圖4和圖5所示。




結束語

實驗結果表明單片機使用12MHz的晶體振蕩器時,讀寫速度和功耗都基本令人滿意,可以應用于對讀寫速度要求不高的情況下。本文詳細闡述了用AT89C52單片機對SD卡進行操作的過程,提出了一種不帶SD卡控制器,MCU讀寫SD卡的方法,實現了SD卡在電能監測及無功補償數據采集系統中的用途。
Tags:單片機,SD卡讀寫設計  
責任編輯:admin
相關文章列表
沒有相關文章
請文明參與討論,禁止漫罵攻擊,不要惡意評論、違禁詞語。 昵稱:
1分 2分 3分 4分 5分

還可以輸入 200 個字
[ 查看全部 ] 網友評論
關于我們 - 聯系我們 - 廣告服務 - 友情鏈接 - 網站地圖 - 版權聲明 - 在線幫助 - 文章列表
返回頂部
刷新頁面
下到頁底
晶體管查詢
婷婷亚洲天堂影院-国产精品豆花视频www-伊人影院在线观看-日本少妇浓毛bbwbbwbbw-av网站观看-亚州欧美在线-91精品国产乱码久-任我爽精品视频在线播放-日本视频不卡-亚洲国产精品va在线观看香蕉-国产毛片乡下农村妇女-国产成人免费ā片在线观看老同学-欧美日韩免费在线-成人无码视频免费播放-色综合美女-免费毛片av
<button id="4i884"></button>
  • <abbr id="4i884"><source id="4i884"></source></abbr>
  • <code id="4i884"><tr id="4i884"></tr></code>
  • <rt id="4i884"></rt>
    <li id="4i884"></li>
  • <rt id="4i884"><tr id="4i884"></tr></rt>
  • 国产在线青青草| 国产v片免费观看| 熟妇人妻va精品中文字幕 | 黄色动漫网站入口| 大伊香蕉精品视频在线| 欧美高清中文字幕| www.av毛片| 国产 福利 在线| 茄子视频成人免费观看| 久久久久狠狠高潮亚洲精品| 少妇人妻互换不带套| 成人久久久久久久久| 日本在线观看a| 久久久久久三级| 亚洲一二三不卡| 强伦女教师2:伦理在线观看| 日本黄xxxxxxxxx100| 男人天堂av片| 亚洲色图38p| 波多野结衣在线免费观看| 青少年xxxxx性开放hg| h无码动漫在线观看| 精品这里只有精品| 亚洲 激情 在线| 狠狠精品干练久久久无码中文字幕| 成人在线免费观看视频网站| 国产精品333| 亚洲精品mv在线观看| 美女黄色免费看| 一区二区三区入口| youjizz.com在线观看| 日韩在线第三页| 最新中文字幕久久| 国产精品裸体瑜伽视频| 亚洲精品成人在线播放| 日韩精品―中文字幕| 爱豆国产剧免费观看大全剧苏畅| 成人在线免费观看网址| 免费看国产黄色片| 无码熟妇人妻av在线电影| 簧片在线免费看| 国产精品久久..4399| www.成年人| 欧美日韩国产精品激情在线播放| 日本在线播放一区二区| 国产女大学生av| 特大黑人娇小亚洲女mp4| 中文字幕国内自拍| 日韩免费毛片视频| 日韩 欧美 视频| 日本xxxxx18| 亚洲精品免费一区亚洲精品免费精品一区 | 免费黄频在线观看| 激情综合网俺也去| www.浪潮av.com| 99在线免费视频观看| 日本黄色a视频| 福利视频999| 五月激情五月婷婷| 一区二区在线播放视频| 日韩欧美精品在线观看视频| 人妻少妇精品无码专区二区 | 男人天堂成人在线| 鲁一鲁一鲁一鲁一色| 国产玉足脚交久久欧美| 青青青在线观看视频| 影音先锋男人的网站| 精品少妇人妻av一区二区| 亚洲欧洲日本精品| 无尽裸体动漫2d在线观看| 日本精品免费在线观看| 成人久久久久久久久| 日日摸日日碰夜夜爽av| 国产三区在线视频| 国产女女做受ⅹxx高潮| 国产天堂在线播放| 亚洲免费999| 国产精品jizz在线观看老狼| 日本一区二区三区四区五区六区| gogogo免费高清日本写真| 国内外成人激情免费视频| 日韩精品在线观看av| 国产中文字幕在线免费观看| 免费在线激情视频| 天天操狠狠操夜夜操| 蜜臀av性久久久久蜜臀av| 欧美无砖专区免费| 午夜精品久久久内射近拍高清 | 亚洲18在线看污www麻豆| 熟女熟妇伦久久影院毛片一区二区| 91精品国产毛片武则天| 免费看一级大黄情大片| 日本三区在线观看| 色呦呦网站入口| 久久久噜噜噜www成人网| 激情五月俺来也| 欧美黄色免费网址| 91制片厂毛片| av在线com| www.这里只有精品| 欧洲精品一区二区三区久久| 亚洲性生活网站| 成年在线观看视频| 黄大色黄女片18第一次| 国产无限制自拍| 日韩视频在线免费播放| 男人揉女人奶房视频60分| 天美一区二区三区| 熟妇人妻va精品中文字幕 | 欧美日韩在线不卡视频| 久久久九九九热| 成人黄色片视频| 少妇一晚三次一区二区三区| 簧片在线免费看| 亚欧无线一线二线三线区别| 青娱乐国产精品视频| 成人免费观看视频在线观看| 国产91视频一区| 乱子伦一区二区| 亚洲在线观看网站| 日本免费色视频| 日本成人在线免费视频| 成人免费观看cn| 日本福利视频一区| 国产精品自拍合集| av影院在线播放| 精品一区二区成人免费视频 | 黄瓜视频免费观看在线观看www| 成年人免费大片| www日韩视频| 男人天堂成人在线| 日本中文字幕片| 国产裸体舞一区二区三区| 久草资源站在线观看| 成人免费毛片网| 免费观看精品视频| 国产v亚洲v天堂无码久久久| 欧美黄色一级片视频| 国产高潮免费视频| 中文字幕22页| 999热精品视频| 超碰10000| 亚洲午夜无码av毛片久久| 情侣黄网站免费看| av丝袜天堂网| 欧美精品色视频| 99视频精品全部免费看| 欧妇女乱妇女乱视频| 99999精品视频| 成年网站在线播放| 日韩视频在线免费播放| 美女黄色免费看| 久久精品免费网站| 蜜臀av.com| 无码人妻丰满熟妇区毛片18| 69久久久久久| 欧美亚洲黄色片| 手机在线看福利| 日韩精品第1页| 久久美女福利视频| 国产xxxxhd| 男人揉女人奶房视频60分| 亚洲欧美国产中文| 男人插女人视频在线观看| 日本免费观看网站| 日本男女交配视频| 一区二区三区网址| 毛片在线播放视频| 韩国一区二区在线播放| 无码精品a∨在线观看中文| 天天干天天色天天干| 激情伊人五月天| 欧洲美女和动交zoz0z| 精品这里只有精品| 日韩人妻一区二区三区蜜桃视频| 一本色道无码道dvd在线观看| 麻豆md0077饥渴少妇| 人人干人人干人人| 欧美s码亚洲码精品m码| 手机成人av在线| 天天操狠狠操夜夜操| 国模吧无码一区二区三区| 99亚洲国产精品| 亚洲一二三av| 亚洲性生活网站| 日韩avxxx| 日本欧美黄色片| 国产欧美日韩小视频| 少妇高潮流白浆| 911av视频| www.成人黄色| 国产美女视频免费看| 天堂网在线免费观看| 欧美激情成人网| 黄www在线观看| 欧美黄色免费影院| 久久精品免费一区二区| 亚洲不卡中文字幕无码| 4444亚洲人成无码网在线观看 | 男人天堂成人在线|