This module implements the SPI layer needed to control a micro SD card. More...
![]() |
Defines | |
#define | CMD0 (0) |
GO_IDLE_STATE. | |
#define | CMD1 (1) |
SEND_OP_COND. | |
#define | ACMD41 (41 | 0x80) |
SEND_OP_COND (SDC). | |
#define | CMD8 (8) |
SEND_IF_COND. | |
#define | CMD9 (9) |
SEND_CSD. | |
#define | CMD10 (10) |
SEND_CID. | |
#define | CMD12 (12) |
STOP_TRANSMISSION. | |
#define | ACMD13 (13 | 0x80) |
SD_STATUS (SDC). | |
#define | CMD16 (16) |
SET_BLOCKLEN. | |
#define | CMD17 (17) |
READ_SINGLE_BLOCK. | |
#define | CMD18 (18) |
READ_MULTIPLE_BLOCK. | |
#define | CMD23 (23) |
SET_BLOCK_COUNT. | |
#define | ACMD23 (23 | 0x80) |
SET_WR_BLK_ERASE_COUNT (SDC). | |
#define | CMD24 (24) |
WRITE_BLOCK. | |
#define | CMD25 (25) |
WRITE_MULTIPLE_BLOCK. | |
#define | CMD41 (41) |
SEND_OP_COND (ACMD). | |
#define | CMD55 (55) |
APP_CMD. | |
#define | CMD58 (58) |
READ_OCR. | |
Functions | |
void | MICROSD_Init (void) |
Initialize the SPI peripheral for microSD card usage. | |
void | MICROSD_Deinit (void) |
Deinitialize SPI peripheral. | |
int | MICROSD_Select (void) |
Select the micro SD card and wait for the card to become ready. | |
void | MICROSD_Deselect (void) |
Deselect the micro SD card and release the SPI bus. | |
void | MICROSD_PowerOn (void) |
Turn on micro SD card power. | |
void | MICROSD_PowerOff (void) |
Turn off micro SD card power. | |
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. | |
uint8_t | MICROSD_SendCmd (uint8_t cmd, DWORD arg) |
Send a command packet to micro SD card. | |
uint8_t | MICROSD_XferSpi (uint8_t data) |
Do one SPI transfer. | |
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. |
This module implements the SPI layer needed to control a micro SD card.
#define CMD0 (0) |
#define CMD12 (12) |
#define CMD55 (55) |
#define CMD8 (8) |
int MICROSD_BlockRx | ( | uint8_t * | buff, | |
uint32_t | btr | |||
) |
Receive a data block from micro SD card.
[out] | buff | Data buffer to store received data. |
btr | Byte count (must be multiple of 4). |
Definition at line 189 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.
[in] | buff | 512 bytes data block to be transmitted. |
token | Data token. |
Definition at line 255 of file microsd.c.
References MICROSD_XferSpi().
void MICROSD_Deinit | ( | void | ) |
void MICROSD_Deselect | ( | void | ) |
Deselect the micro SD card and release the SPI bus.
Definition at line 136 of file microsd.c.
References MICROSD_XferSpi().
Referenced by MICROSD_PowerOff(), MICROSD_Select(), and MICROSD_SendCmd().
void MICROSD_Init | ( | void | ) |
void MICROSD_PowerOff | ( | void | ) |
Turn off micro SD card power.
DK doesn't support socket power control, only disable the SPI clock.
Definition at line 171 of file microsd.c.
References MICROSD_Deselect(), and MICROSD_Select().
void MICROSD_PowerOn | ( | void | ) |
int MICROSD_Select | ( | void | ) |
Select the micro SD card and wait for the card to become ready.
Definition at line 146 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.
[in] | cmd | Command byte. |
[in] | arg | Argument. |
Definition at line 296 of file microsd.c.
References CMD0, CMD12, CMD55, CMD8, MICROSD_Deselect(), MICROSD_Select(), MICROSD_SendCmd(), and MICROSD_XferSpi().
Referenced by MICROSD_SendCmd().
void MICROSD_SpiClkFast | ( | void | ) |
void MICROSD_SpiClkSlow | ( | void | ) |
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.
[in] | msec | Millisecond timeout value (very approximate). |
uint8_t MICROSD_XferSpi | ( | uint8_t | data | ) |
Do one SPI transfer.
data | Byte to transmit. |
Definition at line 125 of file microsd.c.
Referenced by MICROSD_BlockRx(), MICROSD_BlockTx(), MICROSD_Deselect(), and MICROSD_SendCmd().