sd卡程序设计、流程及操作系统

sd卡程序设计、流程及操作系统

ID:18122527

大小:101.00 KB

页数:8页

时间:2018-09-14

sd卡程序设计、流程及操作系统_第1页
sd卡程序设计、流程及操作系统_第2页
sd卡程序设计、流程及操作系统_第3页
sd卡程序设计、流程及操作系统_第4页
sd卡程序设计、流程及操作系统_第5页
资源描述:

《sd卡程序设计、流程及操作系统》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、对SD卡进行操作首先要对SD卡进行初始化,初始化的过程中设置SD卡工作在SPI模式,其流程图如图3所示。  在复位成功之后可以通过CMD55和ACMD41判断当前电压是否在工作范围内。主机还可以继续通过CMD10读取SD卡的CID寄存器,通过CMD16设置数据Block长度,通过CMD9读取卡的CSD寄存器。从CSD寄存器中,主机可获知卡容量,支持的命令集等重要参数。SD卡初始化的C语言程序如下:  unsignedcharSD_Init(void)  {unsignedcharretry,temp;  unsigne

2、dchari;  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_Transf

3、erByte(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);//返回成功 

4、 }  数据块的读写  完成SD卡的初始化之后即可进行它的读写操作。SD卡的读写操作都是通过发送SD卡命令完成的。SPI总线模式支持单块(CMD24)和多块(CMD25)写操作,多块操作是指从指定位置开始写下去,直到SD卡收到一个停止命令CMD12才停止。单块写操作的数据块长度只能是512字节。单块写入时,命令为CMD24,当应答为0时说明可以写入数据,大小为512字节。SD卡对每个发送给自己的数据块都通过一个应答命令确认,它为1个字节长,当低5位为00101时,表明数据块被正确写入SD卡。  在需要读取SD卡中数据的

5、时候,读SD卡的命令字为CMD17,接收正确的第一个响应命令字节为0xFE,随后是512个字节的用户数据块,最后为2个字节的CRC验证码。  可见,读写SD卡的操作都是在初始化后基于SD卡命令和响应完成操作的,写、读SD卡的程序流程图如图4和图5所示。  结束语  实验结果表明单片机使用12MHz的晶体振荡器时,读写速度和功耗都基本令人满意,可以应用于对读写速度要求不高的情况下。本文详细阐述了用AT89C52单片机对SD卡进行操作的过程,提出了一种不带SD卡控制器,MCU读写SD卡的方法,实现了SD卡在电能监测及无功补

6、偿数据采集系统中的用途。本文的实现程序把SPI总线读写功能集成在一起,传递的val变量既是向SPI写的数据,也是从SPI读取的数据。具体程序如下:(程序是在KeiluVision2的编译环境下编写)sbitCS="P3"^5;  sbitCLK=P1^5;  sbitDataI="P1"^7;  sbitDataO="P1"^6;  #defineSD_Disable()CS="1"//片选关  #defineSD_Enable()CS="0"//片选开  unsignedcharSPI_TransferByte(un

7、signedcharval)  {  unsignedcharBitCounter;  for(BitCounter=8;BiCounter!=0;BitCounter--)  {CLK="0";  DataI=0;//write  if(val&0x80)DataI="1";  val<<=1;  CLK=1;  if(DataO)val

8、=1;//read  }  CLK=0;  returnval;SD卡读写子程序:硬件平台:atmega8L最小系统                    硬spi(sd卡的初始化

9、采用了io口模拟时序,因为在实验中发现要使用较低的速率才能稳定的初始化)软件开发平台:ICC-AVR    version6.31a硬件配置:atmega8L    内部8m时钟                    sandisk128msd卡几个基本的子程序及其介绍:1.io口模拟spi,实现数据发送,在初始化时使用voidi

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。