Esp32S3 : Questions concerning SD Cards and MMC Cards
-
- Posts: 229
- Joined: Thu Jul 14, 2022 5:15 am
Esp32S3 : Questions concerning SD Cards and MMC Cards
Good morning,
I need to use an Esp32S3 in order to dialog with an MMC Card or an SD Card (using the same pins).
Could you confirm that this is possible using the SPI mode with the two types of cards (Both type have an SPI Mode ??)
More questions please :
I saw that the MMC card could be used with an MMC Protocol and the SD Card with an SD Protocol, both different from SPI mode. Could you confirm please ?
Moreover, could you also confirm that the MMC and SD protocols are not the same ?
Conclusion :
Could you please confirm that if I manage to "speak" to the SD card using the SPI mode, I would be able to plug an MMC Card instead of the SD Card and it would be ok ? I would be able to exchange datas with the MMC card the same way ?
Please give me as much informations as possible concerning the SD and MMC cards/protocols (This is quite new for me).
Best regards,
Thank you for your help on this subject,
Thomas TRUILHE
I need to use an Esp32S3 in order to dialog with an MMC Card or an SD Card (using the same pins).
Could you confirm that this is possible using the SPI mode with the two types of cards (Both type have an SPI Mode ??)
More questions please :
I saw that the MMC card could be used with an MMC Protocol and the SD Card with an SD Protocol, both different from SPI mode. Could you confirm please ?
Moreover, could you also confirm that the MMC and SD protocols are not the same ?
Conclusion :
Could you please confirm that if I manage to "speak" to the SD card using the SPI mode, I would be able to plug an MMC Card instead of the SD Card and it would be ok ? I would be able to exchange datas with the MMC card the same way ?
Please give me as much informations as possible concerning the SD and MMC cards/protocols (This is quite new for me).
Best regards,
Thank you for your help on this subject,
Thomas TRUILHE
-
- Posts: 229
- Joined: Thu Jul 14, 2022 5:15 am
Re: Esp32S3 : Questions concerning SD Cards and MMC Cards
Or do you think that the MMC protocol is compatible with the SPI protocol (In 1 bit mode ??)
-
- Posts: 1700
- Joined: Mon Oct 17, 2022 7:38 pm
- Location: Europe, Germany
Re: Esp32S3 : Questions concerning SD Cards and MMC Cards
All MMC and SD cards should support 1-bit SPI.
Getting your hands on actual MMC cards nowadays may be a challenge though.
Getting your hands on actual MMC cards nowadays may be a challenge though.
Re: Esp32S3 : Questions concerning SD Cards and MMC Cards
Unfortunately, eMMC chips can't be connected to ESP32* through SPI bus, only the chips with integrated SD host controller are capable of MMC communication (ESP32, ESP32S3 and ESP32P4). Eg ESP32C3 can't do: https://docs.espressif.com/projects/esp ... emmc-chips, whilst ESP32S3 is eMMC compatible: https://docs.espressif.com/projects/esp ... emmc-chips. The SDMMC driver-level API is the same for both SD and eMMC.
Also, check the example at https://github.com/espressif/esp-idf/tr ... orage/emmc (works only on S3, so you are safe). Hope this helps
Also, check the example at https://github.com/espressif/esp-idf/tr ... orage/emmc (works only on S3, so you are safe). Hope this helps
-
- Posts: 229
- Joined: Thu Jul 14, 2022 5:15 am
Re: Esp32S3 : Questions concerning SD Cards and MMC Cards
Ok I have seen you example, thank you.
Using it, I managed to mount my SD Card using the following lines :
SDCard_MountCfg.format_if_mount_failed = true;
SDCard_MountCfg.max_files = SDCARD_MAX_FILE;
SDCard_MountCfg.allocation_unit_size = CONFIG_WL_SECTOR_SIZE;
// By default, SD card frequency is initialized to SDMMC_FREQ_DEFAULT (20MHz)
// For setting a specific frequency, use host.max_freq_khz (range 400kHz - 40MHz for SDMMC)
// Example: for fixed frequency of 10MHz, use host.max_freq_khz = 10000;
sdmmc_host_t host = SDMMC_HOST_DEFAULT(); // @suppress("Invalid arguments")
// This initializes the slot without card detect (CD) and write protect (WP) signals.
// Modify slot_config.gpio_cd and slot_config.gpio_wp if your board has these signals.
sdmmc_slot_config_t slot_config = SDMMC_SLOT_CONFIG_DEFAULT(); // @suppress("Invalid arguments")
slot_config.width = 1;
slot_config.clk = (gpio_num_t)PIN_NUM_CLK;
slot_config.cmd = (gpio_num_t)PIN_NUM_CMD;
slot_config.d0 = (gpio_num_t)PIN_NUM_DATA0;
slot_config.cd = (gpio_num_t)PIN_NUM_CS;
// Enable internal pullups on enabled pins. The internal pullups
// are insufficient however, please make sure 10k external pullups are
// connected on the bus. This is for debug / example purpose only.
slot_config.flags |= SDMMC_SLOT_FLAG_INTERNAL_PULLUP;
/* Initialisation de la SPI : */
err = esp_vfs_fat_sdmmc_mount(MOUNT_POINT_EXTFLASH, &host, &slot_config, &SDCard_MountCfg, &SDCard); // @suppress("Invalid arguments")
However, if I set the option SDCard_MountCfg.format_if_mount_failed to false, the firmware does not manage to mount the FileSystem.
I have to set it to true to mount the filesystem normally but the FileSystem is formatted each time that I start the firmware
so I loose all the files that are on it.
Do you have any idea why please ?
Using it, I managed to mount my SD Card using the following lines :
SDCard_MountCfg.format_if_mount_failed = true;
SDCard_MountCfg.max_files = SDCARD_MAX_FILE;
SDCard_MountCfg.allocation_unit_size = CONFIG_WL_SECTOR_SIZE;
// By default, SD card frequency is initialized to SDMMC_FREQ_DEFAULT (20MHz)
// For setting a specific frequency, use host.max_freq_khz (range 400kHz - 40MHz for SDMMC)
// Example: for fixed frequency of 10MHz, use host.max_freq_khz = 10000;
sdmmc_host_t host = SDMMC_HOST_DEFAULT(); // @suppress("Invalid arguments")
// This initializes the slot without card detect (CD) and write protect (WP) signals.
// Modify slot_config.gpio_cd and slot_config.gpio_wp if your board has these signals.
sdmmc_slot_config_t slot_config = SDMMC_SLOT_CONFIG_DEFAULT(); // @suppress("Invalid arguments")
slot_config.width = 1;
slot_config.clk = (gpio_num_t)PIN_NUM_CLK;
slot_config.cmd = (gpio_num_t)PIN_NUM_CMD;
slot_config.d0 = (gpio_num_t)PIN_NUM_DATA0;
slot_config.cd = (gpio_num_t)PIN_NUM_CS;
// Enable internal pullups on enabled pins. The internal pullups
// are insufficient however, please make sure 10k external pullups are
// connected on the bus. This is for debug / example purpose only.
slot_config.flags |= SDMMC_SLOT_FLAG_INTERNAL_PULLUP;
/* Initialisation de la SPI : */
err = esp_vfs_fat_sdmmc_mount(MOUNT_POINT_EXTFLASH, &host, &slot_config, &SDCard_MountCfg, &SDCard); // @suppress("Invalid arguments")
However, if I set the option SDCard_MountCfg.format_if_mount_failed to false, the firmware does not manage to mount the FileSystem.
I have to set it to true to mount the filesystem normally but the FileSystem is formatted each time that I start the firmware
so I loose all the files that are on it.
Do you have any idea why please ?
-
- Posts: 1700
- Joined: Mon Oct 17, 2022 7:38 pm
- Location: Europe, Germany
-
- Posts: 229
- Joined: Thu Jul 14, 2022 5:15 am
Re: Esp32S3 : Questions concerning SD Cards and MMC Cards
In fact I am looking for an example where the tinyusb driver is used with an SPI external SDCard.
Do you think this kind of example exists ?
Best regards,
Do you think this kind of example exists ?
Best regards,
Re: Esp32S3 : Questions concerning SD Cards and MMC Cards
TinyUSB MSC example: https://github.com/espressif/esp-idf/tr ... e/tusb_msc
Not sure this would work with SDSPI
Not sure this would work with SDSPI
Last edited by pacucha42 on Thu Oct 17, 2024 3:39 pm, edited 1 time in total.
Re: Esp32S3 : Questions concerning SD Cards and MMC Cards
Please, provide verbose logs.ThomasESP32 wrote: ↑Thu Oct 17, 2024 1:56 pmOk I have seen you example, thank you.
Using it, I managed to mount my SD Card using the following lines :
...
Note 1: you are using SDCard_MountCfg.allocation_unit_size = CONFIG_WL_SECTOR_SIZE, which is technically ok, but philosophically unrelated. SD cards have own wear-levelling and don't care about IDF WL sector size (which works for SPI Flash only). 'allocation_unit_size' is slightly misleading name for the FAT cluster size, which must be integer multiple of the target media sector size. So, in this case it's fine, but it's sort of constant type exploitation
Note 2: if you need to connect SD card (not MMC), please, refer to example at https://github.com/espressif/esp-idf/tr ... card/sdmmc
-
- Posts: 229
- Joined: Thu Jul 14, 2022 5:15 am
Re: Esp32S3 : Questions concerning SD Cards and MMC Cards
Good morning, using the example sdmmc,
I manage to mount my 2Go card and my 16Go card.
This is perfect. Thank you.
I manage to mount my 2Go card and my 16Go card.
This is perfect. Thank you.
Who is online
Users browsing this forum: Google [Bot] and 95 guests