?? 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 + -