MicroSd
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) |
#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) |
#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) |
#define CMD58 (58) |
READ_OCR
Definition at line
71
of file
microsd.h
.
#define CMD8 (8) |
#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() .