aboutsummaryrefslogtreecommitdiff
path: root/cc3200/fatfs/src/drivers
diff options
context:
space:
mode:
authordanicampora2015-03-18 21:48:28 +0100
committerdanicampora2015-03-18 21:55:02 +0100
commitf382f4442e38227a983ad0a966b00c6d42b3911f (patch)
tree439e813bfc9f1d64de976a197bea15d852bc5c07 /cc3200/fatfs/src/drivers
parent963d7c7ee6b698dc289656edc08942aab33681e9 (diff)
cc3200: Fixes and improvements to the SD card driver.
Diffstat (limited to 'cc3200/fatfs/src/drivers')
-rw-r--r--cc3200/fatfs/src/drivers/sd_diskio.c22
-rw-r--r--cc3200/fatfs/src/drivers/sd_diskio.h1
2 files changed, 18 insertions, 5 deletions
diff --git a/cc3200/fatfs/src/drivers/sd_diskio.c b/cc3200/fatfs/src/drivers/sd_diskio.c
index 57ff5ae62..733bc5201 100644
--- a/cc3200/fatfs/src/drivers/sd_diskio.c
+++ b/cc3200/fatfs/src/drivers/sd_diskio.c
@@ -88,7 +88,7 @@ DiskInfo_t sd_disk_info = {CARD_TYPE_UNKNOWN, CARD_VERSION_1, CARD_CAP_CLASS_SD
static unsigned int CardSendCmd (unsigned int ulCmd, unsigned int ulArg) {
unsigned long ulStatus;
- // Clear interrupt status
+ // Clear the interrupt status
MAP_SDHostIntClear(SDHOST_BASE,0xFFFFFFFF);
// Send command
@@ -288,6 +288,22 @@ DSTATUS sd_disk_init (void) {
//*****************************************************************************
//
+//! De-initializes the physical drive
+//!
+//! This function de-initializes the physical drive
+//*****************************************************************************
+void sd_disk_deinit (void) {
+ sd_disk_info.ucCardType = CARD_TYPE_UNKNOWN;
+ sd_disk_info.ulVersion = CARD_VERSION_1;
+ sd_disk_info.ulCapClass = CARD_CAP_CLASS_SDSC;
+ sd_disk_info.ulNofBlock = 0;
+ sd_disk_info.ulBlockSize = 0;
+ sd_disk_info.bStatus = STA_NOINIT;
+ sd_disk_info.usRCA = 0;
+}
+
+//*****************************************************************************
+//
//! Gets the disk status.
//!
//! This function gets the current status of the drive.
@@ -360,8 +376,6 @@ DRESULT sd_disk_read (BYTE* pBuffer, DWORD ulSectorNumber, UINT SectorCount) {
pBuffer += 4;
}
CardSendCmd(CMD_STOP_TRANS, 0);
- // Wait for the command to complete
- while (!(MAP_SDHostIntStatus(SDHOST_BASE) & SDHOST_INT_TC));
Res = RES_OK;
}
}
@@ -432,8 +446,6 @@ DRESULT sd_disk_write (const BYTE* pBuffer, DWORD ulSectorNumber, UINT SectorCou
// Wait for transfer complete
while (!(MAP_SDHostIntStatus(SDHOST_BASE) & SDHOST_INT_TC));
CardSendCmd(CMD_STOP_TRANS, 0);
- // Wait for the command to complete
- while (!(MAP_SDHostIntStatus(SDHOST_BASE) & SDHOST_INT_TC));
Res = RES_OK;
}
}
diff --git a/cc3200/fatfs/src/drivers/sd_diskio.h b/cc3200/fatfs/src/drivers/sd_diskio.h
index 93135c798..7867b3acf 100644
--- a/cc3200/fatfs/src/drivers/sd_diskio.h
+++ b/cc3200/fatfs/src/drivers/sd_diskio.h
@@ -20,6 +20,7 @@ typedef struct
extern DiskInfo_t sd_disk_info;
DSTATUS sd_disk_init (void);
+void sd_disk_deinit (void);
DSTATUS sd_disk_status (void);
bool sd_disk_ready (void);
DRESULT sd_disk_read (BYTE* pBuffer, DWORD ulSectorNumber, UINT bSectorCount);