🛠 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.

Objetivos

El Teensy 4.0 posee DOS puertos USB de 480 Mbit/s totalmente independientes: el puerto micro-USB clásico en modo periférico (Serial, MIDI/MIDIx4/MIDIx16, Audio, Keyboard, Mouse, Joystick, Touchscreen, MTP, Flight Sim, RawHID…) y un puerto host en dos pads SMD en la parte trasera de la placa, controlado por la librería USBHost_t36. Vas a leer un teclado USB en el lado host mientras te comunicas con el Monitor serie en el lado periférico — y aprenderás las dos trampas eléctricas de este puerto.

Material

Código completo

// 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;
    }
  }
}

Verificación esperada

El Monitor serie (a través del micro-USB) muestra los códigos de tecla mientras tecleas en el teclado conectado a los pads: los dos mundos USB coexisten en la misma placa. Ten en cuenta que el puerto host del 4.0 es solo de datos: no tiene circuito de gestión de corriente integrado (a diferencia del 4.1). Bonus de flujo de trabajo: el mismo puerto periférico acepta CircuitPython — carga el .hex oficial (https://circuitpython.org/board/teensy40/) con Teensy Loader y la placa se monta como disco USB; PJRC advierte que CircuitPython no cubre todo el hardware del 4.0.

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales