example

Example of the component espp/sdcard v1.3.4
# SD Card Example

Brings up a microSD card with `espp::SdCard` over **SDMMC (SDIO)** or **SPI**
and shows the two-step model the component adds on top of ESP-IDF: the card is
probed once, and its FAT volume is mounted and unmounted while the card stays
initialized. It records a boot counter on the card, lists the files, unmounts,
and mounts again.

## How to use example

### Hardware Required

An ESP32-S3 (or ESP32 / ESP32-P4) with a microSD slot. The default pins are the
LilyGo T-Dongle-S3's slot (SDMMC, 4-bit). Change the interface and pins under
`idf.py menuconfig` → *SD Card Example Configuration*; an SDSPI card only needs
MOSI / MISO / SCLK / CS. On the ESP32-P4 leave the LDO channel at 4 (the chip
powers its SD pads from that LDO).

The card must carry a FAT filesystem unless you enable *Format the card if it
has no FAT filesystem* (which erases it).

### Build and Flash

Run `idf.py -p PORT flash monitor` to build, flash and monitor the project.

(To exit the serial monitor, type ``Ctrl-]``.)

See the Getting Started Guide for full steps to configure and use ESP-IDF to build projects.

## Handing the card to a USB host

The point of the split is that the card can be used by something other than the
firmware's FAT mount. With `espp::UsbDevice`'s MSC function the same card
becomes a USB drive; the device mounts it at its own path while the application
owns it, and unmounts it while the PC has it:

```cpp
espp::SdCard::Config config;
config.mount_on_initialize = false; // the MSC function mounts / unmounts it
config.interface = sdmmc;           // as above
espp::SdCard sdcard(config);
sdcard.initialize();

espp::UsbDevice::MscMedium medium;
medium.type = espp::UsbDevice::MscMedium::Type::SdCard;
medium.sd_card = sdcard.card();
medium.base_path = "/sdcard";
espp::UsbDevice::MscFunction msc;
msc.media = {medium};
```

See the `usb_device` component's `msc_example` for the rest.

To create a project from this example, run:

idf.py create-project-from-example "espp/sdcard=1.3.4:example"

or download archive (~4.76 KB)