esp-idf/components/sdmmc
Ivan Grokhotkov fb95daab06
fix(sdmmc): extend the maximum number of retries of ACMD41
According to the application note in SD Card Physical Specification:

> The host shall set ACMD41 timeout more than 1 second to abort repeat
of issuing ACMD41 when the card does not indicate ready. The timeout
count starts from the first ACMD41 which is set voltage window
in the argument.

Previously, the timeout was exactly one second, and this caused
certain larger-capacity cards to "time out", because they couldn't
finish initialization process in time.
2024-02-28 09:33:24 +01:00
..
include feat(sdio): add sdio over sdmmc support for esp32p4 2024-01-14 01:05:00 +08:00
CMakeLists.txt feat(sdmmc): use ldo as power supply on esp32p4 2024-01-04 15:34:59 +08:00
README.md feat(sd): added readme for dependency among SD host related components 2023-11-20 12:30:03 +08:00
sdmmc_cmd.c refactor: Remove -Wno-format from storage related components 2023-10-22 17:56:41 +00:00
sdmmc_common.c fix(sdmmc): use correct argument for ACMD41 in SPI mode 2024-02-28 09:33:23 +01:00
sdmmc_common.h fix(sdmmc): extend the maximum number of retries of ACMD41 2024-02-28 09:33:24 +01:00
sdmmc_init.c feat(sdio): add sdio over sdmmc support for esp32p4 2024-01-14 01:05:00 +08:00
sdmmc_io.c feat(sdio): add sdio over sdmmc support for esp32p4 2024-01-14 01:05:00 +08:00
sdmmc_mmc.c refactor: Remove -Wno-format from storage related components 2023-10-22 17:56:41 +00:00
sdmmc_sd.c feat(sdmmc): use ldo as power supply on esp32p4 2024-01-04 15:34:59 +08:00

SDMMC Protocol Layer Driver

Architecture Graph

                        ┌─────────────────────────────────────────────┐
                        │                                             │
                        │  SD Protocol Layer Driver: components/sdmmc │
                        │                                             │
                        └──────────▲────────────────────▲─────────────┘
                                   │                    │
                                   │                    │
                        Implements │                    │ Implements
                                   │                    │
┌──────────────────────────────────┴─────┐         ┌────┴───────────────────────────────────┐
│                                        │         │                                        │
│Host Driver: components/esp_driver_sdmmc│         │Host Driver: components/esp_driver_sdspi│
│                                        │         │                                        │
└────────────────────────────────────────┘         └────────────────────────────────────────┘

Components

  • sdmmc: SD protocol layer driver, it provides SD protocol related definitions and interfaces. With corresponding implementation drivers, sdmmc APIs can help you:
    • send commands to slave devices
    • send and receive data
    • handle error conditions within the bus
  • esp_driver_sdmmc: SDMMC Host driver for ESP SDMMC hardware, it implements the sdmmc protocol interfaces.
  • esp_driver_sdspi: SDSPI Host driver for ESP GPSPI hardware, it implements the sdmmc protocol interfaces.

Dependency

  • esp_driver_sdmmc is in driver layer (G2), it relies on sdmmc
  • esp_driver_sdspi is in driver layer (G2), it relies on sdmmc
  • sdmmc does not and should not rely on esp_driver_sdmmc or esp_driver_sdspi. Though sdmmc is independent, it still stays in G2.