Detailed Description

SPI driver for micro SD card.

Simple micro SD SPI driver with power control and block transfer support.

Macros

#define ACMD13 (13 | 0x80)
#define ACMD23 (23 | 0x80)
#define ACMD41 (41 | 0x80)
#define CMD0 (0)
#define CMD1 (1)
#define CMD10 (10)
#define CMD12 (12)
#define CMD16 (16)
#define CMD17 (17)
#define CMD18 (18)
#define CMD23 (23)
#define CMD24 (24)
#define CMD25 (25)
#define CMD41 (41)
#define CMD55 (55)
#define CMD58 (58)
#define CMD8 (8)
#define CMD9 (9)

Functions

int MICROSD_BlockRx (uint8_t *buff, uint32_t btr)
Receive a data block from micro SD card.
int MICROSD_BlockTx (const uint8_t *buff, uint8_t token)
Send a data block to micro SD card.
void MICROSD_Deinit (void)
Deinitialize SPI peripheral. Turn off the SPI peripheral and disable SPI GPIO pins.
void MICROSD_Deselect (void)
Deselect the micro SD card and release the SPI bus.
void MICROSD_Init (void)
Initialize the SPI peripheral for microSD card usage. SPI pins and speed etc. is defined in microsdconfig.h.
void MICROSD_PowerOff (void)
Turn off micro SD card power. DK doesn't support socket power control, only disable the SPI clock.
void MICROSD_PowerOn (void)
Turn on micro SD card power. DK doesn't support socket power control, only enable the SPI clock.
int MICROSD_Select (void)
Select the micro SD card and wait for the card to become ready.
uint8_t MICROSD_SendCmd (uint8_t cmd, DWORD arg)
Send a command packet to micro SD card.
void MICROSD_SpiClkFast (void)
Set SPI clock to maximum frequency.
void MICROSD_SpiClkSlow (void)
Set SPI clock to a low frequency suitable for initial card initialization.
bool MICROSD_TimeOutElapsed (void)
Check if timeout value set with MICROSD_TimeOutSet() has elapsed.
void MICROSD_TimeOutSet (uint32_t msec)
Set a timeout value. The timeout value will be decremented towards zero when SPI traffic to/from the micro SD card takes place. Use MICROSD_TimeOutElapsed() to check if timeout has elapsed.
uint8_t MICROSD_XferSpi (uint8_t data)
Do one SPI transfer.

Macro Definition Documentation

#define ACMD13   (13 | 0x80)

SD_STATUS (SDC)

Definition at line 61 of file microsd.h .

#define ACMD23   (23 | 0x80)

SET_WR_BLK_ERASE_COUNT (SDC)

Definition at line 66 of file microsd.h .

#define ACMD41   (41 | 0x80)

SEND_OP_COND (SDC)

Definition at line 56 of file microsd.h .

#define CMD0   (0)

GO_IDLE_STATE

Definition at line 54 of file microsd.h .

Referenced by MICROSD_SendCmd() .

#define CMD1   (1)

SEND_OP_COND

Definition at line 55 of file microsd.h .

#define CMD10   (10)

SEND_CID

Definition at line 59 of file microsd.h .

#define CMD12   (12)

STOP_TRANSMISSION

Definition at line 60 of file microsd.h .

Referenced by MICROSD_SendCmd() .

#define CMD16   (16)

SET_BLOCKLEN

Definition at line 62 of file microsd.h .

#define CMD17   (17)

READ_SINGLE_BLOCK

Definition at line 63 of file microsd.h .

#define CMD18   (18)

READ_MULTIPLE_BLOCK

Definition at line 64 of file microsd.h .

#define CMD23   (23)

SET_BLOCK_COUNT

Definition at line 65 of file microsd.h .

#define CMD24   (24)

WRITE_BLOCK

Definition at line 67 of file microsd.h .

#define CMD25   (25)

WRITE_MULTIPLE_BLOCK

Definition at line 68 of file microsd.h .

#define CMD41   (41)

SEND_OP_COND (ACMD)

Definition at line 69 of file microsd.h .

#define CMD55   (55)

APP_CMD

Definition at line 70 of file microsd.h .

Referenced by MICROSD_SendCmd() .

#define CMD58   (58)

READ_OCR

Definition at line 71 of file microsd.h .

#define CMD8   (8)

SEND_IF_COND

Definition at line 57 of file microsd.h .

Referenced by MICROSD_SendCmd() .

#define CMD9   (9)

SEND_CSD

Definition at line 58 of file microsd.h .

Function Documentation

int MICROSD_BlockRx ( uint8_t * buff,
uint32_t btr
)

Receive a data block from micro SD card.

Parameters
[out] buff Data buffer to store received data.
btr Byte count (must be multiple of 4).
Returns
1:OK, 0:Failed.

Definition at line 199 of file microsd.c .

References MICROSD_XferSpi() .

int MICROSD_BlockTx ( const uint8_t * buff,
uint8_t token
)

Send a data block to micro SD card.

Parameters
[in] buff 512 bytes data block to be transmitted.
token Data token.
Returns
1:OK, 0:Failed.

Definition at line 268 of file microsd.c .

References MICROSD_XferSpi() .

int MICROSD_Select ( void )

Select the micro SD card and wait for the card to become ready.

Returns
1:Successful, 0:Timeout.

Definition at line 157 of file microsd.c .

References MICROSD_Deselect() .

Referenced by MICROSD_PowerOff() , and MICROSD_SendCmd() .

uint8_t MICROSD_SendCmd ( uint8_t cmd,
DWORD arg
)

Send a command packet to micro SD card.

Parameters
[in] cmd Command byte.
[in] arg Argument.
Returns
Response value.

Definition at line 350 of file microsd.c .

References CMD0 , CMD12 , CMD55 , CMD8 , MICROSD_Deselect() , MICROSD_Select() , and MICROSD_XferSpi() .

bool MICROSD_TimeOutElapsed ( void )

Check if timeout value set with MICROSD_TimeOutSet() has elapsed.

Returns
True if timeout has elapsed.

Definition at line 434 of file microsd.c .

void MICROSD_TimeOutSet ( uint32_t msec )

Set a timeout value. The timeout value will be decremented towards zero when SPI traffic to/from the micro SD card takes place. Use MICROSD_TimeOutElapsed() to check if timeout has elapsed.

Parameters
[in] msec Millisecond timeout value (very approximate).

Definition at line 423 of file microsd.c .

uint8_t MICROSD_XferSpi ( uint8_t data )

Do one SPI transfer.

Parameters
data Byte to transmit.
Returns
Byte received.

Definition at line 135 of file microsd.c .

References USART_SpiTransfer() .

Referenced by MICROSD_BlockRx() , MICROSD_BlockTx() , MICROSD_Deselect() , and MICROSD_SendCmd() .