⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sd卡的写操作.c

📁 Altera FPGA工程师成长手册源文件清华大学
💻 C
字号:
unsigned char SD_write_sector(unsigned long address,unsigned char$Burfer)
unsigned char rddata[1],wrdata[1];
unsigned int i;
unsigned char cmd24[]={0x58,0x00,0x00,0x00,0x00,0xff);
    				//CMD24命令,地址初始化为0
address<<=9;    	//将扇区地址转化为字节地址
cmd24[1]=((address&0xff000000)>>24);
 cmd24[2]=((address&0x00ff0000)>>16);
cmd24[3]=((address&0x0000ff00)>>8);
CS_EN=0;    	//CS_EN置为低电平,使SPI内核的SS_n不被屏蔽
IOWR_ALTERA_AVALON_PIO_DATA(CS_EN_BASE,CS_EN);
do
{
  do
  {
rddata[0]_Write_Cmd(cmd24);    
					//写入CMD24命令并读取返回值
  }while(rddata[0]!=0);	//当DO上读取到”Ox00”时,结束循环
    					//写入CMD24命令成功
  for(i=0;i<5;i++)    	//插入若干时钟信号
  {
    wrdata[0]=0xff;
    alt_avalon_spi_command(SPI_BASE,0,1,wrdata,0,NULL,1);
  }
  DI_EN=0;    		//DI_EN景为低电平,不屏蔽SPI内核的mosi
  IOWR_ALTERA_AVALON-PIO_DATA(DI_EN_BASE,DI_FN);
wrdata[0]=0xfe;
alt_avalon_spi_command(SPI_BASE,0,1,wrdata,0,NULL,1);		//写入开始标志字节”0xfe”
alt_avalon_spi_command(SPI_BASE,0,512,Buffer,0,NULL,1);	//写入512个字节数据
wrdata[0]=0xff;
alt_avalon_spi_command(SPI_BASE,0,1,wrdata,0,NULL,1);
    alt_avalon_spi_command(SPI_BASE,0,1,wrdata,0,NULL,1);
DI_EN=1;    		//DI_EN置为高电平,屏蔽SPI内核的mosi
IOWR_ALTERA_AVALON_PIO DATA(DI_EN_BASE,DI_EN);
alt_avalon_spi_command(SPI_BASE,0,0,NULL,1,rddata,1);
   	 				//从miso上读取返回值
do
{
  alt_avalon_spi_command(SPI_BASE,0,0,NULL,1,rddata,1);
    					//从miso上读取返回值
}while(rddata[0]!=0xff);	//判断SD卡忙
  CS_EN=1;    		//CS_EN置为高电平,屏蔽SPI内核的SS_n
  IOWR_ALTERA_AVALON_PIO_DATA(CS_EN_BASE,CS_EN);
  wrdata[0]=0xff;
  alt_avalon_spi_command(SPI_BASE,0,1,wrdata,0,NULL,0);//发送8个时钟
return(0);    			//返回0,表示扇区写操作成功
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -