TinyUSB 是用于嵌入式系统的开源跨平台 USB 主机/设备堆栈,旨在实现无动态分配的内存安全和延迟所有中断事件的线程安全,然后在非ISR任务功能中进行处理。
.
├── docs # Documentation
├── examples # Sample with Makefile and Segger Embedded build support
├── hw
│ ├── bsp # Supported boards source files
│ └── mcu # Low level mcu core & peripheral drivers
├── lib # Sources from 3rd party such as freeRTOS, fatfs ...
├── src # All sources files for TinyUSB stack itself.
├── test # Unit tests for the stack
└── tools # Files used internally
支持的 MCU
支持以下MCU:
- Espressif: ESP32-S2
- Dialog: DA1469x
- MicroChip: SAMD11, SAMD21, SAMD51, SAME5x, SAMG55
- NordicSemi: nRF52833, nRF52840
- Nuvoton: NUC120, NUC121/NUC125, NUC126, NUC505
-
NXP:
- iMX RT Series: RT1011, RT1015, RT1021, RT1052, RT1062, RT1064
- Kinetis: KL25
- LPC Series: 11Uxx, 13xx, 175x_6x, 177x_8x, 18xx, 40xx, 43xx, 51Uxx, 54xxx, 55xx
- Raspberry Pi: RP2040
- Sony: CXD56
- ST: STM32 series: L0, F0, F1, F2, F3, F4, F7, H7
- TI: MSP430
- ValentyUSB eptri
设备堆栈
通过动态更改 USB 描述符支持多种设备配置。低功耗功能,例如挂起、恢复和远程唤醒。支持以下设备:
- USB Audio Class 2.0(UAC2)仍在开发中
- 蓝牙主机控制器接口(BTH HCI)
- CDC
- 设备固件更新(DFU):仅 Runtinme
- 人机界面设备(HID):通用输入和输出设备,键盘、鼠标和游戏手柄等...
- 大容量存储类(MSC):具有多个LUN
- MIDI
- 带有 RNDIS,CDC-ECM 的网络
- USB 测试和测量类别(USBTMC)
- 具有供应商特定类的WebUSB
主机堆栈
主机堆栈正在重构,并且未经测试。
- 人机界面设备(HID):键盘,鼠标,通用
- 大容量存储类(MSC)
- 集线器目前仅支持1级集线器