Tabla de contenido:

Seleccione la interfaz SD para ESP32: 12 pasos (con imágenes)
Seleccione la interfaz SD para ESP32: 12 pasos (con imágenes)

Video: Seleccione la interfaz SD para ESP32: 12 pasos (con imágenes)

Video: Seleccione la interfaz SD para ESP32: 12 pasos (con imágenes)
Video: SERIE HMI #0: INTERFAZ GRAFICA DE CONTROL - ARDUINO - ESP32 - GUI 2024, Noviembre
Anonim
Seleccione la interfaz SD para ESP32
Seleccione la interfaz SD para ESP32

Estos instructivos muestran algo sobre cómo seleccionar una interfaz SD para su proyecto ESP32.

Paso 1: interfaz SD

En la biblioteca SD de Arduino original, la interfaz SD está utilizando el modo de transferencia de bus SD SPI.

SD en realidad tiene más modo de transferencia:

  • Modo de bus SPI: ESP32 tiene más de 1 bus SPI, se puede personalizar durante la inicialización
  • Modo de bus SD de 1 bit / 4 bits: ESP32 dedica otra biblioteca llamada SD_MMC para implementar la API del modo de bus SD
  • Modo SD UHS-II: ESP32 no compatible

Árbitro.:

www.arduino.cc/en/reference/SD

en.wikipedia.org/wiki/SD_card

docs.espressif.com/projects/esp-idf/en/lat…

Paso 2: Asignación de pines GPIO ESP32

Aquí está la asignación de pines GPIO ESP32 predeterminada:

Pin de la tarjeta SD Pin microSD Nombre Bus SD de 4 bits Bus SD de 1 bit Bus SPI (pines HSPI / VSPInative)
1 2 D3 13 - SS (15/5)
2 3 CMD 15 15 MOSI (13/23)
3 - VSS GND GND GND
4 4 VDD 3,3 V 3,3 V 3,3 V
5 5 CLK 14 14 SCK (14/18)
6 6 VSS GND GND GND
7 7 D0 2 2 MISO (19/12)
8 8 D1 4 - -
9 1 D2 12 - -

La asignación de pines GPIO del bus SD de 1 bit / 4 bits no se puede cambiar.

Llamada simple SD_MMC begin () al modo de bus SD de 4 bits inicial:

SD_MMC.begin ();

El modo de bus SD de 1 bit se puede seleccionar en el método SD_MMC begin (), p. Ej.

SD_MMC.begin ("/ cdcard", verdadero);

El bus SPI (HSPI o VSPI) se puede seleccionar mientras se crea la instancia de SPIClass, p. Ej.

SPIClass spi = SPIClass (HSPI);

Como puede ver, los pines del bus SD de 1 bit / 4 bits comparten pines con HSPI, pero la asignación de pines de la tarjeta SD no es la misma. Entonces, si el hardware está conectado de acuerdo con el mapa de pines del bus SD, no puede usar pines nativos HSPI directamente. Los pines GPIO se pueden anular en el método begin () de SPIClass, p. Ej.

SPIClass spi = SPIClass (HSPI);

spi.begin (14 / * SCK * /, 2 / * MISO * /, 15 / * MOSI * /, 13 / * SS * /);

Y también la biblioteca SD puede anular el pin SS, el bus SPI y la frecuencia del bus en el método SD begin (), p. Ej.

SD.begin (13 / * SS * /, spi, 80000000);

Paso 3: requisitos de pull-up SD

Si desea utilizar el modo de bus SD de 4 bits, siga los requisitos de extracción de SD ESP32, especialmente:

  • Conflictos de pull-up en GPIO13
  • Conflictos entre Bootstrap y SDIO en DAT2

Árbitro.:

docs.espressif.com/projects/esp-idf/en/lat…

Paso 4: Hardware diverso

Varios hardware
Varios hardware

ESP32 tiene toneladas de kit de desarrollo y placa de desarrollo, algunos de ellos tienen una ranura para tarjeta MicroSD incorporada.

Aquí hay un ejemplo en mi mano:

  • TTGO T-Watch, se conectó a los pines GPIO 2, 13, 14 y 15 de acuerdo con el modo de bus SD de 1 bit, por lo que puede usar el modo de bus SD de 1 bit y el modo de bus SPI
  • Serie M5Stack, se conectó a los pines GPIO 4, 18, 19 y 23 de acuerdo con los pines nativos de VSPI, por lo que puede usar la configuración predeterminada de la biblioteca SD [SD.begin (4)]
  • ODROID-GO, se conectó a los pines GPIO 18, 19, 22 y 23 de acuerdo con los pines nativos de VSPI, por lo que puede usar la configuración predeterminada de la biblioteca SD [SD.begin (22)]
  • ESP32-CAM, se conectó a los pines GPIO 2, 4, 12, 13, 14 y 15 de acuerdo con el modo de bus SD de 4 bits, por lo que puede usar todo el modo de bus SD de 4 bits / 1 bit y el modo de bus SPI
  • Placa de desarrollo TTGO T8, se conectó a los pines GPIO 2, 13, 14 y 15 de acuerdo con el modo de bus SD de 1 bit, por lo que puede usar el modo de bus SD de 1 bit y el modo de bus SPI

www.lilygo.cn/prod_view.aspx?Id=1123

docs.m5stack.com/

wiki.odroid.com/odroid_go/odroid_go

wiki.ai-thinker.com/esp32-cam

github.com/LilyGO/TTGO-T8-ESP32

Paso 5: Placa de conexión de la ranura para tarjeta SD

Placa de conexión de ranura para tarjeta SD
Placa de conexión de ranura para tarjeta SD
Placa de conexión de ranura para tarjeta SD
Placa de conexión de ranura para tarjeta SD

Es posible que la placa de desarrollo con ranura para tarjeta MicroSD incorporada no conecte todos los pines y la mayoría no pueda usar el modo de bus SD de 4 bits. Una placa de conexión de ranura para tarjeta SD individual proporciona una mayor flexibilidad.

Al mismo tiempo, muchas placas de conexión LCD también disponen de una ranura para tarjetas SD de tamaño completo. Sin embargo, la mayoría de ellos solo rompen los pines del modo SPI. No es suficiente usarlo como modo de bus SD de 4 bits, pero aún puede usarlo como modo de bus SD de 1 bit mediante esta asignación de conexión:

LCD -> ESP32

SD_CS -> nada SD_MOSI -> 15 SD_MISO -> 2 SD_SCK -> 14

Paso 6: desconecte GPIO 2 durante el programa

Desconectar GPIO 2 durante el programa
Desconectar GPIO 2 durante el programa

La conexión del modo de bus SD de 4 bits hace que ESP32 no pueda ingresar al modo de programa. Recuerde desconectar el GPIO 2 de la placa de conexión DAT0 de la ranura de la tarjeta SD antes de cargar un nuevo programa.

Paso 7: Benchmark

Punto de referencia
Punto de referencia
Punto de referencia
Punto de referencia

He escrito un programa Arduino simple para el punto de referencia:

github.com/moononournation/ESP32_SD_Benchm…

Aquí está el hardware para el punto de referencia:

ESP32

NodeMCU ESP32-32S V1.1 (WROOM-32)

Ranura para tarjetas SD

Una placa de conexión de ranura para tarjeta MicroSD

Tarjeta SD

Tengo una SanDisk MicroSD de 8 GB y una vieja MicroSD de 128 MB en la mano.

Paso 8: Benchmark del modo SD_MMC de 4 bits

SanDisk 8 GB MicroSD

20: 27: 46.000 -> Escritura de prueba /test_1k.bin

20: 27: 59.399 -> Archivo de escritura usado: 13404 ms, 312.914368 KB / s 20: 27: 59.399 -> Escritura de prueba /test_2k.bin 20: 28: 17.248 -> Archivo de escritura usado: 17834 ms, 235.185822 KB / s 20: 28: 17.248 -> Escritura de prueba /test_4k.bin 20: 28: 21.122 -> Archivo de escritura utilizado: 3873 ms, 1082.959961 KB / s 20: 28: 21.122 -> Escritura de prueba /test_8k.bin 20: 28: 23.147 -> Archivo de escritura usado: 2024 ms, 2072.284668 KB / s 20: 28: 23.147 -> Prueba de escritura /test_16k.bin 20: 28: 27.237 -> Archivo de escritura usado: 4097 ms, 1023.750061 KB / s 20: 28: 27.237 -> Prueba write /test_32k.bin 20: 28: 30.088 -> Archivo de escritura usado: 2842 ms, 1475.828247 KB / s 20: 28: 30.088 -> Escritura de prueba /test_64k.bin 20: 28: 31.882 -> Archivo de escritura usado: 1811 ms, 2316.015381 KB / s 20: 28: 31.882 -> Lectura de prueba /test_1k.bin 20: 28: 35.422 -> Archivo de lectura utilizado: 3520 ms, 1191.563599 KB / s 20: 28: 35.422 -> Lectura de prueba /test_2k.bin 20: 28: 38.813 -> Archivo de lectura usado: 3389 ms, 1237.622925 KB / s 20: 28: 38.813 -> Lectura de prueba /test_4k.bin 20: 28: 42.273 -> Archivo de lectura usado: 3474 ms, 1207.341431 KB / s 20:28: 42.273 -> Prueba de lectura /test_8k.bin 20: 28: 45.752 - > Leer archivo usado: 3487 ms, 1202.840210 KB / s 20: 28: 45.752 -> Prueba de lectura /test_16k.bin 20: 28: 48.988 -> Leer archivo usado: 3213 ms, 1305.416748 KB / s 20: 28: 48.988 -> Lectura de prueba /test_32k.bin 20: 28: 52.077 -> Archivo de lectura utilizado: 3093 ms, 1356.063354 KB / s 20: 28: 52.077 -> Lectura de prueba /test_64k.bin 20: 28: 55.141 -> Archivo de lectura utilizado: 3080 ms, 1361.786987 KB / s

MicroSD de 128 MB antiguo

20: 30: 43.309 -> E (274) sdmmc_sd: sdmmc_check_scr: send_scr devolvió 0x109

20: 30: 43.309 -> Fallo en el montaje de la tarjeta

Paso 9: Benchmark del modo de 1 bit SD_MMC

SanDisk 8 GB MicroSD

20: 31: 45.194 -> Escritura de prueba /test_1k.bin

20: 31: 59.506 -> Archivo de escritura usado: 14325 ms, 292.796082 KB / s 20: 31: 59.506 -> Prueba de escritura /test_2k.bin 20: 32: 17.686 -> Archivo de escritura usado: 18163 ms, 230.925735 KB / s 20: 32: 17.686 -> Escritura de prueba /test_4k.bin 20: 32: 21.291 -> Archivo de escritura utilizado: 3611 ms, 1161.535278 KB / s 20: 32: 21.291 -> Escritura de prueba /test_8k.bin 20: 32: 23.939 -> Archivo de escritura usado: 2652 ms, 1581.562622 KB / s 20: 32: 23.939 -> Prueba de escritura /test_16k.bin 20: 32: 28.397 -> Archivo de escritura usado: 4448 ms, 942.964050 KB / s 20: 32: 28.397 -> Prueba write /test_32k.bin 20: 32: 31.835 -> Archivo de escritura usado: 3429 ms, 1223.185791 KB / s 20: 32: 31.835 -> Escritura de prueba /test_64k.bin 20: 32: 33.882 -> Archivo de escritura usado: 2058 ms, 2038.048584 KB / s 20: 32: 33.882 -> Lectura de prueba /test_1k.bin 20: 32: 38.031 -> Archivo de lectura utilizado: 4146 ms, 1011.650757 KB / s 20: 32: 38.031 -> Lectura de prueba /test_2k.bin 20: 32: 42.062 -> Archivo de lectura utilizado: 4019 ms, 1043.618774 KB / s 20: 32: 42.062 -> Lectura de prueba /test_4k.bin 20: 32: 46.170 -> Archivo de lectura utilizado: 4106 ms, 1021.506104 KB / s 20:32: 46.170 -> Prueba de lectura /test_8k.bin 20: 32: 50.288 -> Leer archivo usado: 4121 ms, 1017.787903 KB / s 20: 32: 50.288 -> Prueba de lectura /test_16k.bin 20: 32: 54.112 -> Leer archivo usado: 3840 ms, 1092.266724 KB / s 20: 32: 54.112 -> Prueba leer /test_32k.bin 20: 32: 57.840 -> Leer archivo usado: 3739 ms, 1121.771606 KB / s 20: 32: 57.840 -> Prueba leer /test_64k.bin 20: 33: 01.568 -> Leer archivo usado: 3711 ms, 1130.235474 KB / s

MicroSD de 128 MB antiguo

20: 33: 27.366 -> Escritura de prueba /test_1k.bin

20: 33: 42.386 -> Archivo de escritura usado: 15020 ms, 279.247925 KB / s 20: 33: 42.386 -> Escritura de prueba /test_2k.bin 20: 33: 57.927 -> Archivo de escritura usado: 15515 ms, 270.338654 KB / s 20: 33: 57.927 -> Escritura de prueba /test_4k.bin 20: 34: 13.108 -> Archivo de escritura utilizado: 15195 ms, 276.031860 KB / s 20: 34: 13.108 -> Escritura de prueba /test_8k.bin 20: 34: 28.162 -> Archivo de escritura usado: 15048 ms, 278.728333 KB / s 20: 34: 28.162 -> Prueba de escritura /test_16k.bin 20: 34: 43.287 -> Archivo de escritura usado: 15142 ms, 276.998016 KB / s 20: 34: 43.287 -> Prueba write /test_32k.bin 20: 34: 58.278 -> Archivo de escritura usado: 14964 ms, 280.292969 KB / s 20: 34: 58.278 -> Escritura de prueba /test_64k.bin 20: 35: 13.370 -> Archivo de escritura usado: 15101 ms, 277.750092 KB / s 20: 35: 13.370 -> Lectura de prueba /test_1k.bin 20: 35: 17.563 -> Archivo de lectura utilizado: 4197 ms, 999.357666 KB / s 20: 35: 17.563 -> Lectura de prueba /test_2k.bin 20: 35: 21.746 -> Archivo de lectura utilizado: 4191 ms, 1000.788330 KB / s 20: 35: 21.746 -> Lectura de prueba /test_4k.bin 20: 35: 25.942 -> Archivo de lectura utilizado: 4181 ms, 1003.182007 KB / s 20:35: 25.942 -> Prueba de lectura /test_8k.bin 20: 35: 30.101 -> Leer archivo usado: 4176 ms, 1004.383118 KB / s 20: 35: 30.101 -> Prueba de lectura /test_16k.bin 20: 35: 34.279 -> Leer archivo usado: 4174 ms, 1004.864380 KB / s 20: 35: 34.279 -> Prueba leer /test_32k.bin 20: 35: 38.462 -> Leer archivo usado: 4173 ms, 1005.105225 KB / s 20: 35: 38.462 -> Prueba leer /test_64k.bin 20: 35: 42.612 -> Leer archivo usado: 4173 ms, 1005.105225 KB / s

Paso 10: Modo SD SPI en HSPI Bus Benchmark

SanDisk 8 GB MicroSD

08: 41: 19.703 -> Escritura de prueba /test_1k.bin

08: 41: 53.458 -> Archivo de escritura usado: 33743 ms, 124.301453 KB / s 08: 41: 53.458 -> Prueba de escritura /test_2k.bin 08: 42: 10.000 -> Archivo de escritura usado: 16540 ms, 253.585495 KB / s 08: 42: 10.000 -> Escritura de prueba /test_4k.bin 08: 42: 17.269 -> Archivo de escritura utilizado: 7298 ms, 574.719666 KB / s 08: 42: 17.308 -> Escritura de prueba /test_8k.bin 08: 42: 22.640 -> Archivo de escritura usado: 5345 ms, 784.715454 KB / s 08: 42: 22.640 -> Prueba de escritura /test_16k.bin 08: 42: 32.285 -> Archivo de escritura usado: 9662 ms, 434.103088 KB / s 08: 42: 32.285 -> Prueba write /test_32k.bin 08: 42: 36.659 -> Archivo de escritura usado: 4355 ms, 963.100830 KB / s 08: 42: 36.659 -> Prueba de escritura /test_64k.bin 08: 42: 39.594 -> Archivo de escritura usado: 2949 ms, 1422.280151 KB / s 08: 42: 39.594 -> Lectura de prueba /test_1k.bin 08: 42: 44.774 -> Archivo de lectura utilizado: 5192 ms, 807.839783 KB / s 08: 42: 44.774 -> Lectura de prueba /test_2k.bin 08: 42: 49.969 -> Archivo de lectura utilizado: 5189 ms, 808.306824 KB / s 08: 42: 49.969 -> Lectura de prueba /test_4k.bin 08: 42: 55.123 -> Archivo de lectura utilizado: 5161 ms, 812.692139 KB / s 08:42: 55.158 -> Prueba de lectura /test_8k.bin 08: 43: 00.300 -> Leer archivo utilizado: 5176 ms, 810.336914 KB / s 08: 43: 00.334 -> Lectura de prueba /test_16k.bin 08: 43: 05.277 -> Archivo de lectura utilizado: 4948 ms, 847.676636 KB / s 08: 43: 05.277 -> Lectura de prueba /test_32k.bin 08: 43: 10.028 -> Archivo de lectura utilizado: 4773 ms, 878.756348 KB / s 08: 43: 10.028 -> Lectura de prueba /test_64k.bin 08: 43: 14.760 -> Archivo de lectura utilizado: 4731 ms, 886.557617 KB / s

MicroSD de 128 MB antiguo

08: 43: 47.777 -> Escritura de prueba /test_1k.bin

08: 44: 04.148 -> Archivo de escritura usado: 16390 ms, 255.906281 KB / s 08: 44: 04.183 -> Prueba de escritura /test_2k.bin 08: 44: 20.648 -> Archivo de escritura usado: 16494 ms, 254.292709 KB / s 08: 44: 20.648 -> Escritura de prueba /test_4k.bin 08: 44: 36.674 -> Archivo de escritura utilizado: 16001 ms, 262.127625 KB / s 08: 44: 36.674 -> Escritura de prueba /test_8k.bin 08: 44: 52.849 -> Archivo de escritura usado: 16175 ms, 259.307831 KB / s 08: 44: 52.849 -> Prueba de escritura /test_16k.bin 08: 45: 09.225 -> Archivo de escritura usado: 16397 ms, 255.797043 KB / s 08: 45: 09.225 -> Prueba write /test_32k.bin 08: 45: 25.363 -> Archivo de escritura usado: 16143 ms, 259.821838 KB / s 08: 45: 25.397 -> Prueba de escritura /test_64k.bin 08: 45: 41.632 -> Archivo de escritura usado: 16263 ms, 257.904694 KB / s 08: 45: 41.632 -> Lectura de prueba /test_1k.bin 08: 45: 46.488 -> Archivo de lectura utilizado: 4856 ms, 863.736389 KB / s 08: 45: 46.488 -> Lectura de prueba /test_2k.bin 08: 45: 51.332 -> Archivo de lectura usado: 4840 ms, 866.591736 KB / s 08: 45: 51.332 -> Prueba de lectura /test_4k.bin 08: 45: 56.163 -> Archivo de lectura usado: 4834 ms, 867.667358 KB / s 08:45: 56.163 -> Lectura de prueba /test_8k.bin 08: 46: 00.998 -> R archivo ead usado: 4827 ms, 868.925598 KB / s 08: 46: 00.998 -> Prueba de lectura /test_16k.bin 08: 46: 05.808 -> Archivo de lectura usado: 4825 ms, 869.285828 KB / s 08: 46: 05.843 -> Prueba leer /test_32k.bin 08: 46: 10.637 -> Leer archivo usado: 4824 ms, 869.466003 KB / s 08: 46: 10.637 -> Prueba leer /test_64k.bin 08: 46: 15.478 -> Leer archivo usado: 4825 ms, 869.285828 KB / s

Paso 11: Modo SD SPI en VSPI Bus Benchmark

SanDisk 8 GB MicroSD

08: 54: 17.412 -> Escritura de prueba /test_1k.bin

08: 54: 48.398 -> Archivo de escritura usado: 30994 ms, 135.326324 KB / s 08: 54: 48.398 -> Prueba de escritura /test_2k.bin 08: 55: 06.079 -> Archivo de escritura usado: 17677 ms, 237.274658 KB / s 08: 55: 06.079 -> Escritura de prueba /test_4k.bin 08: 55: 13.357 -> Archivo de escritura utilizado: 7274 ms, 576.615906 KB / s 08: 55: 13.357 -> Escritura de prueba /test_8k.bin 08: 55: 18.691 -> Archivo de escritura usado: 5323 ms, 787.958679 KB / s 08: 55: 18.691 -> Prueba de escritura /test_16k.bin 08: 55: 28.336 -> Archivo de escritura usado: 9669 ms, 433.788818 KB / s 08: 55: 28.336 -> Prueba write /test_32k.bin 08: 55: 32.646 -> Archivo de escritura usado: 4309 ms, 973.382202 KB / s 08: 55: 32.646 -> Prueba de escritura /test_64k.bin 08: 55: 35.551 -> Archivo de escritura usado: 2915 ms, 1438.869263 KB / s 08: 55: 35.584 -> Lectura de prueba /test_1k.bin 08: 55: 40.745 -> Archivo de lectura utilizado: 5183 ms, 809.242554 KB / s 08: 55: 40.745 -> Lectura de prueba /test_2k.bin 08: 55: 45.916 -> Archivo de lectura utilizado: 5182 ms, 809.398682 KB / s 08: 55: 45.949 -> Lectura de prueba /test_4k.bin 08: 55: 51.091 -> Archivo de lectura utilizado: 5162 ms, 812.534668 KB / s 08:55: 51.091 -> Prueba de lectura /test_8k.bin 08: 55: 56.257 -> Leer archivo utilizado: 5177 ms, 810.180420 KB / s 08: 55: 56.293 -> Lectura de prueba /test_16k.bin 08: 56: 01.244 -> Archivo de lectura utilizado: 4956 ms, 846.308289 KB / s 08: 56: 01.244 -> Lectura de prueba /test_32k.bin 08: 56: 06.006 -> Archivo de lectura utilizado: 4764 ms, 880.416443 KB / s 08: 56: 06.006 -> Lectura de prueba /test_64k.bin 08: 56: 10.716 -> Archivo de lectura utilizado: 4728 ms, 887.120117 KB / s

MicroSD de 128 MB antiguo

08: 51: 01.939 -> Escritura de prueba /test_1k.bin

08: 51: 18.358 -> Archivo de escritura usado: 16422 ms, 255.407623 KB / s 08: 51: 18.358 -> Prueba de escritura /test_2k.bin 08: 51: 34.529 -> Archivo de escritura usado: 16173 ms, 259.339874 KB / s 08: 51: 34.529 -> Escritura de prueba /test_4k.bin 08: 51: 50.911 -> Archivo de escritura utilizado: 16372 ms, 256.187653 KB / s 08: 51: 50.911 -> Escritura de prueba /test_8k.bin 08: 52: 07.056 -> Archivo de escritura usado: 16137 ms, 259.918457 KB / s 08: 52: 07.056 -> Prueba de escritura /test_16k.bin 08: 52: 23.383 -> Archivo de escritura usado: 16351 ms, 256.516663 KB / s 08: 52: 23.383 -> Prueba write /test_32k.bin 08: 52: 39.533 -> Archivo de escritura usado: 16128 ms, 260.063507 KB / s 08: 52: 39.533 -> Escritura de prueba /test_64k.bin 08: 52: 55.764 -> Archivo de escritura usado: 16250 ms, 258.111023 KB / s 08: 52: 55.764 -> Lectura de prueba /test_1k.bin 08: 53: 00.645 -> Archivo de lectura utilizado: 4855 ms, 863.914307 KB / s 08: 53: 00.645 -> Lectura de prueba /test_2k.bin 08: 53: 05.459 -> Archivo de lectura utilizado: 4839 ms, 866.770813 KB / s 08: 53: 05.459 -> Lectura de prueba /test_4k.bin 08: 53: 10.306 -> Archivo de lectura utilizado: 4833 ms, 867.846863 KB / s 08:53: 10.306 -> Lectura de prueba /test_8k.bin 08: 53: 15.127 -> R ead archivo usado: 4827 ms, 868.925598 KB / s 08: 53: 15.127 -> Prueba de lectura /test_16k.bin 08: 53: 19.963 -> Leer archivo usado: 4826 ms, 869.105652 KB / s 08: 53: 19.963 -> Prueba leer /test_32k.bin 08: 53: 24.758 -> Leer archivo usado: 4824 ms, 869.466003 KB / s 08: 53: 24.792 -> Prueba leer /test_64k.bin 08: 53: 29.592 -> Leer archivo usado: 4824 ms, 869.466003 KB / s

Paso 12: redondeo

El modo de bus SD de 4 bits tiene el mejor rendimiento, el modo de bus SD de 1 bit es aproximadamente un 20% más lento y el modo SPI es aproximadamente un 50% más lento. Una de las razones principales es que la capa de protocolo SD_MMC no implementa ningún tipo de bloqueo, pero SPI sí. Y también el modo de bus SD de 4 bits tiene líneas de datos dobles, por lo que en teoría duplica la velocidad. Pero mi antigua MicroSD no puede admitir el modo de bus SD de 4 bits.

Recomendaré el modo de bus SD de 1 bit en la mayoría de los casos, porque:

  • Buen rendimiento
  • mejor compatibilidad con tarjetas SD
  • requisitos de dominadas SD más flexibles
  • solo se requieren 3 pines GPIO
  • configuración de código menor
  • muchos kits de desarrollo, placa de desarrollo y placa de conexión pueden usar este modo

Recomendado: