Forum Discussion

Altera_Forum's avatar
Altera_Forum
Icon for Honored Contributor rankHonored Contributor
7 years ago

SD card CRC Ok response in DE4_SDCARD Demo when executing CMD24 Write block command

Hi everyone

I am referring to the DE4_SDCARD demo by Altera provided with DE-4 board and working in 1-bit SD mode.

When applying a block write operation using command CMD24 for example I am not getting SD card busy status so where after I can check CRC Ok response.

I mean to say after applying STOP bit, I assume the card must go busy for writing the data physically but just after applying next clock I am getting high '1' on the DAT0 line which means card is never gone busy for writing. However to my luck the data is also written down successfully but I still want to monitor the response of CRC check after sending STOP bit which I cannot in current scenario.

Please help me, the code snap is given below and problem is highlighted in line ////>>>>>>>>>>>>>>>

// write data (512byte = 1 block)

for(i=0;i<nDataLen;i++)

{

Data8 = szDataWrite[i];

for(j=0;j<8;j++)

{

SD_CLK_LOW;

if (Data8 & 0x80)

SD_DAT_HIGH;

else

SD_DAT_LOW;

SD_CLK_HIGH;

Data8 <<= 1;

}

}

// send CRC

j=0;

for(i=0;i<16;i++){

SD_CLK_LOW;

if (DataCrc16 & 0x8000)

SD_DAT_HIGH;

else

SD_DAT_LOW;

SD_CLK_HIGH;

DataCrc16 <<= 1;

}

// stop bits (value 'one')

SD_CLK_LOW;

SD_DAT_HIGH;

SD_CLK_HIGH;

////>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Just below code after STOP bit is already sent I am getting 0xff which means only 1's no zero indicating busy for sd card.

//===== check busy bits (data0 only)

SD_DAT_IN;

for(i=0; i<8; i++) //wait for response

{

SD_CLK_LOW;

SD_CLK_HIGH;

Response <<= 1;

if(SD_TEST_DAT) Response|=0x01;

}

printf("Response is: 0x%02x\n", Response); //Prints always 0xff

Please help me come out from this problem so I can check the CRC ok response on DAT0 line after STOP bit
No RepliesBe the first to reply