HPM SDK
HPMicro Software Development Kit
hpm_sdmmc_card.h File Reference
#include <stdint.h>

Go to the source code of this file.

Data Structures

union  sdmmc_r1_status_t
 SD/MMC R1 register information. More...
 
struct  sd_status_t
 SD Card Status Register Information. More...
 
union  sd_cid_t
 SD CID Register Information. More...
 
union  sd_ocr_t
 SD OCR register information. More...
 
union  sd_scr_t
 SD Card SCR register information. More...
 

Macros

#define SDMMC_BLOCK_SIZE_DEFAULT   (512U)
 
#define SPISD_DUMMY_BYTE   0xFFU
 Dummy Byte for SD when Card works in SPI mode. More...
 
#define SPISD_START_TOKEN   0xFEU
 
#define SPISD_START_MULTI_WRITE_TOKEN   0xFCU
 
#define SPISD_END_MULTI_WRITE_TOKEN   0xFDU
 
#define SPI_SD_BLOCK_SIZE   (512U)
 sdcard block size in SPI mode More...
 
#define SPISD_R1_IDLE_FLAG   (0x01)
 R1 register bits when CARD works in SPI mode. More...
 
#define SPISD_R1_ERASE_RESET_FLAG   (0x02)
 
#define SPISD_R1_ILLEGAL_CMD_FLAG   (0x04)
 
#define SPISD_R1_CMD_CRC_FLAG   (0x08)
 
#define SPISD_R1_ERASE_SEQ_ERROR_FLAG   (0x10)
 
#define SPISD_R1_ADDR_ERROR_FLAG   (0x20)
 
#define SPISD_R1_PARAM_ERROR_FLAG   (0x40)
 
#define SPISD_R1_ZERO_FLAG   (0x80)
 

Typedefs

typedef struct _sd_csd sd_csd_t
 SD Card CSD register information. More...
 

Enumerations

enum  {
  sdmmc_cmd_go_idle_state = 0 , sdmmc_cmd_all_send_cid = 2 , sdmmc_cmd_set_dsr = 4 , sdmmc_cmd_select_card = 7 ,
  sdmmc_cmd_send_csd = 9 , sdmmc_cmd_send_cid = 10 , sdmmc_cmd_stop_transmission = 12 , sdmmc_cmd_send_status = 13 ,
  sdmmc_cmd_go_inactive_state = 15 , sdmmc_cmd_set_block_length = 16 , sdmmc_cmd_read_single_block = 17 , sdmmc_cmd_read_multiple_block = 18 ,
  sdmmc_cmd_set_block_count = 23 , sdmmc_cmd_write_single_block = 24 , sdmmc_cmd_write_multiple_block = 25 , sdmmc_cmd_program_csd = 27 ,
  sdmmc_cmd_set_write_protect = 29 , sdmmc_cmd_clear_write_protect = 30 , sdmmc_cmd_erase = 38 , sdmmc_cmd_lock_unlock = 42 ,
  sdmmc_cmd_app_cmd = 55 , sdmmc_cmd_general_cmd = 56 , sdmmc_cmd_read_ocr = 58
}
 Common SD/MMC commands. More...
 
enum  {
  sd_acmd_set_bus_width = 6 , sd_acmd_sd_status = 13 , sd_acmd_set_num_wr_blocks = 22 , sd_acmd_set_wr_blk_erase_count = 23 ,
  sd_acmd_sd_send_op_cond = 41 , sd_acmd_set_clear_card_detect = 42 , sd_acmd_send_scr = 51 , sd_cmd_all_send_cid = 2 ,
  sd_cmd_send_relative_addr = 3 , sd_cmd_switch = 6 , sd_cmd_send_if_cond = 8 , sd_cmd_send_csd = 9 ,
  sd_voltage_switch = 11 , sd_cmd_send_tuning_block = 19 , sd_cmd_erase_start = 32 , sd_cmd_erase_end = 33 ,
  sd_cmd_crc_option = 59
}
 SD Card specific commands. More...
 
enum  {
  emmc_cmd_send_op_cond = 1 , emmc_cmd_all_send_cid = sdmmc_cmd_all_send_cid , emmc_cmd_set_relative_addr = 3 , emmc_cmd_set_dsr = sdmmc_cmd_set_dsr ,
  emmc_cmd_sleep_awake = 5 , emmc_cmd_switch = 6 , emmc_cmd_select = sdmmc_cmd_select_card , emmc_cmd_send_ext_csd = 8 ,
  emmc_cmd_send_csd = sdmmc_cmd_send_csd , emmc_cmd_send_cid = sdmmc_cmd_send_cid , emmc_cmd_stop_transmission = sdmmc_cmd_stop_transmission , emmc_cmd_send_status = sdmmc_cmd_send_status ,
  emmc_cmd_bus_test = 14 , emmc_cmd_go_inactive_state = sdmmc_cmd_go_inactive_state , emmc_cmd_set_block_length = sdmmc_cmd_set_block_length , emmc_cmd_read_single_block = sdmmc_cmd_read_single_block ,
  emmc_cmd_read_multiple_block = sdmmc_cmd_read_multiple_block , emmc_cmd_send_tuning_block = 21 , emmc_cmd_set_block_count = sdmmc_cmd_set_block_count , emmc_cmd_write_single_block = sdmmc_cmd_write_single_block ,
  emmc_cmd_write_multiple_block = sdmmc_cmd_write_multiple_block , emmc_cmd_program_cid = 26 , emmc_cmd_program_csd = sdmmc_cmd_program_csd , emmc_cmd_set_time = 49 ,
  emmc_cmd_erase_group_start = 35 , emmc_cmd_erase_group_end = 36 , emmc_cmd_erase = sdmmc_cmd_erase , emmc_cmd_set_write_prot = 28 ,
  emmc_cmd_clear_write_prot = 29 , emmc_cmd_send_write_prot = 30 , emmc_cmd_send_write_prot_type = 31 , emmc_cmd_fast_io = 39 ,
  emmc_cmd_go_irq_state = 40 , emmc_cmd_lock_unlock = sdmmc_cmd_lock_unlock , emmc_cmd_app_cmd = sdmmc_cmd_app_cmd , emmc_cmd_gen_cmd = sdmmc_cmd_general_cmd ,
  emmc_cmd_protocol_read = 53 , emmc_cmd_protocol_write = 54 , emmc_cmd_queued_task_params = 44 , emmc_cmd_queued_task_address = 45 ,
  emmc_cmd_execute_read_task = 46 , emmc_cmd_execute_write_task = 47 , emmc_cmd_cmdq_task_mgmt = 48 , sdio_cmd_io_send_op_cond = 5 ,
  sdio_cmd_io_rw_direct = 52 , sdio_cmd_io_rw_extend = 53
}
 MMC specific commands. More...
 
enum  sdcard_type_t { card_type_mmc = 0 , card_type_sd_v1 = 1 , card_type_sd_v2 = 2 , card_type_sd_v2_hc = 4 }
 

Macro Definition Documentation

◆ SDMMC_BLOCK_SIZE_DEFAULT

#define SDMMC_BLOCK_SIZE_DEFAULT   (512U)

◆ SPI_SD_BLOCK_SIZE

#define SPI_SD_BLOCK_SIZE   (512U)

sdcard block size in SPI mode

◆ SPISD_DUMMY_BYTE

#define SPISD_DUMMY_BYTE   0xFFU

Dummy Byte for SD when Card works in SPI mode.

◆ SPISD_END_MULTI_WRITE_TOKEN

#define SPISD_END_MULTI_WRITE_TOKEN   0xFDU

◆ SPISD_R1_ADDR_ERROR_FLAG

#define SPISD_R1_ADDR_ERROR_FLAG   (0x20)

◆ SPISD_R1_CMD_CRC_FLAG

#define SPISD_R1_CMD_CRC_FLAG   (0x08)

◆ SPISD_R1_ERASE_RESET_FLAG

#define SPISD_R1_ERASE_RESET_FLAG   (0x02)

◆ SPISD_R1_ERASE_SEQ_ERROR_FLAG

#define SPISD_R1_ERASE_SEQ_ERROR_FLAG   (0x10)

◆ SPISD_R1_IDLE_FLAG

#define SPISD_R1_IDLE_FLAG   (0x01)

R1 register bits when CARD works in SPI mode.

◆ SPISD_R1_ILLEGAL_CMD_FLAG

#define SPISD_R1_ILLEGAL_CMD_FLAG   (0x04)

◆ SPISD_R1_PARAM_ERROR_FLAG

#define SPISD_R1_PARAM_ERROR_FLAG   (0x40)

◆ SPISD_R1_ZERO_FLAG

#define SPISD_R1_ZERO_FLAG   (0x80)

◆ SPISD_START_MULTI_WRITE_TOKEN

#define SPISD_START_MULTI_WRITE_TOKEN   0xFCU

◆ SPISD_START_TOKEN

#define SPISD_START_TOKEN   0xFEU

Typedef Documentation

◆ sd_csd_t

typedef struct _sd_csd sd_csd_t

SD Card CSD register information.

Enumeration Type Documentation

◆ anonymous enum

anonymous enum

Common SD/MMC commands.

Enumerator
sdmmc_cmd_go_idle_state 
sdmmc_cmd_all_send_cid 
sdmmc_cmd_set_dsr 
sdmmc_cmd_select_card 
sdmmc_cmd_send_csd 
sdmmc_cmd_send_cid 
sdmmc_cmd_stop_transmission 
sdmmc_cmd_send_status 
sdmmc_cmd_go_inactive_state 
sdmmc_cmd_set_block_length 
sdmmc_cmd_read_single_block 
sdmmc_cmd_read_multiple_block 
sdmmc_cmd_set_block_count 
sdmmc_cmd_write_single_block 
sdmmc_cmd_write_multiple_block 
sdmmc_cmd_program_csd 
sdmmc_cmd_set_write_protect 
sdmmc_cmd_clear_write_protect 
sdmmc_cmd_erase 
sdmmc_cmd_lock_unlock 
sdmmc_cmd_app_cmd 
sdmmc_cmd_general_cmd 
sdmmc_cmd_read_ocr 

◆ anonymous enum

anonymous enum

SD Card specific commands.

Enumerator
sd_acmd_set_bus_width 
sd_acmd_sd_status 
sd_acmd_set_num_wr_blocks 
sd_acmd_set_wr_blk_erase_count 
sd_acmd_sd_send_op_cond 
sd_acmd_set_clear_card_detect 
sd_acmd_send_scr 
sd_cmd_all_send_cid 
sd_cmd_send_relative_addr 
sd_cmd_switch 
sd_cmd_send_if_cond 
sd_cmd_send_csd 
sd_voltage_switch 
sd_cmd_send_tuning_block 
sd_cmd_erase_start 
sd_cmd_erase_end 
sd_cmd_crc_option 

◆ anonymous enum

anonymous enum

MMC specific commands.

Enumerator
emmc_cmd_send_op_cond 
emmc_cmd_all_send_cid 
emmc_cmd_set_relative_addr 
emmc_cmd_set_dsr 
emmc_cmd_sleep_awake 
emmc_cmd_switch 
emmc_cmd_select 
emmc_cmd_send_ext_csd 
emmc_cmd_send_csd 
emmc_cmd_send_cid 
emmc_cmd_stop_transmission 
emmc_cmd_send_status 
emmc_cmd_bus_test 
emmc_cmd_go_inactive_state 
emmc_cmd_set_block_length 
emmc_cmd_read_single_block 
emmc_cmd_read_multiple_block 
emmc_cmd_send_tuning_block 
emmc_cmd_set_block_count 
emmc_cmd_write_single_block 
emmc_cmd_write_multiple_block 
emmc_cmd_program_cid 
emmc_cmd_program_csd 
emmc_cmd_set_time 
emmc_cmd_erase_group_start 
emmc_cmd_erase_group_end 
emmc_cmd_erase 
emmc_cmd_set_write_prot 
emmc_cmd_clear_write_prot 
emmc_cmd_send_write_prot 
emmc_cmd_send_write_prot_type 
emmc_cmd_fast_io 
emmc_cmd_go_irq_state 
emmc_cmd_lock_unlock 
emmc_cmd_app_cmd 
emmc_cmd_gen_cmd 
emmc_cmd_protocol_read 
emmc_cmd_protocol_write 
emmc_cmd_queued_task_params 
emmc_cmd_queued_task_address 
emmc_cmd_execute_read_task 
emmc_cmd_execute_write_task 
emmc_cmd_cmdq_task_mgmt 
sdio_cmd_io_send_op_cond 
sdio_cmd_io_rw_direct 
sdio_cmd_io_rw_extend 

◆ sdcard_type_t

Enumerator
card_type_mmc 
card_type_sd_v1 
card_type_sd_v2 
card_type_sd_v2_hc