Community
cancel
Showing results for 
Search instead for 
Did you mean: 
Altera_Forum
Honored Contributor I
897 Views

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
0 Kudos
0 Replies
Reply