From f382f4442e38227a983ad0a966b00c6d42b3911f Mon Sep 17 00:00:00 2001 From: danicampora Date: Wed, 18 Mar 2015 21:48:28 +0100 Subject: cc3200: Fixes and improvements to the SD card driver. --- cc3200/fatfs/src/drivers/sd_diskio.c | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) (limited to 'cc3200/fatfs/src/drivers/sd_diskio.c') 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 @@ -286,6 +286,22 @@ DSTATUS sd_disk_init (void) { return sd_disk_info.bStatus; } +//***************************************************************************** +// +//! 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. @@ -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; } } -- cgit v1.2.3