TinyUSB介绍
2026-06-14
本文链接为:http://www.usbzh.com/article/detail-1714.html ,欢迎转载,转载请附上本文链接。
TinyUSB是一款嵌入式USB协议栈,它的目的是为简化嵌入式USB设备的USB功能开发。
TinyUSB作为一款开源跨平台USB协议栈,采用分层架构和模块化设计,实现了对USB Device、Host和On-The-Go (OTG) 三种模式的完整支持。它具有以下几个特点:
- 跨平台兼容性
- 统一硬件抽像层
- 支持30+MCU系统,其它的MCU自己可以移植
- 主流的RTOS无缝集成
- 协议支持
- 资源优化
- 6KB Flash最小占用
- 零动态内存分配
- 2K RAM运行需求
- 开发效率
- 丰富的示例代码
- 详尽的文档支持
- 简法的API设计
TinyUSB分层架构


核心协议层实现了USB 2.0规范的核心功能,包括设备枚举、端点管理和事务处理。硬件抽象层则为不同MCU的USB控制器提供统一接口,目前已支持Synopsys DesignWare、FSL Kinetis、STMicroelectronics STM32等主流USB控制器架构。
模块化配置系统
TinyUSB的模块化设计允许开发者根据项目需求精确裁剪功能,通过配置头文件实现按需编译。
核心配置选项包括:
// 设备模式配置示例
#define CFG_TUD_ENABLED 1
#define CFG_TUD_ENDPOINT0_SIZE 64
#define CFG_TUD_CDC 1 // 启用CDC类
#define CFG_TUD_MSC 1 // 启用MSC类
#define CFG_TUD_HID 1 // 启用HID类
#define CFG_TUD_AUDIO 0 // 禁用音频类
// ...其他配置
类设备实现
| 设备类 | 应用场景 | 主要功能 |
|---|---|---|
| CDC (通信设备类) | 虚拟串口、Modem | 数据收发、串口控制 |
| HID (人机接口设备) | 键盘、鼠标、游戏手柄 | 报告描述符、输入输出报告 |
| MSC (海量存储设备) | U盘、SD卡读卡器 | SCSI命令、块设备访问 |
| Audio (音频设备类) | 麦克风、扬声器 | 音频流传输、音量控制 |
| Video (视频设备类) | 摄像头、视频采集 | 视频流传输、格式控制 |
| MIDI (音乐设备接口) | 音乐控制器、合成器 | MIDI消息传输、实时演奏 |
| DFU (设备固件升级) | 固件更新 | 引导加载、固件传输 |
| WebUSB | Web应用通信 | 自定义协议、网页交互 |
代码库
git clone https://gitcode.com/gh_mirrors/ti/tinyusb
cd tinyusb
TinyUSB提供了丰富的示例项目,位于examples/device目录下。我们将以cdc_msc示例为基础,快速了解TinyUSB的使用方法。
本文链接为:http://www.usbzh.com/article/detail-1714.html ,欢迎转载,转载请附上本文链接。
TinyUSB





