Loading...
Searching...
No Matches
sdhc.h File Reference

SD card interface functions for sam0 class devices. More...

Detailed Description

SD card interface functions for sam0 class devices.

Author
alkgrove bob@a.nosp@m.lkgr.nosp@m.ove.c.nosp@m.om
Benjamin Valentin benja.nosp@m.min..nosp@m.valen.nosp@m.tin@.nosp@m.ml-pa.nosp@m..com

Definition in file sdhc.h.

#include <stdint.h>
#include <stdbool.h>
#include "periph/gpio.h"
#include "mutex.h"
+ Include dependency graph for sdhc.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  sdhc_state_t
 SD Card driver context. More...
 

Macros

#define SD_MMC_BLOCK_SIZE   512
 This SD stack uses the maximum block size authorized (512 bytes)
 
#define SDHC_SLOW_CLOCK_HZ   400000
 Clock frequency on init.
 
#define SDHC_FAST_CLOCK_HZ   25000000
 Clock frequency after init.
 

Functions

int sdhc_init (sdhc_state_t *state)
 Initialize the SD host controller.
 
bool sdhc_send_cmd (sdhc_state_t *state, uint32_t cmd, uint32_t arg)
 Send a command to the SD card.
 
int sdhc_read_blocks (sdhc_state_t *state, uint32_t block, void *dst, uint16_t num)
 Read blocks from the SD card into memory.
 
int sdhc_write_blocks (sdhc_state_t *state, uint32_t block, const void *src, uint16_t num)
 Write memory to SD card blocks.
 
int sdhc_erase_blocks (sdhc_state_t *state, uint32_t block, uint16_t num)
 Erase memory from SD card blocks.
 

Card Types

#define CARD_TYPE_UNKNOWN   (0)
 Unknown type card.
 
#define CARD_TYPE_SD   (1 << 0)
 SD card.
 
#define CARD_TYPE_MMC   (1 << 1)
 MMC card.
 
#define CARD_TYPE_SDIO   (1 << 2)
 SDIO card.
 
#define CARD_TYPE_HC   (1 << 3)
 High capacity card.
 
#define CARD_TYPE_SD_COMBO   (CARD_TYPE_SD | CARD_TYPE_SDIO)
 SD combo card (io + memory)
 

Card Versions

#define CARD_VER_UNKNOWN   (0)
 Unknown card version.
 
#define CARD_VER_SD_1_0   (0x10)
 SD version 1.0 and 1.01.
 
#define CARD_VER_SD_1_10   (0x1A)
 SD version 1.10.
 
#define CARD_VER_SD_2_0   (0X20)
 SD version 2.00.
 
#define CARD_VER_SD_3_0   (0X30)
 SD version 3.0X.
 
#define CARD_VER_MMC_1_2   (0x12)
 MMC version 1.2.
 
#define CARD_VER_MMC_1_4   (0x14)
 MMC version 1.4.
 
#define CARD_VER_MMC_2_2   (0x22)
 MMC version 2.2.
 
#define CARD_VER_MMC_3   (0x30)
 MMC version 3.
 
#define CARD_VER_MMC_4   (0x40)
 MMC version 4.
 

Flags used to define MCI parser for SD/MMC command

#define MCI_RESP_PRESENT   (1ul << 8)
 Have response.
 
#define MCI_RESP_136   (1ul << 11)
 136 bit response
 
#define MCI_RESP_CRC   (1ul << 12)
 Expect valid crc.
 
#define MCI_RESP_BUSY   (1ul << 13)
 Card may send busy.
 
#define MCI_CMD_OPENDRAIN   (1ul << 14)
 Open drain for a broadcast command.
 
#define MCI_CMD_WRITE   (1ul << 15)
 To signal a data write operation.
 
#define MCI_CMD_SDIO_BYTE   (1ul << 16)
 To signal a SDIO transfer in multi byte mode.
 
#define MCI_CMD_SDIO_BLOCK   (1ul << 17)
 To signal a SDIO transfer in block mode.
 
#define MCI_CMD_STREAM   (1ul << 18)
 To signal a data transfer in stream mode.
 
#define MCI_CMD_SINGLE_BLOCK   (1ul << 19)
 To signal a data transfer in single block mode.
 
#define MCI_CMD_MULTI_BLOCK   (1ul << 20)
 To signal a data transfer in multi block mode.