diff options
| author | danicampora | 2015-03-18 21:48:28 +0100 |
|---|---|---|
| committer | danicampora | 2015-03-18 21:55:02 +0100 |
| commit | f382f4442e38227a983ad0a966b00c6d42b3911f (patch) | |
| tree | 439e813bfc9f1d64de976a197bea15d852bc5c07 /cc3200/fatfs/src/drivers | |
| parent | 963d7c7ee6b698dc289656edc08942aab33681e9 (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.c | 22 | ||||
| -rw-r--r-- | cc3200/fatfs/src/drivers/sd_diskio.h | 1 |
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); |
