38 #include "hal_platform.h" 40 #ifdef HAL_SD_MODULE_ENABLED 717 #ifdef HAL_SD_CARD_DETECTION 802 HAL_SD_STATUS_BUSY = -2,
803 HAL_SD_STATUS_ERROR = -1,
804 HAL_SD_STATUS_OK = 0,
810 HAL_SD_BUS_WIDTH_1 = 1,
811 HAL_SD_BUS_WIDTH_4 = 2
812 } hal_sd_bus_width_t;
817 HAL_SD_TYPE_SD_CARD = 0,
818 HAL_SD_TYPE_MMC_CARD = 1,
819 HAL_SD_TYPE_SD20_LCS_CARD = 2,
820 HAL_SD_TYPE_SD20_HCS_CARD = 3,
821 HAL_SD_TYPE_MMC42_CARD = 4,
822 HAL_SD_TYPE_CARD_TYPE_MAX = 5,
823 HAL_SD_TYPE_UNKNOWN_CARD = 0xff,
824 } hal_sd_card_type_t;
826 #ifdef HAL_SD_CARD_DETECTION 831 HAL_SD_EVENT_CARD_INSERTED = 0,
832 HAL_SD_EVENT_CARD_REMOVED = 1,
833 } hal_sd_card_event_t;
840 HAL_SD_EVENT_SUCCESS = 0,
841 HAL_SD_EVENT_TRANSFER_ERROR = -1,
842 HAL_SD_EVENT_CRC_ERROR = -2,
843 HAL_SD_EVENT_DATA_TIMEOUT = -3,
844 }hal_sd_callback_event_t;
857 hal_sd_bus_width_t bus_width;
865 #ifdef HAL_SD_CARD_DETECTION 877 typedef void (*hal_sd_card_detect_callback_t)(hal_sd_card_event_t event,
void *user_data);
894 typedef void (*hal_sd_callback_t)(hal_sd_callback_event_t event,
void *user_data);
908 hal_sd_status_t hal_sd_init(hal_sd_port_t sd_port, hal_sd_config_t *sd_config);
917 hal_sd_status_t hal_sd_deinit(hal_sd_port_t sd_port);
919 #ifdef HAL_SD_CARD_DETECTION 928 hal_sd_status_t hal_sd_register_card_detection_callback(hal_sd_port_t sd_port, hal_sd_callback_t sd_callback,
void *user_data);
938 hal_sd_status_t hal_sd_set_bus_width(hal_sd_port_t sd_port, hal_sd_bus_width_t bus_width);
949 hal_sd_status_t hal_sd_set_clock(hal_sd_port_t sd_port, uint32_t clock);
958 hal_sd_status_t hal_sd_get_clock(hal_sd_port_t sd_port, uint32_t *clock);
967 hal_sd_status_t hal_sd_get_capacity(hal_sd_port_t sd_port, uint64_t *capacity);
977 hal_sd_status_t hal_sd_get_erase_sector_size(hal_sd_port_t sd_port, uint32_t *erase_sector_size);
989 hal_sd_status_t hal_sd_erase_sectors(hal_sd_port_t sd_port, uint32_t start_sector, uint32_t sector_number);
1003 hal_sd_status_t hal_sd_read_blocks(hal_sd_port_t sd_port, uint32_t *read_buffer, uint32_t start_address, uint32_t block_number);
1017 hal_sd_status_t hal_sd_write_blocks(hal_sd_port_t sd_port,
const uint32_t *write_data, uint32_t start_address, uint32_t block_number);
1030 hal_sd_status_t hal_sd_read_blocks_dma_blocking(hal_sd_port_t sd_port, uint32_t *read_buffer, uint32_t start_address, uint32_t block_number);
1044 hal_sd_status_t hal_sd_write_blocks_dma_blocking(hal_sd_port_t sd_port,
const uint32_t *write_data, uint32_t start_address, uint32_t block_number);
1054 hal_sd_status_t hal_sd_get_csd(hal_sd_port_t sd_port, uint32_t *csd);
1064 hal_sd_status_t hal_sd_get_cid(hal_sd_port_t sd_port, uint32_t *cid);
1074 hal_sd_status_t hal_sd_get_card_type(hal_sd_port_t sd_port, hal_sd_card_type_t *card_type);
1084 hal_sd_status_t hal_sd_get_ocr(hal_sd_port_t sd_port, uint32_t *ocr);
1094 hal_sd_status_t hal_sd_get_card_status(hal_sd_port_t sd_port, uint32_t *card_status);
1104 hal_sd_status_t hal_sd_register_callback(hal_sd_port_t sd_port, hal_sd_callback_t sd_callback,
void *user_data);
1117 hal_sd_status_t hal_sd_read_blocks_dma(hal_sd_port_t sd_port, uint32_t *read_buffer, uint32_t read_address, uint32_t block_number);
1130 hal_sd_status_t hal_sd_write_blocks_dma(hal_sd_port_t sd_port,
const uint32_t *write_buffer, uint32_t write_address, uint32_t block_number);