27,382
社区成员
发帖
与我相关
我的任务
分享
bit SD_Reset()
{
char dataa[6]={0x40,0x00,0x00,0x00,0x00,0x95};
unsigned char dir,returndata=0;
CS=1;
for(dir=0;dir<120;dir++)
SPI_Rw(0xff);
CS=0;
SPI_Rw(dataa[0]);
SPI_Rw(dataa[1]);
SPI_Rw(dataa[2]);
SPI_Rw(dataa[3]);
SPI_Rw(dataa[4]);
SPI_Rw(dataa[5]);
do
{
returndata=SPI_Rw(0xff);
dir++;
}
while((returndata!=01)&&(dir<240));
CS=1;
SPI_Rw(0xff);
if(returndata==0x01)
return (1);
else
return (0);
}
bit SD_Init()
{
char dataa[6]={0x41,0x00,0x00,0x00,0x00,0xff};
unsigned char dir=0,returndata=0;
CS=0;
SPI_Rw(dataa[0]);
SPI_Rw(dataa[1]);
SPI_Rw(dataa[2]);
SPI_Rw(dataa[3]);
SPI_Rw(dataa[4]);
SPI_Rw(dataa[5]);
do
{
returndata=SPI_Rw(0xff);
dir++;
}
while(((returndata!=0x00)&&(dir<240)));
SBUF=returndata;
while(1);
CS=1;
SPI_Rw(0xff);
if(returndata==0x00)
return (1);
else
return (0);
}
SBUF=SD_Reset();
flag=1;//spi减速标志,减速后spi有任何改变都延时200us
SBUF=SD_Init();