diff --git a/src/ersky9x/diskio.c b/src/ersky9x/diskio.c index d47e97b31..42cae763e 100644 --- a/src/ersky9x/diskio.c +++ b/src/ersky9x/diskio.c @@ -854,9 +854,10 @@ void sdPoll10mS() break; case SD_ST_DATA: - f_mount(0, &g_FATFS_Obj); - retrieveAvailableAudioFiles(); - Card_state = SD_ST_MOUNTED; + if (f_mount(0, &g_FATFS_Obj) == FR_OK) { + retrieveAvailableAudioFiles(); + Card_state = SD_ST_MOUNTED; + } break; case SD_ST_ERR: @@ -901,13 +902,21 @@ void sdInit() sdCmd9(); sdCmd7(); // Select Card + + CoTickDelay(1); // 2ms + sdAcmd51(); sdAcmd6(); // Set bus width to 4 bits, and speed to 9 MHz - // Should check the card can do this **** - f_mount(0, &g_FATFS_Obj); - retrieveAvailableAudioFiles(); + CoTickDelay(1); // 2ms + // Should check the card can do this **** + if (f_mount(0, &g_FATFS_Obj) != FR_OK) { + Card_state = SD_ST_DATA; + return; + } + + retrieveAvailableAudioFiles(); Card_state = SD_ST_MOUNTED; }