🛠 Logger sur carte SD via le port SDIO natif du Teensy 4.1
Objectifs
Le Teensy 4.1 est la seule carte de la famille à disposer d'un connecteur SD sous la carte, branché sur un port SDIO natif 4 bits : ni partage du bus SPI, ni broche chip-select à câbler, et un DMA dédié dans le périphérique. Ce tutoriel met en place un enregistreur de mesures capables d'écrire en continu sans bloquer le reste du programme.
Matériel
- 1 Teensy 4.1 + câble micro-USB de données
- 1 carte microSD formatée FAT32 (les cartes de 32 Go ou moins sont les plus sûres)
- Le capteur de votre choix sur A0 (broche Arduino 14)
Points clés
- L'initialisation tient en un mot :
SD.begin(BUILTIN_SDCARD)— la constante magique désigne le connecteur SDIO interne, pas une broche. - Pour un capteur SPI externe (W5500, écran...), le bus SPI reste entièrement libre : c'est tout l'intérêt du SDIO.
- La bibliothèque SD accepte aussi des cartes sur broches SPI classiques, mais ce tutoriel vise le connecteur embarqué.
- Fermez toujours le fichier (
close) avant de le rouvrir : le système de fichiers n'apprécie pas les poignées multiples.
Code complet
#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);
}
Vérification attendue
SD prête sur SDIO s'affiche au premier lancement ; après rebranchement, log.txt contient une ligne par seconde. Retirez la carte et rebranchez l'alimentation : la LED 13 clignote vite, signe que SD.begin a échoué — votre programme de secours fait son travail.
Erreurs fréquentes
- Carte formatée en exFAT ou NTFS : seul FAT32 est garanti ; reformatez.
- Oublier
log.closeavant l'ouverture suivante : les lignes suivantes sont perdues ou corrompent le fichier. - Attendre des débits de carte UHS-II : le bus est un 4 bits classique — déjà très supérieur au SPI du Teensy 3.2, mais sans miracle.
- Confondre avec le stockage flash interne : les 8 Mo de QSPI peuvent aussi recevoir des fichiers via LittleFS, mais la carte SD reste la solution de grande capacité amovible.
- Négliger le timing des écritures EEPROM : si vous complétez ce logger avec
EEPROM.update, sachez que chaque écriture fait pause l'exécution depuis le flash (documenté par PJRC).
Autres tutoriels pour cette carte
- 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
Exemples de code pour cette carte
clignotante.inoArduinotouche-capacitive.inoArduinoanalogique-12-bits.inoArduinomidi-piano.inoArduinopwm-respiration.inoArduinoservo-angle.inoArduino