📄 sd卡的读操作.c
字号:
urlsigned char SD_read_sector(unsigned long address,unsigned char{buffer)
//SD卡读函数
unsigned char rddata[1],wrdata[1];
unsigned int j;
unsigned char cmdl7[]={0x51,0x00,0x00,0x00,0x00,0xff};//CMDl7
address<<=9; //将扇区地址转化为字节地址
cmdl7[1]=((address & 0xff000000)>>24); //将字节地址写入到CMDl7当中
cmdl7[2]=((address & 0x00ff0000)>>16);
cmdl7[3]=((address & 0x0000ff00)>>8);
CS_EN=0; //CS_EN置为低电平,使SPI内核的SS_n不被屏蔽
IOWR_ALTERA_AVALON_PIO_DATA(CS_EN_BASE,CS_EN);
do
{ rddata[0]=Write_Cmd(cmdl7); //写入CMDl7命令并读取返回值
}
while(rddata[0]!=0); //返回值为0表示命令写入成功
do
{
alt_avalon_spi_command(SPI_BASE,0,0,NULL,1,rddata,1);
}
while(rddata[0]!=0xfe);//从DO上读取数据,当数据为0xfe时,
//表示后续字节是512字节的数据
alt_avalon_spi_command(SPI_BASE,0,0,NULL,512,buffer,1);
alt_avalon_spi_command(SPI_BASE,0,0,NULL,1,rddata,1);
//读取两个字节的CRC校验码
alt_avalon_spi_command(SPI_BASE,0,0,NULL,1,rddata,1);
CS_EN=1;
IOWR_ALTERA_AVALON_PIO_DATA(CS_EN_BASE,CS_EN);
//将SD卡的CS置为高电平,关闭SD卡的片选
wrdata[0]=0xff;
alt_avalon_spi_command(SPI_BASE,0,1,WRDATA,0,NULL,0);
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -