hpm_spi_sdcard.h 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. /*
  2. * Copyright (c) 2023 HPMicro
  3. *
  4. * SPDX-License-Identifier: BSD-3-Clause
  5. *
  6. */
  7. #ifndef HPM_SPI_SDCARD_H
  8. #define HPM_SPI_SDCARD_H
  9. #include "hpm_common.h"
  10. #include "hpm_sdmmc_card.h"
  11. typedef struct {
  12. sd_csd_t csd;
  13. sd_cid_t cid;
  14. uint64_t capacity; /* Card Capacity */
  15. uint32_t block_size; /* Card Block Size */
  16. uint32_t block_count;
  17. uint8_t card_type;
  18. } spi_sdcard_info_t;
  19. typedef struct {
  20. hpm_stat_t (*set_spi_speed) (uint32_t freq);
  21. void (*cs_select) (void);
  22. void (*cs_relese) (void);
  23. bool (*sdcard_is_present) (void);
  24. hpm_stat_t (*write_read_byte) (uint8_t *in_byte, uint8_t *out_byte);
  25. hpm_stat_t (*write_cmd_data) (uint8_t cmd, uint8_t *buffer, uint32_t size);
  26. hpm_stat_t (*write) (uint8_t *buffer, uint32_t size);
  27. hpm_stat_t (*read) (uint8_t *buffer, uint32_t size);
  28. void (*delay_us) (uint32_t us);
  29. void (*delay_ms) (uint32_t ms);
  30. } sdcard_spi_interface_t;
  31. #ifdef __cplusplus
  32. extern "C" {
  33. #endif
  34. hpm_stat_t sdcard_spi_status(void);
  35. hpm_stat_t sdcard_spi_init(sdcard_spi_interface_t *spi_io);
  36. hpm_stat_t sdcard_spi_get_card_info(spi_sdcard_info_t *cardinfo);
  37. hpm_stat_t sdcard_spi_read_block(uint32_t sector, uint8_t *buffer);
  38. hpm_stat_t sdcard_spi_write_block(uint32_t sector, uint8_t *buffer);
  39. hpm_stat_t sdcard_spi_read_multi_block(uint8_t *buffer, uint32_t start_sector, uint32_t num_sectors);
  40. hpm_stat_t sdcard_spi_write_multi_block(uint8_t *buffer, uint32_t sector, uint32_t num_sectors);
  41. #ifdef __cplusplus
  42. }
  43. #endif
  44. #endif /* HPM_SPI_SDCARD_H */