🛠 Premiers pas sur le Teensy 4.0 : Teensyduino, Loader et premier Blink
Objectifs
Apprivoiser la carte la plus rapide de sa catégorie : le Teensy 4.0 embarque un NXP MIMXRT1062DVL6 (Cortex-M7 à 600 MHz, officiellement overclockable à 912 MHz) dans le tout petit format 1,4 × 0,7 pouce des Teensy 3.x. Ce premier tutoriel pose les fondations : installer l'environnement Teensyduino, téléverser un Blink, comprendre l'écosystème Teensy Loader + bouton Program (la carte n'a PAS de reset matériel !), et mesurer la vitesse réelle des broches avec le compteur de cycles.
Matériel
- 1 Teensy 4.0 (fabrication SparkFun depuis mars 2025, vendu avec ou sans broches soudées) + câble micro-USB de DONNÉES
- PC Windows / Mac / Linux avec l'Arduino IDE
- Aucun câblage : la LED orange de la broche 13 suffit
Installation et téléversement
- Installez l'add-on Teensy via https://www.pjrc.com/teensy/td_download.html (les alternatives officielles : PlatformIO, Visual Micro, et le Makefile en ligne de commande fourni avec Teensyduino).
- Dans l'IDE : Tools > Board > Teensy > Teensy 4.0, puis Tools > USB Type > Serial (la liste est longue : MIDI, Keyboard, Mouse, Audio, MTP, RawHID…).
- Cliquez sur Upload : Teensy Loader se lance automatiquement. S'il ne détecte pas la carte, appuyez sur le bouton Program de la carte — ce n'est PAS un bouton reset, il demande le mode programmation par USB.
- La LED rouge indique l'état du bootloader : faible = en attente, vive = écriture flash en cours.
Point d'architecture capital : le bootloader vit dans une puce physiquement séparée (une GD32E230F8 sur les cartes après juin 2022). Le flash principal est 100 % à vous et le téléversement ne peut pas le détruire. En revanche, il n'existe aucune broche de reset matérielle : on ne réinitialise que par watchdog logiciel ou via le registre SCB_AIRCR.
Code complet
// Blink + mesure réelle de la vitesse GPIO via le compteur de cycles
// 32 bits ARM_DWT_CYCCNT, incrémenté à la fréquence CPU (600 MHz).
void setup {
Serial.begin(9600); // série USB : le baud est ignoré
pinMode(13, OUTPUT); // LED orange (JAMAIS en INPUT_PULLUP :
// la LED polarise la broche)
}
void loop {
uint32_t start = ARM_DWT_CYCCNT; // instantané du compteur
for (int i = 0; i < 100000; i++) {
digitalToggle(13); // écriture broche la plus rapide
}
uint32_t cycles = ARM_DWT_CYCCNT - start;
Serial.printf("moyenne %u cycles par bascule\n", cycles / 100000);
delay(1000);
}
Vérification attendue
La LED orange clignote (visuellement presque éteinte : la boucle bascule la broche des millions de fois par seconde, digitalToggle se compile en une seule écriture de bit). Le Moniteur série affiche le nombre de cycles par bascule — à 600 MHz, une dizaine de cycles correspond à un signal de plusieurs dizaines de MHz sur la broche. C'est la démonstration immédiate de la puissance du M7 double-émission avec prédiction de branches et mémoire TCM.
Erreurs fréquentes
- Câble micro-USB de charge seule : le Moniteur et le Loader ne voient rien — testez avec un autre câble.
- Chercher un bouton reset : il n'y en a pas. Pour relancer le programme, débranchez/rebranchez l'USB, ou appuyez sur Program pour reprogrammer.
- Oublier de choisir USB Type : par défaut Serial fonctionne, mais si vous téléversez un sketch MIDI ou Keyboard sans changer le type, rien n'apparaît côté PC.
- Utiliser la broche 13 en entrée avec INPUT_PULLUP : la LED de la broche fausse la lecture — le store page PJRC le signale explicitement.
- Croire la carte morte si Teensy Loader reste « en attente » : appuyez une fois sur Program, la LED rouge doit s'allumer faiblement.
- Attention à l'alimentation : la carte se nourrit de 5 V sur VUSB/VIN ; ne jamais alimenter par la broche 3,3 V (sortie uniquement, régulateur embarqué, 250 mA max en externe).
Autres tutoriels pour cette carte
- GPIO et PWM sous 3,3 V : les règles d'or du Teensy 4.0
- Entrées analogiques et capteur de température interne : le ADC et ses limites
- Piloter un ruban WS2812 sans bloquer le CPU : WS2812Serial et OctoWS2811
- Contrôleur MIDI USB : un potard qui joue du piano (MIDIx4/MIDIx16)
- Comprendre la mémoire : 2 Mo de flash, 1 Mo de RAM TCM/DMA, EEPROM émulée et LittleFS
- Deux ports USB simultanés : périphérique 480 Mbit/s ET hôte USB sur les pastilles
Exemples de code pour cette carte
clignotante.inoArduinotouche-capacitive.inoArduinoanalogique-12-bits.inoArduinomidi-piano.inoArduinopwm-respiration.inoArduinoservo-angle.inoArduino