Fix SD-Card initialization process
After command ACMD41 was being sent we were not waiting for the error idle state bit being cleared, so we were really never going out from the initialization phase.
This commit is contained in:
@@ -42,4 +42,8 @@ extern void sd_card_init(void);
|
||||
//#define CT_SDC (CT_SD1|CT_SD2) /* SD */
|
||||
#define CT_BLOCK 0x08 /* Block addressing */
|
||||
|
||||
/* SD error code bits */
|
||||
#define SD_ERR_IDLE_STATE 0x01
|
||||
#define SD_ERR_ILLEGAL_CMD 0x04
|
||||
|
||||
#endif /* _SD_CARD_H_ */
|
||||
|
||||
@@ -424,7 +424,7 @@ DSTATUS disk_initialize(uint8_t drv)
|
||||
while (MCF_SLT_SCNT(0) - target > 0)
|
||||
{
|
||||
res = send_cmd(ACMD41, 1UL << 30); /* Wait for end of initialization with ACMD41(HCS) */
|
||||
if (res != 0xff)
|
||||
if ((res & SD_ERR_IDLE_STATE) == 0)
|
||||
break;
|
||||
}
|
||||
debug_printf("res = %d\r\n", res);
|
||||
|
||||
Reference in New Issue
Block a user