🛠 Logger sur carte SD via le port SDIO natif du Teensy 4.1
Objetivos
El Teensy 4.1 es la única tarjeta de la familia que dispone de un conector SD debajo de la placa, conectado a un puerto SDIO nativo de 4 bits: sin compartir el bus SPI, sin cablear ningún pin de selección de chip (chip-select) y con un DMA dedicado en el periférico. Este tutorial configura un registrador de mediciones capaz de escribir de forma continua sin bloquear el resto del programa.
Material
- 1 Teensy 4.1 + cable micro-USB de datos
- 1 tarjeta microSD formateada en FAT32 (las tarjetas de 32 GB o menos son las más seguras)
- El sensor de tu elección en A0 (pin Arduino 14)
Puntos clave
- La inicialización se resume en una línea:
SD.begin(BUILTIN_SDCARD)— la constante mágica designa el conector SDIO interno, no un pin. - Para un sensor SPI externo (W5500, pantalla...), el bus SPI queda totalmente libre: esa es toda la ventaja del SDIO.
- La biblioteca SD también acepta tarjetas en pines SPI clásicos, pero este tutorial se centra en el conector integrado.
- Cierra siempre el archivo (
close) antes de volver a abrirlo: al sistema de archivos no le gustan los manejadores múltiples.
Código completo
#include <SD.h>
const uint8_t LED = 13;
void setup {
Serial.begin(9600);
while (!Serial && millis < 3000);
if (!SD.begin(BUILTIN_SDCARD)) {
Serial.println("SD absente (FAT32, <= 32 Go)");
while (true) { digitalWrite(LED, !digitalRead(LED)); delay(200); }
}
Serial.println("SD prête sur SDIO");
}
void loop {
File log = SD.open("log.txt", FILE_WRITE);
if (log) {
log.print(millis);
log.print(" A0=");
log.println(analogRead(14));
log.close;
}
delay(1000);
}
Verificación esperada
SD lista en SDIO se muestra en la primera ejecución; después de reconectar, log.txt contiene una línea por segundo. Retira la tarjeta y reconecta la alimentación: el LED 13 parpadea rápidamente, señal de que SD.begin ha fallado — tu programa de respaldo está haciendo su trabajo.
Errores frecuentes
- Tarjeta formateada en exFAT o NTFS: solo FAT32 está garantizado; vuelve a formatear.
- Olvidar
log.closeantes de la siguiente apertura: las líneas siguientes se pierden o corrompen el archivo. - Esperar velocidades de tarjeta UHS-II: el bus es un SDIO clásico de 4 bits — ya muy superior al SPI del Teensy 3.2, pero sin milagros.
- Confundirlo con el almacenamiento flash interno: los 8 MB de QSPI también pueden recibir archivos mediante LittleFS, pero la tarjeta SD sigue siendo la solución de gran capacidad extraíble.
- Descuidar el tiempo de escritura en EEPROM: si complementas este registrador con
EEPROM.update, ten en cuenta que cada escritura pausa la ejecución desde el flash (documentado por PJRC).
Otros tutoriales para esta placa
- Premiers pas sur le Teensy 4.1 : Teensyduino, Teensy Loader et premier Blink
- GPIO et PWM sur le Teensy 4.1 : 55 broches en 3,3 V, ni 5 V tolérées ni traîne
- Entrées analogiques du Teensy 4.1 : 18 broches, 2 ADC, 0-3,3 V fixes et zéro DAC
- Serveur web embarqué : l'Ethernet natif 10/100 du Teensy 4.1 (DP83825)
- Boîte à rythmes USB MIDI : classes MIDI, MIDIx16 et port hôte USBHost_t36
- Ingénierie mémoire du Teensy 4.1 : TCM, DMAMEM, EXTMEM, flash QSPI et EEPROM
Ejemplos de código para esta placa
clignotante.inoArduinotouche-capacitive.inoArduinoanalogique-12-bits.inoArduinomidi-piano.inoArduinopwm-respiration.inoArduinoservo-angle.inoArduino