Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: 4DGL-uLCD-SE FATFileSystem
Fork of SDFileSystem by
Diff: SDFileSystem.cpp
- Revision:
- 2:eec1db773e7d
- Parent:
- 1:25f4ba436b81
- Child:
- 3:7cf3d1835ef5
--- a/SDFileSystem.cpp Wed Jul 30 15:36:56 2014 +0000
+++ b/SDFileSystem.cpp Wed Jul 30 17:40:10 2014 +0000
@@ -93,7 +93,6 @@
resp = writeCommand(CMD58, 0);
if (resp != 0x01 || !(readReturn() & (1 << 20))) {
//Initialization failed
- deselect();
m_CardType = CARD_UNKNOWN;
return m_Status;
}
@@ -128,13 +127,10 @@
}
} else {
//Didn't respond or illegal command, this is either an SDCv1 or MMC card
- deselect();
-
//Send CMD58(0) to read the OCR, and verify that the card supports 3.2-3.3V
resp = writeCommand(CMD58, 0);
if (resp != 0x01 || !(readReturn() & (1 << 20))) {
//Initialization failed
- deselect();
m_CardType = CARD_UNKNOWN;
return m_Status;
}
@@ -234,7 +230,6 @@
return RES_OK;
} else {
//The command failed
- deselect();
return RES_ERROR;
}
}
@@ -263,7 +258,7 @@
if (writeCommand(CMD24, sector) == 0x00) {
//Wait for up to 500ms for the card to become ready
if (!waitReady(500)) {
- //We timed out
+ //We timed out, deselect and loop again
deselect();
continue;
}
@@ -291,7 +286,6 @@
return RES_ERROR;
} else {
//The command failed
- deselect();
return RES_ERROR;
}
}
@@ -338,7 +332,6 @@
}
} else {
//The command failed
- deselect();
return 0;
}
}
@@ -405,14 +398,14 @@
//Try to send the command up to 3 times
for (int i = 0; i < 3; i++) {
- //Send a CMD55 prior to an ACMD
+ //Send CMD55 prior to an ACMD
if (cmd == ACMD41) {
resp = writeCommand(CMD55, 0);
if (resp > 0x01)
return resp;
}
- //Select the card and wait for ready
+ //Select the card, and wait for ready
if (!select())
return 0xFF;
@@ -436,11 +429,11 @@
break;
}
- //Deselect the card unless there's more data to read/write
- if (resp == 0xFF || (resp & (1 << 3)) || !(cmd == CMD8 || cmd == CMD9 || cmd == CMD17 || cmd == CMD24 || cmd == CMD55 || cmd == CMD58))
+ //Deselect the card on errors, or if the transaction is finished
+ if (resp > 0x01 || !(cmd == CMD8 || cmd == CMD9 || cmd == CMD17 || cmd == CMD24 || cmd == CMD55 || cmd == CMD58))
deselect();
- //Return the response if there were no CRC errors
+ //Return the response unless there were CRC errors
if (resp == 0xFF || !(resp & (1 << 3)))
return resp;
}
