TinyUSB
+ -

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无缝集成
  • 协议支持
    • 复合设备功能
    • 12+设备类协议实现
    • USB2.0 高速全速
  • 资源优化
    • 6KB Flash最小占用
    • 零动态内存分配
    • 2K RAM运行需求
  • 开发效率
    • 丰富的示例代码
    • 详尽的文档支持
    • 简法的API设计

TinyUSB分层架构

TinyUSB分层架构
195837407854

核心协议层实现了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 ,欢迎转载,转载请附上本文链接。

0 篇笔记 写笔记

TinyUSB介绍
TinyUSB是一款嵌入式USB协议栈,它的目的是为简化嵌入式USB设备的USB功能开发。TinyUSB作为一款开源跨平台USB协议栈,采用分层架构和模块化设计,实现了对USB Device、Host和On-The-Go (OTG) 三种模式的完整支持。它具有以下几个特点:跨平台兼容性统一硬......
TinyUsb的类设备驱动
USB复杂在于极其宠大的类设备,如HID,BOT,UAC,UVC等。tinyusb通过对不同的USB类实现相同的类回调函数实现其功能。这些抽像的回调函数由结构体usbd_class_driver_t中的函数指针实现。typedef struct { char const* name; vo......
tinyusb回调函数
TinyUSB 的回调函数采用“按名调用”机制:不需要注册,只需实现特定名称的函数,协议栈就会自动调用。这些回调主要分为两类:USB 核心描述符回调(定义设备结构)和各类设备功能回调(实现具体通信逻辑)。核心描述符回调 (必须实现)用于向主机报告 USB 设备的能力和结构,是枚举过程的必经环节。......
TinyUSB的设备端移植
以下是对该 MCU 移植 TinyUSB 所需回调函数的必要性及功能分析表格。代码中实现了 TinyUSB 设备控制驱动(DCD)层所需的接口,部分函数是必须实现的,部分为可选或内部辅助函数。一、TinyUSB DCD 标准对外接口(协议栈直接调用)函数实现要求核心作用dcd......
TinyUSB HID设备移植
TinyUSB的驱动函数如下:{ .name = DRIVER_NAME("HID"), .init = hidd_init, .deinit = hidd_deinit, .r......
关注公众号
  • HID人机交互
  • Linux&USB
  • TinyUSB
  • UAC音频
  • CDC
  • TYPE-C
  • USB规范
  • USB大容量存储
  • USB百科
  • USB周边
  • UVC摄像头
  • Windows系统USB
  • USB资源
  • XHCI 1.2b 规范
  • 音视频博客
  • 取消
    感谢您的支持,我会继续努力的!
    扫码支持
    扫码打赏,你说多少就多少

    打开支付宝扫一扫,即可进行扫码打赏哦

    您的支持,是我们前进的动力!