AVR单片机的SD卡驱动程序

AVR单片机的SD卡驱动程序

ID:39464939

大小:43.00 KB

页数:5页

时间:2019-07-03

AVR单片机的SD卡驱动程序_第1页
AVR单片机的SD卡驱动程序_第2页
AVR单片机的SD卡驱动程序_第3页
AVR单片机的SD卡驱动程序_第4页
AVR单片机的SD卡驱动程序_第5页
资源描述:

《AVR单片机的SD卡驱动程序》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、注:本程序只做学习用途.#include#defineSPI_DDRDDRB#defineSPI_PORTPORTB#defineSPI_PINPINB#defineSPI_SSPB0#defineSPI_MOSIPB2#defineSPI_MISOPB3#defineSPI_SCKPB1#defineSET_SD_CSPORTG

2、=(1<

3、=(1<

4、口为高#defineSDCSDDDR()DDRG

5、=(1<

6、=(1<

7、(1<

8、(1<

9、(1<

10、I,主机方式,MSB在前,模式0,128分频}voidSPI_High(void){//SPI高速模式SPCR=0;SPCR=(1<

11、(1<

12、=(1<

13、(1<

14、(1<

15、(1<

16、//将SSSCKMOSI置为输出}uint8_tSPI_RW(uint8_tdat){//SPI读写1Byte(欲想读之必先与之)SPDR=dat;while(!(SPSR&(1<

17、;for(i=0;i<6;i++){SPI_RW(*cmd);cmd++;}SPI_RW(0XFF);//写入指令后附加8个时钟脉冲retry=0;do//不断地读{temp=SPI_RW(0XFF);retry++;}while((temp==0XFF)&&(retry<254));return(temp);}uint8_tSD_Init(void){uint8_ti,temp;uint16_tretry;//重试次数16位数据(适应大容量SD卡)uint8_tCMD[]={0x40,0x00,0x00,0x00

18、,0x00,0x95};SDCSDPORT();//G口设为输出SDCSDDDR();SPI_Init();SPI_Low();//SPI初始化低速模式for(i=0;i<200;i++)//WaitMMC/SDready...{asm("nop");}retry=0;do{SET_SD_CS;for(i=0;i<0x0f;i++){SPI_RW(0xff);//至少74个信号脉冲}temp=SD_Write_Com(CMD);//写入CMD0号命令,最大重试次数254retry++;if(retry==600){

19、SET_SD_CS;return(1);//写入CMD0号命令错误}}while(temp!=1);CMD[0]=0x41;//CMD1号命令CMD[5]=0xFF;retry=0;do{temp=SD_Write_Com(CMD);retry++;if(retry>60000)//写入CMD1号命令,最大重试次数60000{SET_SD_CS;//关闭片选return(1);//写CMD1命令失败}}while(temp!=0);SET_SD_CS;//关闭片选SPI_High();//初始化成功,SPI高速模式

20、SET_SPI_MOSI;//没数据时SD_MI应保持为高电平return(0);//成功初始化}uint8_tSD_Write_Sector(uint32_taddr,uint8_t*buffer){//向SD卡中的指定地址的扇区写入512个字节,使用CMD24(24号命令,单块写命令)uint8_ttemp,retry;uint16_ti;uint8_t

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

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

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