Skip to content

Commit fd6720c

Browse files
committed
Merge branch 'fix/sdsdpi_example_esp32p4_add_ldo_config_v5.3' into 'release/v5.3'
fix(storage): Fix and update storage examples using SD cards for SoCs with SOC_SDMMC_IO_POWER_EXTERNAL 1 (ESP32-P4) (v5.3) See merge request espressif/esp-idf!31029
2 parents cabf41c + f3b7e05 commit fd6720c

File tree

12 files changed

+187
-46
lines changed

12 files changed

+187
-46
lines changed

examples/storage/.build-test-rules.yml

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -111,16 +111,13 @@ examples/storage/perf_benchmark:
111111
- esp_partition
112112
- esp_driver_sdmmc
113113
disable:
114-
- if: IDF_TARGET == "esp32p4" and CONFIG_NAME in ["sdmmc_1line", "sdmmc_4line", "sdspi_1line"]
115-
temporary: true
116-
reason: SDMMC and SDSPI not supported on P4 yet # TODO: IDF-6502, IDF-7501
117114
- if: IDF_TARGET == "esp32c5"
118115
temporary: true
119116
reason: not supported yet # TODO: [ESP32C5] IDF-8704
120117
disable_test:
121-
- if: IDF_TARGET == "esp32p4" and CONFIG_NAME in ["spiflash"]
118+
- if: IDF_TARGET == "esp32p4" and CONFIG_NAME in ["sdmmc_1line", "sdmmc_4line", "sdspi_1line"]
122119
temporary: true
123-
reason: SPIFLASH not supported on P4 yet, only build stage enabled # TODO: IDF-7499
120+
reason: lack of runners, build only # TODO: IDF-8970
124121

125122
examples/storage/sd_card/sdmmc:
126123
depends_components:

examples/storage/perf_benchmark/README.md

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -54,14 +54,14 @@ This example doesn't utilize card detect (CD) and write protect (WP) signals fro
5454

5555
The table below shows the default pin assignments.
5656

57-
SD card pin | SPI pin | ESP32 pin | ESP32-S2 | ESP32-S3 | ESP32-H2 | ESP32-C3 and other chips | Notes
58-
------------|---------|---------------|----------|----------|----------|--------------------------|-------------
59-
D0 | MISO | GPIO2 | GPIO37 | GPIO37 | GPIO0 | GPIO6 | 10k pullup
60-
D1 | - | GPIO4 | - | GPIO38 | - | - | not used in 1-line SD mode; 10k pullup in 4-line mode
61-
D2 | - | GPIO12 (MTDI) | - | GPIO33 | - | - | not used in 1-line SD mode; 10k pullup in 4-line mode
62-
D3 | CS | GPIO13 (MTCK) | GPIO34 | GPIO34 | GPIO1 | GPIO1 | not used in 1-line SD mode, but card's D3 pin must have a 10k pullup
63-
CLK | SCK | GPIO14 (MTMS) | GPIO36 | GPIO36 | GPIO4 | GPIO5 | 10k pullup
64-
CMD | MOSI | GPIO15 (MTDO) | GPIO35 | GPIO35 | GPIO5 | GPIO4 | 10k pullup
57+
SD card pin | SPI pin | ESP32 pin | ESP32-S2 | ESP32-S3 | ESP32-P4 SDMMC | ESP32-P4 SDSPI | ESP32-H2 | ESP32-C3 and other chips | Notes
58+
------------|---------|---------------|----------|----------|----------------|----------------|----------|--------------------------|-------------
59+
D0 | MISO | GPIO2 | GPIO37 | GPIO37 | GPIO43 | GPIO13 | GPIO0 | GPIO6 | 10k pullup
60+
D1 | - | GPIO4 | - | GPIO38 | GPIO44 | - | - | - | not used in 1-line SD mode; 10k pullup in 4-line mode
61+
D2 | - | GPIO12 (MTDI) | - | GPIO33 | GPIO39 | - | - | - | not used in 1-line SD mode; 10k pullup in 4-line mode
62+
D3 | CS | GPIO13 (MTCK) | GPIO34 | GPIO34 | GPIO40 | GPIO10 | GPIO1 | GPIO1 | not used in 1-line SD mode, but card's D3 pin must have a 10k pullup
63+
CLK | SCK | GPIO14 (MTMS) | GPIO36 | GPIO36 | GPIO41 | GPIO12 | GPIO4 | GPIO5 | 10k pullup
64+
CMD | MOSI | GPIO15 (MTDO) | GPIO35 | GPIO35 | GPIO42 | GPIO11 | GPIO5 | GPIO4 | 10k pullup
6565

6666
### 4-line and 1-line SD modes
6767

@@ -97,6 +97,21 @@ This command will burn the `XPD_SDIO_TIEH`, `XPD_SDIO_FORCE`, and `XPD_SDIO_REG`
9797

9898
See [the document about pullup requirements](https://docs.espressif.com/projects/esp-idf/en/latest/api-reference/peripherals/sd_pullup_requirements.html) for more details about pullup support and compatibility of modules and development boards.
9999

100+
#### ESP32-P4 related notes
101+
102+
This only applies when `Test SD card` setting in `Performance Benchmark Example Configuration` is enabled.
103+
104+
On ESP32-P4, Slot 1 of the SDMMC peripheral is connected to GPIO pins using GPIO matrix. This allows arbitrary GPIOs to be used to connect an SD card. In this example, GPIOs can be configured in two ways:
105+
106+
1. Using menuconfig: Run `idf.py menuconfig` in the project directory and open `Performance Benchmark Example Configuration` menu.
107+
2. In the source code: See the initialization of `sdmmc_slot_config_t slot_config` structure in the example code.
108+
109+
If pins selected correspond with default pins used for ESP32-P4 SDMMC (i.e. SD card slot is connected to them), possibly an additional setting up needs to be done.
110+
111+
These pins are able to connect to an ultra high-speed SD card (UHS-I) which requires 1.8V switching (instead of the regular 3.3V). This means the user has to provide an external LDO power supply to use them, or to enable and configure an internal LDO via `idf.py menuconfig` -> `SD/MMC Example Configuration` -> `SD power supply comes from internal LDO IO`.
112+
113+
When using different GPIO pins this is not required and `SD power supply comes from internal LDO IO` setting can be disabled.
114+
100115
### Note about SPIFFS
101116

102117
The test for SPIFFS is run only once, because SPIFFS has a problem with deleting files.

examples/storage/perf_benchmark/main/Kconfig.projbuild

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,28 +179,34 @@ menu "Performance Benchmark Example Configuration"
179179
config EXAMPLE_PIN_CMD
180180
int "CMD GPIO number"
181181
default 35 if IDF_TARGET_ESP32S3
182+
default 44 if IDF_TARGET_ESP32P4
182183

183184
config EXAMPLE_PIN_CLK
184185
int "CLK GPIO number"
185186
default 36 if IDF_TARGET_ESP32S3
187+
default 43 if IDF_TARGET_ESP32P4
186188

187189
config EXAMPLE_PIN_D0
188190
int "D0 GPIO number"
189191
default 37 if IDF_TARGET_ESP32S3
192+
default 39 if IDF_TARGET_ESP32P4
190193

191194
if EXAMPLE_SDMMC_BUS_WIDTH_4
192195

193196
config EXAMPLE_PIN_D1
194197
int "D1 GPIO number"
195198
default 38 if IDF_TARGET_ESP32S3
199+
default 40 if IDF_TARGET_ESP32P4
196200

197201
config EXAMPLE_PIN_D2
198202
int "D2 GPIO number"
199203
default 33 if IDF_TARGET_ESP32S3
204+
default 41 if IDF_TARGET_ESP32P4
200205

201206
config EXAMPLE_PIN_D3
202207
int "D3 GPIO number"
203208
default 34 if IDF_TARGET_ESP32S3
209+
default 42 if IDF_TARGET_ESP32P4
204210

205211
endif # EXAMPLE_SDMMC_BUS_WIDTH_4
206212

@@ -243,6 +249,22 @@ menu "Performance Benchmark Example Configuration"
243249

244250
endif # EXAMPLE_USE_SDSPI
245251

252+
config EXAMPLE_SD_PWR_CTRL_LDO_INTERNAL_IO
253+
depends on SOC_SDMMC_IO_POWER_EXTERNAL
254+
bool "SD power supply comes from internal LDO IO (READ HELP!)"
255+
default y
256+
help
257+
Only needed when the SD card is connected to specific IO pins which can be used for high-speed SDMMC.
258+
Please read the schematic first and check if the SD VDD is connected to any internal LDO output.
259+
Unselect this option if the SD card is powered by an external power supply.
260+
261+
config EXAMPLE_SD_PWR_CTRL_LDO_IO_ID
262+
depends on SOC_SDMMC_IO_POWER_EXTERNAL && EXAMPLE_SD_PWR_CTRL_LDO_INTERNAL_IO
263+
int "LDO ID"
264+
default 4 if IDF_TARGET_ESP32P4
265+
help
266+
Please read the schematic first and input your LDO ID.
267+
246268
endmenu # "SD card test config"
247269

248270
endmenu # "Performance Monitor Example Configuration"

examples/storage/perf_benchmark/main/perf_benchmark_example_sd_utils.c

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,10 @@
1313
#if SOC_SDMMC_HOST_SUPPORTED
1414
#include "driver/sdmmc_host.h"
1515
#endif
16+
#if SOC_SDMMC_IO_POWER_EXTERNAL
17+
#include "sd_pwr_ctrl_by_on_chip_ldo.h"
18+
#endif
19+
#include "esp_err.h"
1620
#include "esp_log.h"
1721

1822
#ifdef CONFIG_EXAMPLE_TEST_SD_CARD
@@ -32,6 +36,22 @@ void init_sd_config(sdmmc_host_t *out_host, sdmmc_slot_config_t *out_slot_config
3236
void init_sd_config(sdmmc_host_t *out_host, sdspi_device_config_t *out_slot_config, int freq_khz) {
3337
#endif // CONFIG_EXAMPLE_USE_SDSPI
3438

39+
// For SoCs where the SD power can be supplied both via an internal or external (e.g. on-board LDO) power supply.
40+
// When using specific IO pins (which can be used for ultra high-speed SDMMC) to connect to the SD card
41+
// and the internal LDO power supply, we need to initialize the power supply first.
42+
#if CONFIG_EXAMPLE_SD_PWR_CTRL_LDO_INTERNAL_IO
43+
sd_pwr_ctrl_ldo_config_t ldo_config = {
44+
.ldo_chan_id = CONFIG_EXAMPLE_SD_PWR_CTRL_LDO_IO_ID,
45+
};
46+
sd_pwr_ctrl_handle_t pwr_ctrl_handle = NULL;
47+
48+
esp_err_t sd_pwr_ctrl_ret = sd_pwr_ctrl_new_on_chip_ldo(&ldo_config, &pwr_ctrl_handle);
49+
if (sd_pwr_ctrl_ret != ESP_OK) {
50+
ESP_LOGE(TAG, "Failed to create a new an on-chip LDO power control driver");
51+
ESP_ERROR_CHECK(sd_pwr_ctrl_ret);
52+
}
53+
#endif // CONFIG_EXAMPLE_SD_PWR_CTRL_LDO_INTERNAL_IO
54+
3555
// By default, SD card frequency is initialized to SDMMC_FREQ_DEFAULT (20MHz)
3656
// For setting a specific frequency, use host.max_freq_khz
3757
// (range 400kHz - 40MHz for SDMMC, 400kHz - 20MHz for SDSPI)
@@ -91,6 +111,11 @@ void init_sd_config(sdmmc_host_t *out_host, sdspi_device_config_t *out_slot_conf
91111
slot_config.gpio_cs = CONFIG_EXAMPLE_PIN_CS;
92112
slot_config.host_id = host.slot;
93113
#endif // CONFIG_EXAMPLE_USE_SDSPI
114+
115+
#if CONFIG_EXAMPLE_SD_PWR_CTRL_LDO_INTERNAL_IO
116+
host.pwr_ctrl_handle = pwr_ctrl_handle;
117+
#endif // CONFIG_EXAMPLE_SD_PWR_CTRL_LDO_INTERNAL_IO
118+
94119
*out_host = host;
95120
*out_slot_config = slot_config;
96121
}
@@ -137,6 +162,18 @@ void deinit_sd_card(sdmmc_card_t **card) {
137162
#else // CONFIG_EXAMPLE_USE_SDMMC
138163
sdspi_host_deinit();
139164
#endif // CONFIG_EXAMPLE_USE_SDSPI
165+
166+
// Deinitialize the power control driver if it was used
167+
#if CONFIG_EXAMPLE_SD_PWR_CTRL_LDO_INTERNAL_IO
168+
sd_pwr_ctrl_handle_t pwr_ctrl_handle = (*card)->host.pwr_ctrl_handle;
169+
esp_err_t ret = sd_pwr_ctrl_del_on_chip_ldo(pwr_ctrl_handle);
170+
if (ret != ESP_OK) {
171+
ESP_LOGE(TAG, "Failed to delete the on-chip LDO power control driver");
172+
ESP_ERROR_CHECK(ret);
173+
}
174+
pwr_ctrl_handle = NULL;
175+
#endif
176+
140177
free(*card);
141178
*card = NULL;
142179
}

examples/storage/sd_card/sdmmc/README.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ GPIO34 | D3 | not used in 1-line SD mode, but card's D3 pin must
7070

7171
On ESP32-P4, Slot 1 of the SDMMC peripheral is connected to GPIO pins using GPIO matrix. This allows arbitrary GPIOs to be used to connect an SD card. In this example, GPIOs can be configured in two ways:
7272

73-
1. Using menuconfig: Run `idf.py menuconfig` in the project directory and open "SD/MMC Example Configuration" menu.
73+
1. Using menuconfig: Run `idf.py menuconfig` in the project directory and open `SD/MMC Example Configuration` menu.
7474
2. In the source code: See the initialization of `sdmmc_slot_config_t slot_config` structure in the example code.
7575

7676
The table below lists the default pin assignments.
@@ -84,6 +84,10 @@ GPIO40 | D1 | not used in 1-line SD mode; 10k pullup in 4-line m
8484
GPIO41 | D2 | not used in 1-line SD mode; 10k pullup in 4-line mode
8585
GPIO42 | D3 | not used in 1-line SD mode, but card's D3 pin must have a 10k pullup
8686

87+
Default dedicated pins on ESP32-P4 are able to connect to an ultra high-speed SD card (UHS-I) which requires 1.8V switching (instead of the regular 3.3V). This means the user has to provide an external LDO power supply to use them, or to enable and configure an internal LDO via `idf.py menuconfig` -> `SD/MMC Example Configuration` -> `SD power supply comes from internal LDO IO`.
88+
89+
When using different GPIO pins this is not required and `SD power supply comes from internal LDO IO` setting can be disabled.
90+
8791
### 4-line and 1-line SD modes
8892

8993
By default, this example uses 4 line SD mode, utilizing 6 pins: CLK, CMD, D0 - D3. It is possible to use 1-line mode (CLK, CMD, D0) by changing "SD/MMC bus width" in the example configuration menu (see `CONFIG_EXAMPLE_SDMMC_BUS_WIDTH_1`).

examples/storage/sd_card/sdmmc/main/Kconfig.projbuild

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -152,18 +152,19 @@ menu "SD/MMC Example Configuration"
152152

153153
endif # EXAMPLE_SDMMC_BUS_WIDTH_4
154154

155-
config EXAMPLE_SDMMC_IO_POWER_INTERNAL_LDO
155+
config EXAMPLE_SD_PWR_CTRL_LDO_INTERNAL_IO
156156
depends on SOC_SDMMC_IO_POWER_EXTERNAL
157-
bool "SDMMC IO power supply comes from internal LDO (READ HELP!)"
157+
bool "SD power supply comes from internal LDO IO (READ HELP!)"
158158
default y
159159
help
160-
Please read the schematic first and check if the SDMMC VDD is connected to any internal LDO output.
161-
If the SDMMC is powered by an external supplier, unselect me
160+
Only needed when the SD card is connected to specific IO pins which can be used for high-speed SDMMC.
161+
Please read the schematic first and check if the SD VDD is connected to any internal LDO output.
162+
Unselect this option if the SD card is powered by an external power supply.
162163

163-
config EXAMPLE_SDMMC_IO_LDO_ID
164-
depends on SOC_SDMMC_IO_POWER_EXTERNAL
164+
config EXAMPLE_SD_PWR_CTRL_LDO_IO_ID
165+
depends on SOC_SDMMC_IO_POWER_EXTERNAL && EXAMPLE_SD_PWR_CTRL_LDO_INTERNAL_IO
165166
int "LDO ID"
166-
default 4
167+
default 4 if IDF_TARGET_ESP32P4
167168
help
168-
Please read the schematic first and input your LDO ID
169+
Please read the schematic first and input your LDO ID.
169170
endmenu

examples/storage/sd_card/sdmmc/main/sd_card_example_main.c

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,9 @@
1515
#include "sdmmc_cmd.h"
1616
#include "driver/sdmmc_host.h"
1717
#include "sd_test_io.h"
18+
#if SOC_SDMMC_IO_POWER_EXTERNAL
1819
#include "sd_pwr_ctrl_by_on_chip_ldo.h"
20+
#endif
1921

2022
#define EXAMPLE_MAX_CHAR_SIZE 64
2123

@@ -127,18 +129,18 @@ void app_main(void)
127129
// Example: for fixed frequency of 10MHz, use host.max_freq_khz = 10000;
128130
sdmmc_host_t host = SDMMC_HOST_DEFAULT();
129131

130-
/**
131-
* On these chips, the SDMMC IO power is supplied externally
132-
*/
133-
#if CONFIG_EXAMPLE_SDMMC_IO_POWER_INTERNAL_LDO
132+
// For SoCs where the SD power can be supplied both via an internal or external (e.g. on-board LDO) power supply.
133+
// When using specific IO pins (which can be used for ultra high-speed SDMMC) to connect to the SD card
134+
// and the internal LDO power supply, we need to initialize the power supply first.
135+
#if CONFIG_EXAMPLE_SD_PWR_CTRL_LDO_INTERNAL_IO
134136
sd_pwr_ctrl_ldo_config_t ldo_config = {
135-
.ldo_chan_id = 4, // `LDO_VO4` is used as the SDMMC IO power
137+
.ldo_chan_id = CONFIG_EXAMPLE_SD_PWR_CTRL_LDO_IO_ID,
136138
};
137139
sd_pwr_ctrl_handle_t pwr_ctrl_handle = NULL;
138140

139141
ret = sd_pwr_ctrl_new_on_chip_ldo(&ldo_config, &pwr_ctrl_handle);
140142
if (ret != ESP_OK) {
141-
ESP_LOGE(TAG, "Failed to new an on-chip ldo power control driver");
143+
ESP_LOGE(TAG, "Failed to create a new on-chip LDO power control driver");
142144
return;
143145
}
144146
host.pwr_ctrl_handle = pwr_ctrl_handle;
@@ -237,7 +239,7 @@ void app_main(void)
237239
ESP_LOGI(TAG, "file still exists");
238240
return;
239241
} else {
240-
ESP_LOGI(TAG, "file doesnt exist, format done");
242+
ESP_LOGI(TAG, "file doesn't exist, formatting done");
241243
}
242244
#endif // CONFIG_EXAMPLE_FORMAT_SD_CARD
243245

@@ -257,14 +259,14 @@ void app_main(void)
257259

258260
// All done, unmount partition and disable SDMMC peripheral
259261
esp_vfs_fat_sdcard_unmount(mount_point, card);
262+
ESP_LOGI(TAG, "Card unmounted");
260263

261-
#if SOC_SDMMC_IO_POWER_EXTERNAL
264+
// Deinitialize the power control driver if it was used
265+
#if CONFIG_EXAMPLE_SD_PWR_CTRL_LDO_INTERNAL_IO
262266
ret = sd_pwr_ctrl_del_on_chip_ldo(pwr_ctrl_handle);
263267
if (ret != ESP_OK) {
264-
ESP_LOGE(TAG, "Failed to delete on-chip ldo power control driver");
268+
ESP_LOGE(TAG, "Failed to delete the on-chip LDO power control driver");
265269
return;
266270
}
267271
#endif
268-
269-
ESP_LOGI(TAG, "Card unmounted");
270272
}

examples/storage/sd_card/sdmmc/pytest_sdmmc_card_example.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
# SPDX-FileCopyrightText: 2022-2023 Espressif Systems (Shanghai) CO LTD
22
# SPDX-License-Identifier: Unlicense OR CC0-1.0
3-
4-
53
import logging
64
import re
75

@@ -32,7 +30,7 @@ def test_examples_sd_card_sdmmc(dut: Dut) -> None:
3230
'Reading file /sdcard/foo.txt',
3331
"Read from file: 'Hello {}!'".format(name))
3432
sd_card_format = re.compile(str.encode('Formatting card, allocation unit size=\\S+'))
35-
message_list2 = ('file doesnt exist, format done',
33+
message_list2 = ("file doesn't exist, formatting done",
3634
'Opening file /sdcard/nihao.txt',
3735
'File written',
3836
'Reading file /sdcard/nihao.txt',

examples/storage/sd_card/sdspi/README.md

Lines changed: 28 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -41,12 +41,12 @@ This example doesn't utilize card detect (CD) and write protect (WP) signals fro
4141

4242
The table below shows the default pin assignments.
4343

44-
SD card pin | SPI pin | ESP32 pin | ESP32-S2, ESP32-S3 | ESP32-H2 | ESP32-C3 and other chips | Notes
45-
------------|---------|---------------|--------------------|----------|---------------------------|-------------
46-
D0 | MISO | GPIO2 | GPIO37 | GPIO0 | GPIO6 |
47-
D3 | CS | GPIO13 (MTCK) | GPIO34 | GPIO1 | GPIO1 |
48-
CLK | SCK | GPIO14 (MTMS) | GPIO36 | GPIO4 | GPIO5 |
49-
CMD | MOSI | GPIO15 (MTDO) | GPIO35 | GPIO5 | GPIO4 | 10k pullup
44+
SD card pin | SPI pin | ESP32 pin | ESP32-S2, ESP32-S3 | ESP32-P4 | ESP32-H2 | ESP32-C3 and other chips | Notes
45+
------------|---------|---------------|--------------------|----------|----------|--------------------------|------------
46+
D0 | MISO | GPIO2 | GPIO37 | GPIO13 | GPIO0 | GPIO6 |
47+
D3 | CS | GPIO13 (MTCK) | GPIO34 | GPIO10 | GPIO1 | GPIO1 |
48+
CLK | SCK | GPIO14 (MTMS) | GPIO36 | GPIO12 | GPIO4 | GPIO5 |
49+
CMD | MOSI | GPIO15 (MTDO) | GPIO35 | GPIO11 | GPIO5 | GPIO4 | 10k pullup
5050

5151

5252
#### ESP32 related notes
@@ -63,6 +63,28 @@ With the default pin assignments, this example is compatible ESP32-S2-USB-OTG an
6363

6464
For other development boards, adjust the pin assignments as explained above.
6565

66+
#### ESP32-P4 related notes
67+
68+
On ESP32-P4, Slot 1 of the SDMMC peripheral is connected to GPIO pins using GPIO matrix. This allows arbitrary GPIOs to be used to connect an SD card. In this example, GPIOs can be configured in two ways:
69+
70+
1. Using menuconfig: Run `idf.py menuconfig` in the project directory and open `SD SPI Example Configuration` menu.
71+
2. In the source code: See the initialization of `sdmmc_slot_config_t slot_config` structure in the example code.
72+
73+
Default pins for SDSPI are listed in the table above [Pin assignments](#1-pin-assignments) and using them doesn't require any additional settings.
74+
75+
However on some development boards the SD card slot can be wired to default dedicated pins for SDMMC, which are listed in the table below.
76+
77+
SD card pin | ESP32-P4 pin
78+
------------|--------------
79+
D0 (MISO) | GPIO39
80+
D3 (CS) | GPIO42
81+
CLK (SCK) | GPIO43
82+
CMD (MOSI) | GPIO44
83+
84+
These pins are able to connect to an ultra high-speed SD card (UHS-I) which requires 1.8V switching (instead of the regular 3.3V). This means the user has to provide an external LDO power supply to use them, or to enable and configure an internal LDO via `idf.py menuconfig` -> `SD/MMC Example Configuration` -> `SD power supply comes from internal LDO IO`.
85+
86+
When using different GPIO pins this is not required and `SD power supply comes from internal LDO IO` setting can be disabled.
87+
6688
#### Notes for ESP32-C3 and other chips
6789

6890
Espressif doesn't offer development boards with an SD card slot for these chips. Please check the pin assignments and adjust them for your board if necessary. The process to change pin assignments is described above.

0 commit comments

Comments
 (0)