HPM SDK
HPMicro Software Development Kit
hpm_spi_sdcard.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2023 HPMicro
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  *
6  */
7 
8 #ifndef HPM_SPI_SDCARD_H
9 #define HPM_SPI_SDCARD_H
10 
11 #include "hpm_common.h"
12 #include "hpm_sdmmc_card.h"
13 
14 typedef struct {
17  uint64_t capacity; /* Card Capacity */
18  uint32_t block_size; /* Card Block Size */
19  uint32_t block_count;
20  uint8_t card_type;
22 
23 typedef struct {
24  hpm_stat_t (*set_spi_speed) (uint32_t freq);
25  void (*cs_select) (void);
26  void (*cs_relese) (void);
27  bool (*sdcard_is_present) (void);
28  hpm_stat_t (*write_read_byte) (uint8_t *in_byte, uint8_t *out_byte);
29  hpm_stat_t (*write_cmd_data) (uint8_t cmd, uint8_t *buffer, uint32_t size);
30  hpm_stat_t (*write) (uint8_t *buffer, uint32_t size);
31  hpm_stat_t (*read) (uint8_t *buffer, uint32_t size);
32  void (*delay_us) (uint32_t us);
33  void (*delay_ms) (uint32_t ms);
35 
36 #ifdef __cplusplus
37 extern "C" {
38 #endif
39 
43 hpm_stat_t sdcard_spi_read_block(uint32_t sector, uint8_t *buffer);
44 hpm_stat_t sdcard_spi_write_block(uint32_t sector, uint8_t *buffer);
45 hpm_stat_t sdcard_spi_read_multi_block(uint8_t *buffer, uint32_t start_sector, uint32_t num_sectors);
46 hpm_stat_t sdcard_spi_write_multi_block(uint8_t *buffer, uint32_t sector, uint32_t num_sectors);
47 
48 #ifdef __cplusplus
49 }
50 #endif
51 
52 #endif /* HPM_SPI_SDCARD_H */
uint32_t hpm_stat_t
Definition: hpm_common.h:123
static void size
Definition: hpm_math.h:6899
struct _sd_csd sd_csd_t
SD Card CSD register information.
static hpm_stat_t read(void *ops, hpm_serial_nor_transfer_seq_t *cmd_seq)
Definition: hpm_serial_nor_host_spi.c:309
static hpm_stat_t write(void *ops, hpm_serial_nor_transfer_seq_t *cmd_seq)
Definition: hpm_serial_nor_host_spi.c:263
hpm_stat_t sdcard_spi_write_multi_block(uint8_t *buffer, uint32_t sector, uint32_t num_sectors)
Definition: hpm_spi_sdcard.c:378
hpm_stat_t sdcard_spi_get_card_info(spi_sdcard_info_t *cardinfo)
Definition: hpm_spi_sdcard.c:229
hpm_stat_t sdcard_spi_status(void)
Definition: hpm_spi_sdcard.c:63
hpm_stat_t sdcard_spi_read_block(uint32_t sector, uint8_t *buffer)
Definition: hpm_spi_sdcard.c:239
hpm_stat_t sdcard_spi_init(sdcard_spi_interface_t *spi_io)
Definition: hpm_spi_sdcard.c:68
hpm_stat_t sdcard_spi_write_block(uint32_t sector, uint8_t *buffer)
Definition: hpm_spi_sdcard.c:273
hpm_stat_t sdcard_spi_read_multi_block(uint8_t *buffer, uint32_t start_sector, uint32_t num_sectors)
Definition: hpm_spi_sdcard.c:327
Definition: hpm_spi_sdcard.h:23
Definition: hpm_spi_sdcard.h:14
uint32_t block_count
Definition: hpm_spi_sdcard.h:19
sd_cid_t cid
Definition: hpm_spi_sdcard.h:16
sd_csd_t csd
Definition: hpm_spi_sdcard.h:15
uint32_t block_size
Definition: hpm_spi_sdcard.h:18
uint64_t capacity
Definition: hpm_spi_sdcard.h:17
uint8_t card_type
Definition: hpm_spi_sdcard.h:20
SD CID Register Information.
Definition: hpm_sdmmc_card.h:185