🛠 Deux ports USB simultanés : périphérique 480 Mbit/s ET hôte USB sur les pastilles

Teensy 4.0 · avance · Schéma : IMG-teensy-40-avance-7-teensy40-double-usb-host-esclave.svg — Teensy 4.0 retourné montrant les pastilles inférieures : deux pastilles du port USB host (3,048 × 1,016 mm), pads de coupure VIN/VUSB, connecteur SD 4 bits ; à gauche le câble micro-USB vers le PC (device), à droite un clavier USB branché sur le port host via un adaptateur avec interrupteur de limitation de courant.

Objectifs

Le Teensy 4.0 possède DEUX ports USB à 480 Mbit/s totalement indépendants : le port micro-USB classique en mode périphérique (Serial, MIDI/MIDIx4/MIDIx16, Audio, Keyboard, Mouse, Joystick, Touchscreen, MTP, Flight Sim, RawHID…) et un port hôte sur deux pastilles SMD au dos de la carte, piloté par la bibliothèque USBHost_t36. Vous allez lire un clavier USB côté hôte tout en parlant au Moniteur série côté périphérique — et apprendre les deux pièges électriques de ce port.

Matériel

Code complet

// Hôte USB (pastilles du bas) + périphérique série (micro-USB) en parallèle.
#include <USBHost_t36.h>

USBHost myusb;
USBHIDParser hid1(myusb);
KeyboardController clavier(myusb);

void setup {
  Serial.begin(9600);      // port DEVICE : le Moniteur passe par là
  myusb.begin;           // port HOST : les pastilles du dessous
  Serial.println(F("branchez un clavier USB"));
}

void loop {
  myusb.Task;            // machine à états de l'hôte — À NE PAS OUBLIER
  if (clavier) {
    // getKeys renvoie les touches actives ; voir les exemples
    // Keyboard de USBHost_t36 pour le mapping complet.
    static uint8_t touches[6];
    if (memcmp(touches, clavier.getKeys, 6)) {
      memcpy(touches, clavier.getKeys, 6);
      Serial.print(F("touches actives : "));
      for (int i = 0; i < 6; i++)
        Serial.print(touches[i], HEX), Serial.print(' ');
      Serial.println;
    }
  }
}

Vérification attendue

Le Moniteur série (via le micro-USB) affiche les codes touches pendant que vous tapez sur le clavier branché sur les pastilles : les deux mondes USB coexistent sur la même carte. Notez que le port hôte du 4.0 est data-only : aucun circuit de gestion de courant embarqué (contrairement au 4.1). Bonus workflow : le même port périphérique accepte CircuitPython — téléversez le .hex officiel (https://circuitpython.org/board/teensy40/) avec Teensy Loader et la carte monte comme disque USB ; PJRC avertit que CircuitPython ne couvre pas tout le matériel du 4.0.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels