Microchip® Advanced Software Framework

sd_mmc_spi.h File Reference

Common SPI interface for SD/MMC stack.

Copyright (c) 2014-2018 Microchip Technology Inc. and its subsidiaries.

#include "compiler.h"
#include "sd_mmc_protocol.h"

Macros

Return error codes
#define SD_MMC_SPI_NO_ERR   0
 
#define SD_MMC_SPI_ERR   1
 
#define SD_MMC_SPI_ERR_RESP_TIMEOUT   2
 
#define SD_MMC_SPI_ERR_RESP_BUSY_TIMEOUT   3
 
#define SD_MMC_SPI_ERR_READ_TIMEOUT   4
 
#define SD_MMC_SPI_ERR_WRITE_TIMEOUT   5
 
#define SD_MMC_SPI_ERR_RESP_CRC   6
 
#define SD_MMC_SPI_ERR_READ_CRC   7
 
#define SD_MMC_SPI_ERR_WRITE_CRC   8
 
#define SD_MMC_SPI_ERR_ILLEGAL_COMMAND   9
 
#define SD_MMC_SPI_ERR_WRITE   10
 
#define SD_MMC_SPI_ERR_OUT_OF_RANGE   11
 

Typedefs

typedef uint8_t sd_mmc_spi_errno_t
 Type of return error code. More...
 

Functions

bool sd_mmc_spi_adtc_start (sdmmc_cmd_def_t cmd, uint32_t arg, uint16_t block_size, uint16_t nb_block, bool access_block)
 Send a adtc command on the selected slot A adtc command is used for read/write access. More...
 
bool sd_mmc_spi_adtc_stop (sdmmc_cmd_def_t cmd, uint32_t arg)
 Send a command to stop a adtc command on the selected slot. More...
 
void sd_mmc_spi_deselect_device (uint8_t slot)
 Deselect a slot. More...
 
static __inline__ uint8_t sd_mmc_spi_get_bus_width (uint8_t slot)
 Return the maximum bus width of a slot. More...
 
sd_mmc_spi_errno_t sd_mmc_spi_get_errno (void)
 Return the error code of last function. More...
 
uint32_t sd_mmc_spi_get_response (void)
 Return the 32 bits response of the last command. More...
 
static __inline__ void sd_mmc_spi_get_response_128 (uint8_t *resp)
 
void sd_mmc_spi_init (void)
 Initializes the low level driver. More...
 
static __inline__ bool sd_mmc_spi_is_high_speed_capable (void)
 Return the high speed capability of the driver. More...
 
bool sd_mmc_spi_read_word (uint32_t *value)
 Read a word on the line. More...
 
void sd_mmc_spi_select_device (uint8_t slot, uint32_t clock, uint8_t bus_width, bool high_speed)
 Select a slot and initialize it. More...
 
void sd_mmc_spi_send_clock (void)
 Send 74 clock cycles on the line of selected slot Note: It is required after card plug and before card install. More...
 
bool sd_mmc_spi_send_cmd (sdmmc_cmd_def_t cmd, uint32_t arg)
 Send a command on the selected slot. More...
 
bool sd_mmc_spi_start_read_blocks (void *dest, uint16_t nb_block)
 Start a read blocks transfer on the line Note: The driver will use the DMA available to speed up the transfer. More...
 
bool sd_mmc_spi_start_write_blocks (const void *src, uint16_t nb_block)
 Start a write blocks transfer on the line Note: The driver will use the DMA available to speed up the transfer. More...
 
bool sd_mmc_spi_wait_end_of_read_blocks (void)
 Wait the end of transfer initiated by mci_start_read_blocks() More...
 
bool sd_mmc_spi_wait_end_of_write_blocks (void)
 Wait the end of transfer initiated by mci_start_write_blocks() More...
 
bool sd_mmc_spi_write_word (uint32_t value)
 Write a word on the line. More...