5#include "driver/sdmmc_host.h"
6#include "esp_vfs_fat.h"
7#include "sd_protocol_types.h"
10#ifdef SOC_SDMMC_IO_POWER_EXTERNAL
11#include "sd_pwr_ctrl_by_on_chip_ldo.h"
14#define SDMMC_FREQ_DEFAULT \
16#define SDMMC_FREQ_HIGHSPEED \
18#define SDMMC_FREQ_PROBING 400
19#define SDMMC_FREQ_52M 52000
20#define SDMMC_FREQ_26M 26000
21#define SDMMC_FREQ_DDR50 50000
22#define SDMMC_FREQ_SDR50 100000
31#ifndef DEFAULT_ALLOCATION_SIZE
32#define DEFAULT_ALLOCATION_SIZE 16 * 1024
34#ifndef DEFAULT_MAX_FILES
35#define DEFAULT_MAX_FILES 5
57 VFS_SDMMC(
int pinClk,
int pinCmd,
int pinD0,
int pinD1,
int pinD2 = -1,
58 int pinD3 = -1,
const char*
mountPoint =
"/sdmmc")
62 setPins(pinClk, pinCmd, pinD0, pinD1, pinD2, pinD3);
65 void setPins(
int pinClk,
int pinCmd,
int pinD0,
int pinD1,
int pinD2 = -1,
91 esp_vfs_fat_sdmmc_mount_config_t mount_config = {
92 .format_if_mount_failed =
false,
95 LOGI(
"Initializing SD card");
102 LOGI(
"Using SDMMC peripheral");
108 host = SDMMC_HOST_DEFAULT();
115 host.slot = SDMMC_HOST_SLOT_0;
117 host.flags &= ~SDMMC_HOST_FLAG_DDR;
120 host.slot = SDMMC_HOST_SLOT_0;
130#ifdef CONFIG_SD_PWR_CTRL_LDO_IO_ID
132 sd_pwr_ctrl_ldo_config_t ldo_config = {
133 .ldo_chan_id = CONFIG_SD_PWR_CTRL_LDO_IO_ID,
139 LOGE(
"Failed to create a new on-chip LDO power control driver");
148 sdmmc_slot_config_t slot_config = SDMMC_SLOT_CONFIG_DEFAULT();
158#ifdef CONFIG_SOC_SDMMC_USE_GPIO_MATRIX
170 slot_config.flags |= SDMMC_SLOT_FLAG_INTERNAL_PULLUP;
172 LOGI(
"Mounting filesystem");
174 &mount_config, &
card);
177 if (ret == ESP_FAIL) {
178 LOGE(
"Failed to mount filesystem. ");
180 LOGE(
"Failed to initialize the card (%s). ", esp_err_to_name(ret));
184 LOGI(
"Filesystem mounted");
187 sdmmc_card_print_info(stdout,
card);
192 if (
card ==
nullptr)
return;
195 LOGI(
"Card unmounted");
199#ifdef CONFIG_SD_PWR_CTRL_LDO_IO_ID
203 LOGE(
"Failed to delete the on-chip LDO power control driver");
#define LOGI(...)
Definition AudioLoggerIDF.h:28
#define LOGE(...)
Definition AudioLoggerIDF.h:30
#define DEFAULT_D3
Definition VFS_SDMMC.h:29
#define SDMMC_FREQ_HIGHSPEED
Definition VFS_SDMMC.h:16
#define DEFAULT_D1
Definition VFS_SDMMC.h:27
#define SDMMC_FREQ_SDR50
Definition VFS_SDMMC.h:22
#define DEFAULT_ALLOCATION_SIZE
Definition VFS_SDMMC.h:32
#define DEFAULT_D2
Definition VFS_SDMMC.h:28
#define DEFAULT_CLK
Definition VFS_SDMMC.h:24
#define DEFAULT_CMD
Definition VFS_SDMMC.h:25
#define SDMMC_FREQ_DDR50
Definition VFS_SDMMC.h:21
#define DEFAULT_MAX_FILES
Definition VFS_SDMMC.h:35
#define DEFAULT_D0
Definition VFS_SDMMC.h:26