《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于AT89C52單片機的SD卡的讀寫設計
基于AT89C52單片機的SD卡的讀寫設計
摘要: 本文的實現程序把SPI總線讀寫功能集成在一起,傳遞的val變量既是向SPI寫的數據,也是從SPI讀取的數據。在需要讀 ...
Abstract:
Key words :

  前言

  長期以來,以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卡在電能監測及無功補償數據采集系統中的用途。

此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          久久久久久久尹人综合网亚洲| 在线观看日韩| 国产精品欧美久久久久无广告| 国产精品久久久久久亚洲调教| 亚洲影院在线| 欧美日韩中字| 久久久免费观看视频| 麻豆久久精品| 欧美激情精品久久久久久变态| 日韩亚洲在线| 欧美日本中文| 国产精品99久久久久久www| 久久久久久999| 欧美日韩视频第一区| 亚洲欧美综合另类中字| 亚洲免费伊人电影在线观看av| 午夜精品久久久久久久久久久| 欧美国产日韩一区二区在线观看| 久久精品噜噜噜成人av农村| 久久精品国产在热久久| 一本色道久久综合亚洲二区三区| 亚洲综合色丁香婷婷六月图片| 亚洲午夜日本在线观看| 久久久综合激的五月天| 久久精品九九| 欧美日韩一区二区三区视频| 国产精品视频精品视频| 亚洲免费视频观看| 欧美国产视频日韩| 国产伦精品一区二区三区免费迷| 亚洲高清一区二区三区| 欧美激情精品久久久六区热门| 亚洲一区二区三区四区五区午夜| 可以免费看不卡的av网站| 久久久久久久网站| 欧美午夜精品理论片a级大开眼界| 久热综合在线亚洲精品| 亚洲日本电影在线| 国产精品久久777777毛茸茸| 国产人久久人人人人爽| 国产精品久线观看视频| 一色屋精品视频在线观看网站| 国产精品mv在线观看| 国产农村妇女精品一区二区| 亚洲国产欧美久久| 亚洲人成精品久久久久| 国产欧美日韩视频在线观看| 亚洲国产精品99久久久久久久久| 狠狠噜噜久久| 亚洲一区二区在| 国产欧美va欧美va香蕉在| 国产亚洲精品久久飘花| 国产拍揄自揄精品视频麻豆| 国产视频一区免费看| 老司机aⅴ在线精品导航| 亚洲娇小video精品| 影音先锋久久精品| 国产伦精品一区二区三区高清版| 欧美福利一区二区三区| 国产精品久久久久久亚洲毛片| 亚洲日本精品国产第一区| 亚洲影院在线观看| 欧美日韩国产精品一区二区亚洲| 欧美精品在线观看播放| 欧美日韩中文精品| 免费国产自线拍一欧美视频| 欧美一区二区在线免费播放| 香蕉久久精品日日躁夜夜躁| 精品二区久久| 尤物九九久久国产精品的分类| 尤物精品在线| 国产精品草莓在线免费观看| 欧美日韩综合| 91久久久亚洲精品| 亚洲精品婷婷| 亚洲国产精品久久精品怡红院| 欧美激情一区在线观看| 亚洲欧美一区二区在线观看| 亚洲欧美日韩久久精品| 亚洲国产精品一区二区三区| 久久综合久久综合九色| 91久久精品一区二区三区| 国产视频自拍一区| 午夜久久久久| 亚洲天堂av在线免费| 红桃av永久久久| 欧美激情视频网站| 亚洲欧美日韩一区二区三区在线观看| 欧美亚洲自偷自偷| 午夜精品久久久久久久99黑人| 欧美日韩一二三四五区| 欧美一区二区免费观在线| 欧美一区二区三区另类| 国产一区二区三区四区在线观看| 麻豆精品在线观看| 午夜精品福利电影| 毛片一区二区三区| 国产一区二区激情| 亚洲三级电影全部在线观看高清| 亚洲一区二区伦理| 欧美日本韩国| 国产精品九九久久久久久久| 欧美三级在线视频| 小黄鸭精品aⅴ导航网站入口| 先锋影音久久久| 国产精品久久999| 黄色免费成人| 91久久久国产精品| 久久综合五月天婷婷伊人| 久久人人九九| 欧美午夜久久| 亚洲精品女av网站| 亚洲免费视频网站| 99热在这里有精品免费| 国产精品视频久久一区| 欧美精品日韩精品| 亚洲国产婷婷综合在线精品| 欧美午夜不卡影院在线观看完整版免费| 国产美女在线精品免费观看| 欧美成人一区二区三区片免费| 国产精品自在欧美一区| 国产精品日韩精品欧美在线| 日韩性生活视频| 欧美久久九九| 久久全国免费视频| 欧美在线看片| 免费在线国产精品| 国产日韩欧美一区二区三区四区| 久久女同精品一区二区| 久久网站热最新地址| 欧美一区二区三区视频免费| 久久成人久久爱| 午夜精品久久久99热福利| 亚洲午夜视频在线| 99www免费人成精品| 欧美国产日韩一区二区| 欧美成人精品福利| aa亚洲婷婷| 欧美成人嫩草网站| 日韩视频在线一区二区| 麻豆九一精品爱看视频在线观看免费| 亚洲最黄网站| 亚洲私人影院| 在线免费观看一区二区三区| 国产日韩欧美| 91久久线看在观草草青青| 日韩视频不卡| 欧美日韩成人一区| 黄色一区二区三区四区| 欧美紧缚bdsm在线视频| 国产精品r级在线| 国产精品一区二区久久精品| 久久久久久久久岛国免费| 亚洲免费视频中文字幕| 亚洲免费在线播放| 欧美图区在线视频| 国产精品久久久久久模特| 日韩视频免费观看| 最近中文字幕mv在线一区二区三区四区| 免费亚洲电影| 欧美日韩中文字幕在线视频| 夜夜嗨av一区二区三区中文字幕| 国产精品久久久对白| 欧美在线免费观看| 国产拍揄自揄精品视频麻豆| 亚洲人成亚洲人成在线观看图片| 欧美片第1页综合| 久久电影一区| 亚洲一区二区视频在线观看| 亚洲精品国产精品国自产观看| 欧美涩涩网站| 国产一区二区| 亚洲在线观看视频| 欧美视频中文字幕| 亚洲精品日本| 国产精品国产三级国产专播精品人| 日韩一级精品视频在线观看| 午夜精品久久久| 亚洲综合日韩中文字幕v在线| 亚洲精品久久视频| 国产日本欧美一区二区三区在线| 久久久999| 美国三级日本三级久久99| 在线观看亚洲视频啊啊啊啊| 亚洲日韩成人| 亚洲综合视频在线| 国产视频一区免费看| 欧美系列亚洲系列| 欧美aⅴ一区二区三区视频| 一区在线视频观看| 国产精品乱子久久久久| 黄色精品一区| 欧美日韩视频在线观看一区二区三区| 国产视频不卡| 亚洲另类在线视频| 欧美精品一区三区在线观看| 在线观看中文字幕不卡| 亚洲一区二区视频在线| 亚洲第一精品在线| 黄色日韩精品| 免费久久99精品国产| 亚洲盗摄视频| 亚洲一区二区三区精品视频| 欧美专区日韩视频| 国内综合精品午夜久久资源| 亚洲欧美一区在线| 欧美一区综合| 国产一区二区三区高清播放| 亚洲国产另类 国产精品国产免费| 国产精品一区一区三区| 久久久综合香蕉尹人综合网| 亚洲第一色在线| 国产精品国产馆在线真实露脸| 欧美电影免费网站| 国内精品伊人久久久久av影院| 久久综合久久综合这里只有精品| 一区二区在线视频播放| 欧美日本精品一区二区三区| 亚洲第一黄网| 亚洲欧美国产不卡| 国产精品综合av一区二区国产馆| 久久黄色影院| 国产精品www色诱视频| 亚洲在线一区二区三区| 亚洲在线日韩| 亚洲国产精品国自产拍av秋霞| 国产日韩久久| 国产性做久久久久久| 欧美精品xxxxbbbb| 久久久久久97三级| 久久这里有精品15一区二区三区| 亚洲国产毛片完整版| 国产精品久久久久秋霞鲁丝| 欧美日韩国产成人高清视频| 一区二区三区欧美在线观看| 国产精品婷婷午夜在线观看| 欧美区一区二| 国产欧美一二三区| 免费在线播放第一区高清av| 国产精品羞羞答答xxdd| 亚洲国产精品久久人人爱蜜臀| 理论片一区二区在线| 一本色道久久综合亚洲精品高清| 亚洲精品久久久久久下一站| 国产午夜精品一区理论片飘花| 亚洲国产aⅴ天堂久久| 日韩午夜精品| 欧美一区二区精品久久911| 欧美成人伊人久久综合网| 亚洲靠逼com| 亚洲综合第一| 亚洲综合色视频| 欧美人与性动交α欧美精品济南到| 蜜臀av国产精品久久久久| 狠狠色香婷婷久久亚洲精品| 久久一区二区三区四区五区| 欧美另类videos死尸| 精品不卡一区| 国产日韩欧美亚洲一区| 亚洲小说欧美另类社区| 亚洲视频视频在线| 在线日韩av永久免费观看| 国产精品久久久久久影视| 久久男人av资源网站| 国产日韩欧美在线视频观看| 国产精品成人观看视频国产奇米| 国产伊人精品| 国产在线精品自拍| 欧美噜噜久久久xxx| 欧美aaaaaaaa牛牛影院| 国产精品igao视频网网址不卡日韩| 亚洲男人的天堂在线aⅴ视频| 国产精品99免费看| 亚洲图片你懂的| 一区二区91| 亚洲女人天堂成人av在线| 在线观看日产精品| aaa亚洲精品一二三区| 蜜桃av噜噜一区| 国产日本欧美视频| 国产中文一区二区| 亚洲欧洲精品一区二区三区| 国产日韩欧美电影在线观看| 麻豆精品一区二区av白丝在线| 欧美亚洲一区在线| 欧美精品免费在线观看| 久久视频在线看| 久久久噜噜噜久久久| 欧美三级在线| 免费成人在线视频网站| 欧美猛交免费看| 性8sex亚洲区入口| 国产精品www色诱视频| 久久国产乱子精品免费女| 久久狠狠一本精品综合网| 一区二区三区无毛| 中日韩午夜理伦电影免费| 国产精品海角社区在线观看| 亚洲精品日韩在线观看| 亚洲永久免费av| 国产精品国产三级国产a| 久久青草久久| 另类国产ts人妖高潮视频| 欧美日韩国产综合视频在线观看中文| 欧美三级午夜理伦三级中文幕| 先锋影音网一区二区| 欧美日韩一区国产| 国产网站欧美日韩免费精品在线观看| 欧美精品一区三区在线观看| 欧美日韩中文| 久久久青草婷婷精品综合日韩| 欧美日韩一卡| 久久中文久久字幕| 亚洲成人在线视频播放| 在线亚洲观看| 国产乱码精品一区二区三| 日韩午夜精品视频| 亚洲黄色在线| 欧美欧美午夜aⅴ在线观看| 国产精品天美传媒入口| 在线看国产一区| 国产午夜精品美女毛片视频| 亚洲视频在线播放| 亚洲国产一区二区a毛片| 欧美日韩在线一区二区三区| 欧美极品在线视频| 亚洲欧美综合另类中字| 久久亚洲私人国产精品va媚药|