Repolode
hathach

hathach/tinyusb

Pilha USB open source multiplataforma de Host e Device para sistemas embarcados, projetada para oferecer segurança de memória e de threads em mais de 50 famílias de MCU.

Estrelas
7,262
Forks
1,577
Issues abertas
417
Último commit
há 13 horas

O que é?

TinyUSB é uma pilha USB escrita em C para microcontroladores, com suporte aos modos Device e Host. Ela atende desenvolvedores de sistemas embarcados que precisam de conectividade USB em chips pequenos, sem um sistema operacional completo. A pilha não usa alocação dinâmica: trabalha apenas com buffers estáticos e adia todo o processamento de interrupções para funções de tarefa que não são ISR, podendo assim operar com segurança junto a um RTOS.

No lado Device, TinyUSB implementa várias classes, incluindo CDC serial, HID (teclado, mouse e gamepad), armazenamento em massa com várias LUNs, MIDI, áudio (UAC1/UAC2), impressora, redes (RNDIS, ECM, NCM) e WebUSB. O lado Host oferece suporte a CDC-ACM, várias famílias de chips USB para serial, HID, MSC, MIDI e hubs. Também é possível criar drivers de classe personalizados usando hooks de callback, sem modificar a pilha.

O repositório inclui exemplos compilados com make e CMake, uma camada de suporte a placas e uma tabela que lista quais famílias de MCU oferecem suporte a Device, Host e alta velocidade. Funciona com bare metal, FreeRTOS, RT-Thread e Mynewt.

Recursos principais

  • 01Pilhas Device e Host em uma única base de código, com configuração dinâmica de descritores.
  • 02Alocação estática de memória, sem alocação dinâmica em tempo de execução.
  • 03Interrupções adiadas para o contexto de tarefa, garantindo segurança de threads com um RTOS.
  • 04Suporte a várias classes Device, incluindo CDC, HID, MSC, MIDI, áudio e redes.
  • 05Suporte Host a CDC-ACM, HID, MSC, MIDI e hubs de vários níveis.
  • 06Portável entre mais de 50 famílias de MCU e compatível com bare metal, FreeRTOS e RT-Thread.

Casos de uso

  • Adicionar um console serial USB ou uma porta CDC a um produto com microcontrolador.
  • Criar um teclado, mouse ou gamepad USB com um MCU pequeno.
  • Disponibilizar um cartão SD ou armazenamento flash para um PC como unidade USB de armazenamento em massa.
  • Criar um controlador MIDI ou dispositivo de áudio USB em hardware embarcado.

Início rápido

  1. 1

    Obtenha o código-fonte e leia o guia Getting Started

  2. 2

    Compile o exemplo cdc_msc do diretório examples

  3. 3

    Adicione o TinyUSB ao seu projeto seguindo o guia Getting Started

Antes de usar

  • É voltado para MCUs embarcados, portanto não é uma biblioteca USB de uso geral para sistemas desktop ou móveis.
  • O suporte varia conforme a família de MCU; consulte a tabela Supported CPUs para verificar a disponibilidade de host e de alta velocidade.
  • A stack Power Delivery está em um estágio muito inicial e serve apenas para testes no STM32 G4.

Em coleções

Tópicos

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

Perguntas frequentes

O que é tinyusb?
Pilha USB open source multiplataforma de Host e Device para sistemas embarcados, projetada para oferecer segurança de memória e de threads em mais de 50 famílias de MCU. TinyUSB é uma pilha USB escrita em C para microcontroladores, com suporte aos modos Device e Host. Ela atende desenvolvedores de sistemas embarcados que precisam de conectividade USB em chips pequenos, sem um sistema operacional completo. A pilha não usa alocação dinâmica: trabalha apenas com buffers estáticos e adia todo o processamento de interrupções para funções de tarefa que não são ISR, podendo assim operar com segurança junto a um RTOS.
tinyusb é gratuito? Qual é a licença?
tinyusb é open source sob a licença MIT. Confira os termos da licença antes de usá-lo em produtos comerciais.
tinyusb ainda é mantido?
Manutenção ativa. O último commit de tinyusb foi em 6 de nov. de 2026.
Para que posso usar tinyusb?
Adicionar um console serial USB ou uma porta CDC a um produto com microcontrolador. Criar um teclado, mouse ou gamepad USB com um MCU pequeno. Disponibilizar um cartão SD ou armazenamento flash para um PC como unidade USB de armazenamento em massa. Criar um controlador MIDI ou dispositivo de áudio USB em hardware embarcado.
Como instalar tinyusb?
Obtenha o código-fonte e leia o guia Getting Started Compile o exemplo cdc_msc do diretório examples Adicione o TinyUSB ao seu projeto seguindo o guia Getting Started
Onde consigo tinyusb?
O código-fonte e as instruções de instalação estão no GitHub: https://github.com/hathach/tinyusb

Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.

Projetos relacionados