summaryrefslogtreecommitdiffstatshomepage
path: root/drivers/sdcard/sdcard.py
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2015-10-10 00:07:40 +0100
committerDamien George <damien.p.george@gmail.com>2015-10-10 00:07:40 +0100
commit24652228af186d257bd273ddc8a4e07689d1a987 (patch)
tree7695ada16f7eb1d4570eaaa60a721c3d3bddea7b /drivers/sdcard/sdcard.py
parent845b5a2a582023caf484f87e6f12abc715f6b922 (diff)
downloadmicropython-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.py10
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)