Repolode
hathach

hathach/tinyusb

Stack USB Host y Device de código abierto y multiplataforma para sistemas embebidos, diseñado para ofrecer seguridad de memoria e hilos en más de 50 familias de MCU.

Estrellas
7,262
Forks
1,580
Issues abiertos
417
Último commit
hace 52 minutos

¿Qué es?

TinyUSB es un stack USB escrito en C para microcontroladores que admite los roles Device y Host. Está dirigido a desarrolladores de sistemas embebidos que necesitan conectividad USB en chips pequeños sin un sistema operativo completo. El stack evita la asignación dinámica y solo usa buffers estáticos; además, aplaza todo el trabajo de las interrupciones a funciones de tarea que no se ejecutan en una ISR, para poder funcionar de forma segura junto con un RTOS.

En el lado Device, TinyUSB implementa una amplia variedad de clases, como CDC serial, HID (teclado, mouse y gamepad), almacenamiento masivo con varios LUN, MIDI, audio (UAC1/UAC2), impresora, redes (RNDIS, ECM, NCM) y WebUSB. El lado Host admite CDC-ACM, varias familias de chips USB a serial, HID, MSC, MIDI y hubs. Los desarrolladores también pueden escribir controladores de clase personalizados mediante hooks de callback, sin modificar el stack.

El repositorio incluye ejemplos que usan make y CMake, una capa de soporte para placas y una tabla que indica qué familias de MCU ofrecen capacidades Device, Host y de alta velocidad. Funciona sin sistema operativo, con FreeRTOS, RT-Thread y Mynewt.

Funciones clave

  • 01Stacks Device y Host en una misma base de código, con configuración dinámica de descriptores.
  • 02Asignación estática de memoria, sin asignación dinámica en tiempo de ejecución.
  • 03Las interrupciones se aplazan al contexto de tarea para garantizar la seguridad de hilos con un RTOS.
  • 04Admite muchas clases de dispositivo, como CDC, HID, MSC, MIDI, audio y redes.
  • 05Compatibilidad Host con CDC-ACM, HID, MSC, MIDI y hubs en cascada.
  • 06Portable entre más de 50 familias de MCU; funciona sin sistema operativo, con FreeRTOS o con RT-Thread.

Casos de uso

  • Agregar una consola serie USB o un puerto CDC a un producto con microcontrolador.
  • Crear un teclado, mouse o gamepad USB con un MCU pequeño.
  • Exponer una tarjeta SD o un almacenamiento flash a una PC como unidad USB de almacenamiento masivo.
  • Crear un controlador MIDI USB o un dispositivo de audio con hardware embebido.

Inicio rápido

  1. 1

    Obtén el código fuente y lee la guía Getting Started

  2. 2

    Compila el ejemplo cdc_msc del directorio examples

  3. 3

    Añade TinyUSB a tu proyecto siguiendo la guía Getting Started

Antes de usarlo

  • Está pensado para MCU integrados, por lo que no es una biblioteca USB de propósito general para sistemas de escritorio o móviles.
  • La compatibilidad varía según la familia de MCU; consulta la tabla Supported CPUs para comprobar la disponibilidad del modo host y de alta velocidad.
  • La pila Power Delivery está en una fase muy inicial y solo sirve para hacer pruebas en STM32 G4.

En colecciones

Temas

#usb#embedded#microcontroller#usb-device#usb-host#rtos#firmware#midi#msc#tinyusb

Preguntas frecuentes

¿Qué es tinyusb?
Stack USB Host y Device de código abierto y multiplataforma para sistemas embebidos, diseñado para ofrecer seguridad de memoria e hilos en más de 50 familias de MCU. TinyUSB es un stack USB escrito en C para microcontroladores que admite los roles Device y Host. Está dirigido a desarrolladores de sistemas embebidos que necesitan conectividad USB en chips pequeños sin un sistema operativo completo. El stack evita la asignación dinámica y solo usa buffers estáticos; además, aplaza todo el trabajo de las interrupciones a funciones de tarea que no se ejecutan en una ISR, para poder funcionar de forma segura junto con un RTOS.
¿tinyusb es gratuito? ¿Qué licencia tiene?
tinyusb es open source bajo la licencia MIT. Revisa los términos de la licencia antes de usarlo en productos comerciales.
¿tinyusb sigue mantenido?
Mantenimiento activo. El último commit de tinyusb fue el 7 nov 2026.
¿Para qué puedo usar tinyusb?
Agregar una consola serie USB o un puerto CDC a un producto con microcontrolador. Crear un teclado, mouse o gamepad USB con un MCU pequeño. Exponer una tarjeta SD o un almacenamiento flash a una PC como unidad USB de almacenamiento masivo. Crear un controlador MIDI USB o un dispositivo de audio con hardware embebido.
¿Cómo se instala tinyusb?
Obtén el código fuente y lee la guía Getting Started Compila el ejemplo cdc_msc del directorio examples Añade TinyUSB a tu proyecto siguiendo la guía Getting Started
¿Dónde consigo tinyusb?
El código fuente y las instrucciones de instalación están en GitHub: https://github.com/hathach/tinyusb

Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.

Proyectos relacionados