Merge pull request #2088 from rhounsell/MK3

Fix for Toshiba FlashAir (or other) SD card initialization
This commit is contained in:
DRracer 2019-12-15 11:46:56 +01:00 committed by GitHub
commit c45d4f4bba
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 18 additions and 0 deletions

View File

@ -319,6 +319,22 @@ bool Sd2Card::init(uint8_t sckRateID, uint8_t chipSelectPin) {
goto fail;
}
}
// send 0xFF until 0xFF received to give card some clock cycles
t0 = (uint16_t)_millis();
SERIAL_ECHOLNRPGM(PSTR("Sending 0xFF"));
spiSend(0XFF);
while ((status_ = spiRec()) != 0xFF)
{
spiSend(0XFF);
if (((uint16_t)_millis() - t0) > SD_CARD_ERROR_FF_TIMEOUT)
{
error(SD_CARD_ERROR_CMD8);
SERIAL_ECHOLNRPGM(PSTR("No 0xFF received"));
goto fail;
}
}
// check SD version
if ((cardCommand(CMD8, 0x1AA) & R1_ILLEGAL_COMMAND)) {
type(SD_CARD_TYPE_SD1);

View File

@ -105,6 +105,8 @@ uint8_t const SD_CARD_ERROR_SCK_RATE = 0X18;
uint8_t const SD_CARD_ERROR_INIT_NOT_CALLED = 0X19;
/** crc check error */
uint8_t const SD_CARD_ERROR_CRC = 0X20;
/** no response to sent 0xFF */
uint8_t const SD_CARD_ERROR_FF_TIMEOUT = 0X21;
/** Toshiba FlashAir: iSDIO */
uint8_t const SD_CARD_ERROR_CMD48 = 0x80;