HPM SDK
HPMicro Software Development Kit
hpm_sdmmc_host.h File Reference
#include "hpm_common.h"
#include "hpm_sdxc_drv.h"
#include "hpm_gpio_drv.h"

Go to the source code of this file.

Data Structures

struct  hpm_sdmmc_pin_info_t
 SDMMC Pin info structure. More...
 
struct  hpm_sdmmc_extra_io_data_t
 SDMMC extra Pin info. More...
 
struct  sdmmc_io_init_apis_t
 
struct  sdmmc_host_param_t
 
struct  sdmmc_host_t
 

Macros

#define HPM_SDMMC_HOST_SUPPORT_4BIT   (1UL << 0)
 
#define HPM_SDMMC_HOST_SUPPORT_8BIT   (1UL << 1)
 
#define HPM_SDMMC_HOST_SUPPORT_3V3   (1UL << 2)
 
#define HPM_SDMMC_HOST_SUPPORT_1V8   (1UL << 3)
 
#define HPM_SDMMC_HOST_SUPPORT_DDR   (1UL << 4)
 
#define HPM_SDMMC_HOST_SUPPORT_SDR50   (1UL << 5)
 
#define HPM_SDMMC_HOST_SUPPORT_SDR104   (1UL << 6)
 
#define HPM_SDMMC_HOST_SUPPORT_HS200   (1UL << 7)
 
#define HPM_SDMMC_HOST_SUPPORT_HS400   (1Ul << 8)
 
#define HPM_SDMMC_HOST_SUPPORT_CARD_DETECTION   (1UL << 16)
 
#define HPM_SDMMC_HOST_SUPPORT_VOLTAGE_SWITCH   (1UL << 17)
 
#define HPM_SDMMC_HOST_SUPPORT_POWER_SWITCH   (1UL << 18)
 
#define HPM_SDMMC_HOST_SUPPORT_WRITE_PROTECTION   (1UL << 19)
 
#define HPM_SDMMC_HOST_SUPPORT_RESET_PIN   (1UL << 20)
 
#define HPM_SDMMC_HOST_SUPPORT_DATA_STROBE   (1UL << 21)
 
#define HPM_SDMMC_HOST_CD_IN_IP   (HPM_SDMMC_HOST_SUPPORT_CARD_DETECTION << 8)
 
#define HPM_SDMMC_HOST_VSEL_IN_IP   (HPM_SDMMC_HOST_SUPPORT_VOLTAGE_SWITCH << 8)
 
#define HPM_SDMMC_HOST_PWR_IN_IP   (HPM_SDMMC_HOST_SUPPORT_POWER_SWITCH << 8)
 
#define HPM_SDMMC_HOST_WP_IN_IP   (HPM_SDMMC_HOST_SUPPORT_WRITE_PROTECTION << 8)
 
#define HPM_SDMMC_HOST_RST_IN_IP   (HPM_SDMMC_HOST_SUPPORT_RESET_PIN << 8)
 

Typedefs

typedef sdxc_xfer_t sdmmchost_xfer_t
 
typedef sdxc_command_t sdmmchost_cmd_t
 
typedef sdxc_data_t sdmmchost_data_t
 
typedef sdxc_adma2_descriptor_t sdmmc_adma2_desc_t
 
typedef SDXC_Type SDMMCHOST_Type
 
typedef sdxc_capabilities_t sdmmchost_capabilities_t
 
typedef uint32_t(* sdmmchost_clock_init_func_t) (SDMMCHOST_Type *base, uint32_t clk_freq, bool need_reverse)
 
typedef void(* sdmmchost_power_switch_func_t) (SDMMCHOST_Type *base, bool on_off)
 
typedef void(* sdmmchost_io_init_func_t) (SDMMCHOST_Type *base)
 
typedef void(* sdmmchost_switch_1v8_io_func_t) (SDMMCHOST_Type *base)
 
typedef void(* sdmmchost_cmd_line_init_func_t) (SDMMCHOST_Type *base, bool push_pull)
 
typedef bool(* sdmmchost_card_detect_func_t) (SDMMCHOST_Type *base)
 

Enumerations

enum  sdmmc_buswidth_t { sdmmc_bus_width_1bit = 0 , sdmmc_bus_width_4bit = 1 , sdmmc_bus_width_8bit = 2 }
 SD/MMC Bus Width definitions. More...
 
enum  sdmmc_dev_type_t { sdmmc_dev_type_emmc = 0 , sdmmc_dev_type_sd = 1 , sdmmc_dev_type_sdio = 2 }
 SD/MMC Device Type definitions. More...
 
enum  sdmmc_card_detection_mode_t { sdmmc_host_card_detection_none = 0 , sdmmc_host_card_detection_via_gpio = 1 , sdmmc_host_card_detection_via_sdxc = 2 }
 SD/MMC Host Card Detection Modes. More...
 
enum  hpm_sdmmc_io_volt_t { hpm_sdmmc_io_voltage_3v3 = 0 , hpm_sdmmc_io_voltage_1v8 = 1 }
 SDMMC IO Voltage. More...
 
enum  hpm_sdmmc_operation_mode_t { hpm_sdmmc_operation_mode_inactive = 0 , hpm_sdmmc_operation_mode_identification = 1 , hpm_sdmmc_operation_mode_transfer = 2 , hpm_sdmmc_operation_mode_interrupt = 3 }
 SDMMC Operattion mode. More...
 
enum  sdmmc_speed_mode_t {
  sdmmc_sd_speed_normal = 0 , sdmmc_sd_speed_high = 1 , sdmmc_sd_speed_sdr12 = sdmmc_sd_speed_normal , sdmmc_sd_speed_sdr25 = sdmmc_sd_speed_high ,
  sdmmc_sd_speed_sdr50 = 2 , sdmmc_sd_speed_sdr104 = 3 , sdmmc_sd_speed_ddr50 = 4 , sdmmc_emmc_speed_legacy = 0 ,
  sdmmc_emmc_speed_high_speed_sdr = 1 , sdmmc_emmc_speed_hs200 = 3 , sdmmc_emmc_speed_high_speed_ddr = 4 , sdmmc_emmc_speed_hs400 = 7
}
 SD/MMC Speed definitions. More...
 
enum  hpm_sdmmc_power_option_t { hpm_sdmmc_power_off = 0 , hpm_sdmmc_power_up = 1 , hpm_sdmmc_power_on = 2 }
 

Functions

hpm_stat_t sdmmchost_init (sdmmc_host_t *host)
 
void sdmmchost_set_card_bus_width (sdmmc_host_t *host, sdmmc_buswidth_t bus_width)
 
uint32_t sdmmchost_set_card_clock (sdmmc_host_t *host, uint32_t freq, bool clock_inverse)
 
void sdmmchost_deinit (sdmmc_host_t *host)
 
void sdmmchost_reset (sdmmc_host_t *host)
 
void sdmmchost_wait_card_active (sdmmc_host_t *host)
 
hpm_stat_t sdmmchost_send_command (sdmmc_host_t *host, sdmmchost_cmd_t *cmd)
 
hpm_stat_t sdmmchost_transfer (sdmmc_host_t *host, sdmmchost_xfer_t *content)
 
bool sdmmchost_is_card_detected (sdmmc_host_t *host)
 
void sdmmchost_init_io (sdmmc_host_t *host, hpm_sdmmc_operation_mode_t operation_mode)
 
void sdmmchost_delay_ms (sdmmc_host_t *host, uint32_t ms)
 
hpm_stat_t sdmmchost_switch_to_1v8 (sdmmc_host_t *host)
 
void sdmmchost_enable_emmc_support (sdmmc_host_t *host, bool enable)
 
hpm_stat_t sdmmchost_set_speed_mode (sdmmc_host_t *host, sdmmc_speed_mode_t speed_mode)
 
hpm_stat_t sdmmchost_error_recovery (sdmmc_host_t *host, sdmmchost_cmd_t *abort_cmd)
 
bool sdmmchost_is_voltage_switch_supported (sdmmc_host_t *host)
 
void sdmmchost_enable_enhanced_data_strobe (sdmmc_host_t *host, bool enable)
 
void sdmmchost_set_data_strobe_delay (sdmmc_host_t *host)
 
void sdmmchost_select_voltage (sdmmc_host_t *host, hpm_sdmmc_io_volt_t io_volt)
 
void sdmmchost_set_cardclk_delay_chain (sdmmc_host_t *host)
 
void sdmmchost_set_rxclk_delay_chain (sdmmc_host_t *host)
 

Macro Definition Documentation

◆ HPM_SDMMC_HOST_CD_IN_IP

#define HPM_SDMMC_HOST_CD_IN_IP   (HPM_SDMMC_HOST_SUPPORT_CARD_DETECTION << 8)

◆ HPM_SDMMC_HOST_PWR_IN_IP

#define HPM_SDMMC_HOST_PWR_IN_IP   (HPM_SDMMC_HOST_SUPPORT_POWER_SWITCH << 8)

◆ HPM_SDMMC_HOST_RST_IN_IP

#define HPM_SDMMC_HOST_RST_IN_IP   (HPM_SDMMC_HOST_SUPPORT_RESET_PIN << 8)

◆ HPM_SDMMC_HOST_SUPPORT_1V8

#define HPM_SDMMC_HOST_SUPPORT_1V8   (1UL << 3)

◆ HPM_SDMMC_HOST_SUPPORT_3V3

#define HPM_SDMMC_HOST_SUPPORT_3V3   (1UL << 2)

◆ HPM_SDMMC_HOST_SUPPORT_4BIT

#define HPM_SDMMC_HOST_SUPPORT_4BIT   (1UL << 0)

◆ HPM_SDMMC_HOST_SUPPORT_8BIT

#define HPM_SDMMC_HOST_SUPPORT_8BIT   (1UL << 1)

◆ HPM_SDMMC_HOST_SUPPORT_CARD_DETECTION

#define HPM_SDMMC_HOST_SUPPORT_CARD_DETECTION   (1UL << 16)

◆ HPM_SDMMC_HOST_SUPPORT_DATA_STROBE

#define HPM_SDMMC_HOST_SUPPORT_DATA_STROBE   (1UL << 21)

◆ HPM_SDMMC_HOST_SUPPORT_DDR

#define HPM_SDMMC_HOST_SUPPORT_DDR   (1UL << 4)

◆ HPM_SDMMC_HOST_SUPPORT_HS200

#define HPM_SDMMC_HOST_SUPPORT_HS200   (1UL << 7)

◆ HPM_SDMMC_HOST_SUPPORT_HS400

#define HPM_SDMMC_HOST_SUPPORT_HS400   (1Ul << 8)

◆ HPM_SDMMC_HOST_SUPPORT_POWER_SWITCH

#define HPM_SDMMC_HOST_SUPPORT_POWER_SWITCH   (1UL << 18)

◆ HPM_SDMMC_HOST_SUPPORT_RESET_PIN

#define HPM_SDMMC_HOST_SUPPORT_RESET_PIN   (1UL << 20)

◆ HPM_SDMMC_HOST_SUPPORT_SDR104

#define HPM_SDMMC_HOST_SUPPORT_SDR104   (1UL << 6)

◆ HPM_SDMMC_HOST_SUPPORT_SDR50

#define HPM_SDMMC_HOST_SUPPORT_SDR50   (1UL << 5)

◆ HPM_SDMMC_HOST_SUPPORT_VOLTAGE_SWITCH

#define HPM_SDMMC_HOST_SUPPORT_VOLTAGE_SWITCH   (1UL << 17)

◆ HPM_SDMMC_HOST_SUPPORT_WRITE_PROTECTION

#define HPM_SDMMC_HOST_SUPPORT_WRITE_PROTECTION   (1UL << 19)

◆ HPM_SDMMC_HOST_VSEL_IN_IP

#define HPM_SDMMC_HOST_VSEL_IN_IP   (HPM_SDMMC_HOST_SUPPORT_VOLTAGE_SWITCH << 8)

◆ HPM_SDMMC_HOST_WP_IN_IP

#define HPM_SDMMC_HOST_WP_IN_IP   (HPM_SDMMC_HOST_SUPPORT_WRITE_PROTECTION << 8)

Typedef Documentation

◆ sdmmc_adma2_desc_t

◆ sdmmchost_capabilities_t

◆ sdmmchost_card_detect_func_t

typedef bool(* sdmmchost_card_detect_func_t) (SDMMCHOST_Type *base)

◆ sdmmchost_clock_init_func_t

typedef uint32_t(* sdmmchost_clock_init_func_t) (SDMMCHOST_Type *base, uint32_t clk_freq, bool need_reverse)

◆ sdmmchost_cmd_line_init_func_t

typedef void(* sdmmchost_cmd_line_init_func_t) (SDMMCHOST_Type *base, bool push_pull)

◆ sdmmchost_cmd_t

◆ sdmmchost_data_t

◆ sdmmchost_io_init_func_t

typedef void(* sdmmchost_io_init_func_t) (SDMMCHOST_Type *base)

◆ sdmmchost_power_switch_func_t

typedef void(* sdmmchost_power_switch_func_t) (SDMMCHOST_Type *base, bool on_off)

◆ sdmmchost_switch_1v8_io_func_t

typedef void(* sdmmchost_switch_1v8_io_func_t) (SDMMCHOST_Type *base)

◆ SDMMCHOST_Type

◆ sdmmchost_xfer_t

Enumeration Type Documentation

◆ hpm_sdmmc_io_volt_t

SDMMC IO Voltage.

Enumerator
hpm_sdmmc_io_voltage_3v3 

IO voltage is 3.3v

hpm_sdmmc_io_voltage_1v8 

IO voltage is 1.8v

◆ hpm_sdmmc_operation_mode_t

SDMMC Operattion mode.

Enumerator
hpm_sdmmc_operation_mode_inactive 
hpm_sdmmc_operation_mode_identification 
hpm_sdmmc_operation_mode_transfer 
hpm_sdmmc_operation_mode_interrupt 

◆ hpm_sdmmc_power_option_t

Enumerator
hpm_sdmmc_power_off 

Power Off the SDMMC

hpm_sdmmc_power_up 

Power up the SDMMC

hpm_sdmmc_power_on 

Power on the SDMMC

◆ sdmmc_buswidth_t

SD/MMC Bus Width definitions.

Enumerator
sdmmc_bus_width_1bit 
sdmmc_bus_width_4bit 
sdmmc_bus_width_8bit 

◆ sdmmc_card_detection_mode_t

SD/MMC Host Card Detection Modes.

Enumerator
sdmmc_host_card_detection_none 
sdmmc_host_card_detection_via_gpio 
sdmmc_host_card_detection_via_sdxc 

◆ sdmmc_dev_type_t

SD/MMC Device Type definitions.

Enumerator
sdmmc_dev_type_emmc 
sdmmc_dev_type_sd 
sdmmc_dev_type_sdio 

◆ sdmmc_speed_mode_t

SD/MMC Speed definitions.

Enumerator
sdmmc_sd_speed_normal 
sdmmc_sd_speed_high 
sdmmc_sd_speed_sdr12 
sdmmc_sd_speed_sdr25 
sdmmc_sd_speed_sdr50 
sdmmc_sd_speed_sdr104 
sdmmc_sd_speed_ddr50 
sdmmc_emmc_speed_legacy 
sdmmc_emmc_speed_high_speed_sdr 
sdmmc_emmc_speed_hs200 
sdmmc_emmc_speed_high_speed_ddr 
sdmmc_emmc_speed_hs400 

Function Documentation

◆ sdmmchost_deinit()

void sdmmchost_deinit ( sdmmc_host_t host)

◆ sdmmchost_delay_ms()

void sdmmchost_delay_ms ( sdmmc_host_t host,
uint32_t  ms 
)

◆ sdmmchost_enable_emmc_support()

void sdmmchost_enable_emmc_support ( sdmmc_host_t host,
bool  enable 
)

◆ sdmmchost_enable_enhanced_data_strobe()

void sdmmchost_enable_enhanced_data_strobe ( sdmmc_host_t host,
bool  enable 
)

◆ sdmmchost_error_recovery()

hpm_stat_t sdmmchost_error_recovery ( sdmmc_host_t host,
sdmmchost_cmd_t abort_cmd 
)

◆ sdmmchost_init()

hpm_stat_t sdmmchost_init ( sdmmc_host_t host)

◆ sdmmchost_init_io()

void sdmmchost_init_io ( sdmmc_host_t host,
hpm_sdmmc_operation_mode_t  operation_mode 
)

◆ sdmmchost_is_card_detected()

bool sdmmchost_is_card_detected ( sdmmc_host_t host)

◆ sdmmchost_is_voltage_switch_supported()

bool sdmmchost_is_voltage_switch_supported ( sdmmc_host_t host)

◆ sdmmchost_reset()

void sdmmchost_reset ( sdmmc_host_t host)

◆ sdmmchost_select_voltage()

void sdmmchost_select_voltage ( sdmmc_host_t host,
hpm_sdmmc_io_volt_t  io_volt 
)

◆ sdmmchost_send_command()

hpm_stat_t sdmmchost_send_command ( sdmmc_host_t host,
sdmmchost_cmd_t cmd 
)

◆ sdmmchost_set_card_bus_width()

void sdmmchost_set_card_bus_width ( sdmmc_host_t host,
sdmmc_buswidth_t  bus_width 
)

◆ sdmmchost_set_card_clock()

uint32_t sdmmchost_set_card_clock ( sdmmc_host_t host,
uint32_t  freq,
bool  clock_inverse 
)

◆ sdmmchost_set_cardclk_delay_chain()

void sdmmchost_set_cardclk_delay_chain ( sdmmc_host_t host)

◆ sdmmchost_set_data_strobe_delay()

void sdmmchost_set_data_strobe_delay ( sdmmc_host_t host)

◆ sdmmchost_set_rxclk_delay_chain()

void sdmmchost_set_rxclk_delay_chain ( sdmmc_host_t host)

◆ sdmmchost_set_speed_mode()

hpm_stat_t sdmmchost_set_speed_mode ( sdmmc_host_t host,
sdmmc_speed_mode_t  speed_mode 
)

◆ sdmmchost_switch_to_1v8()

hpm_stat_t sdmmchost_switch_to_1v8 ( sdmmc_host_t host)

◆ sdmmchost_transfer()

hpm_stat_t sdmmchost_transfer ( sdmmc_host_t host,
sdmmchost_xfer_t content 
)

◆ sdmmchost_wait_card_active()

void sdmmchost_wait_card_active ( sdmmc_host_t host)