为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

SD卡读写

2017-11-06 7页 doc 20KB 7阅读

用户头像

is_266065

暂无简介

举报
SD卡读写SD卡读写   前言   长期以~以来Flash Memory长存长的体SD因具长长小卡体、功耗低、可擦以及非易失性等特点而被泛长用于消长长长子写广 长品中。特长是近年~着价格不下降且存长容量不提来随断断 高~的长用范长日益增。据采集系长需要长长长地采集、它广当数 长长海量据长~长长数SD作长存长媒长是长长者长一好的长长。在卡个很 长能长长以及无功长长系长中~要长长长长大量的长长、长流、有功功率、 无功功率以及长长等~长片机采集到长些据长可以利用参数当数 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卡 在长能长长及无功长长据采集系长中的用数途。
/
本文档为【SD卡读写】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索