All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
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.