Secure Digital Input Output (SDIO)

[中文]


What is the maximum speed supported by the SDIO interface?

  • The maximum clock speed supported by ESP32 SDIO is 50 MHz, and ESP32 SDIO supports the Quad mode at the maximum.

  • The maximum clock speed supported by ESP32-S3 SDIO is 80 MHz, and ESP32-S3 SDIO supports the Octal mode at the maximum.

  • The practical speed is influenced by the read and write speed of storage media at the same time.


Does the ESP8266 SDIO support connecting to an SD card?

ESP8266 only has an SDIO slave interface, so it does not support connecting to an SD card. If you need an ESP chip to connect to an SD card, please choose one that supports the SD/MMC host interface, such as the ESP32-S3.


What is the maximum capacity for ESP32 SD card?

  • In the SD3.01 Specifications, the SDXC card supports a maximum capacity of 2 TB (2048 GB).

  • The ESP32 SDMMC Host also complies with the SD3.01 Specifications, which means up to 2 TB areas of it can be accessed by peripherals. When accessing the card via SPI bus using the SDSPI driver, there are also 2 TB of areas can be accessed in hardware level.

  • In software level, the usable area of the card is also affected by the file system.


Is it possible to use ESP32 SD card together with flash & PSRAM?

  • Yes, they can be used simultaneously when they apply different pins.

  • Note that when ESP32 uses the SDMMC host driver, the SDMMC Slot0 pins in the ESP32-WROOM and ESP32-WROVER modules conflict with the flash.


Does ESP-WROOM-S2 module support using SDIO as a slave?

Yes, it does.


Since ESP32-S2 has removed the SDIO interface, does it still support external TF card?

You can use the SPI2 or SPI3 interface to connect to an external TF card. When doing so, please use the SPI mode of the TF card.


Does ESP32-S2 support eMMC?

No.


Does ESP32-S2 support SDIO as a slave?

ESP32-S2 has no SDIO interface and does not support SDIO as a slave.


How does ESP32 enable and disable the interrupt for the SDIO slave to receive data?

The data reception of the SDIO slave is related to the state of the mounted buffer. After the data is received, you need to call sdio_slave_recv_load_buf to release the buffer. Otherwise, the SDIO host will not be able to continue to send data to the SDIO slave.


How to set the ESP32-C6 SDIO clock?

The ESP32-C6 only supports SDIO slave mode, with the SDIO slave CLK dependent on the SDIO host settings.


Does ESP32-P4 SDIO host support mounting two SDIO slave devices (such as ESP32-C5) simultaneously?

The SDIO host driver supports mounting two SDIO slaves simultaneously. For details, refer to the SDMMC driver resource allocation test in ESP-IDF, which includes the TEST_CASE("SDMMC slot exhausted allocation", "[sdmmc]") test case.


When ESP32-P4 communicates with ESP32-C5 over SDIO, can ESP32-P4 control the GPIOs on ESP32-C5?

Yes. Starting from esp_hosted v2.10.0, ESP-Hosted-MCU provides the GPIO Expander feature. ESP32-P4 can control GPIOs on the ESP32-C5 coprocessor over SDIO and RPC, without adding custom_rpc.

After configuring and flashing the host and coprocessor firmware, call the esp_hosted_cp_gpio_* APIs on ESP32-P4 to configure GPIO direction and pull-up/pull-down resistors, set or read levels, and reset pins. For the implementation, see the ESP-Hosted-MCU GPIO Expander example.

This feature controls remote GPIOs through ESP-Hosted RPC. It is not the same as operating local GPIOs directly. For high-frequency switching or latency-sensitive use, test with the actual call rate and Wi-Fi load.

When selecting ESP32-C5 pins, also avoid the SDIO pins and any pins already in use.