diff options
author | Damien George <damien.p.george@gmail.com> | 2015-10-10 00:07:40 +0100 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2015-10-10 00:07:40 +0100 |
commit | 24652228af186d257bd273ddc8a4e07689d1a987 (patch) | |
tree | 7695ada16f7eb1d4570eaaa60a721c3d3bddea7b /drivers/sdcard/sdcard.py | |
parent | 845b5a2a582023caf484f87e6f12abc715f6b922 (diff) | |
download | micropython-24652228af186d257bd273ddc8a4e07689d1a987.tar.gz micropython-24652228af186d257bd273ddc8a4e07689d1a987.zip |
drivers/sdcard: Allow up to 5 retries to initialise SD card.
Apparently some cards need more than 2 retries. See issue #1482.
Diffstat (limited to 'drivers/sdcard/sdcard.py')
-rw-r--r-- | drivers/sdcard/sdcard.py | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/sdcard/sdcard.py b/drivers/sdcard/sdcard.py index e51a594d8e..a3372e3152 100644 --- a/drivers/sdcard/sdcard.py +++ b/drivers/sdcard/sdcard.py @@ -51,10 +51,12 @@ class SDCard: for i in range(16): self.spi.send(0xff) - # CMD0: init card; should return R1_IDLE_STATE (allow 2 attempts) - if self.cmd(0, 0, 0x95) != R1_IDLE_STATE: - if self.cmd(0, 0, 0x95) != R1_IDLE_STATE: - raise OSError("no SD card") + # CMD0: init card; should return R1_IDLE_STATE (allow 5 attempts) + for _ in range(5): + if self.cmd(0, 0, 0x95) == R1_IDLE_STATE: + break + else: + raise OSError("no SD card") # CMD8: determine card version r = self.cmd(8, 0x01aa, 0x87, 4) |