Skip to content

用于嵌入式系统的开源跨平台 USB 堆栈

License

Notifications You must be signed in to change notification settings

yuanzhongqiao/tinyusb

 
 

Repository files navigation

构建状态 文件状态 模糊测试状态 执照

赞助商

TinyUSB 由 Adafruit 资助。从他们那里购买产品有助于支持该项目。

TinyUSB项目

微型USB

TinyUSB 是一个用于嵌入式系统的开源跨平台 USB 主机/设备堆栈,设计为内存安全,无需动态分配,线程安全,所有中断事件都被推迟,然后在非 ISR 任务函数中处理。查看在线文档以获取更多详细信息。

叠起
。
├── docs # 文档
├── Examples # 使用 make 和 cmake 构建系统的示例
├── 硬件
│ ├── bsp # 支持的板子源文件
│ └── MCU # 低级 MCU 核心和外设驱动
├── lib # 来自第三方的源,例如 freeRTOS、fatfs ...
├── src # TinyUSB 堆栈本身的所有源文件。
├── test # 测试:单元测试、模糊测试、硬件测试
└── tools # 内部使用的文件

入门

有关使用 TinyUSB 及其实现方式的信息,请参阅在线文档。

我们使用GitHub Discussions作为我们的论坛。这是向社区提出问题和建议或讨论基于 TinyUSB 的项目的好地方。

对于错误和功能请求,请提出问题并遵循那里的模板。

查看入门指南,将 TinyUSB 添加到您的项目或构建示例。如果您是 TinyUSB 的新手,我们建议您从 cdc_msc 示例开始。

请参阅移植指南以添加对新 MCU 和板的支持。

设备堆栈

通过动态更改 USB 描述符、挂起、恢复和远程唤醒等低功耗功能来支持多种设备配置。支持以下设备类别:

  • 音频等级 2.0 (UAC2)
  • 蓝牙主机控制器接口 (BTH HCI)
  • 通信设备类 (CDC)
  • 设备固件更新 (DFU):DFU 模式 (WIP) 和运行时
  • 人机接口设备 (HID):通用(输入和输出)、键盘、鼠标、游戏手柄等...
  • 海量存储类 (MSC):具有多个 LUN
  • 乐器数字接口 (MIDI)
  • 与 RNDIS 网络、以太网控制模型 (ECM)、网络控制模型 (NCM)
  • 测试与测量类 (USBTMC)
  • 视频等级 1.5 (UVC):正在进行中
  • 具有通用输入和输出端点的供应商特定类支持。可与 MS OS 2.0 兼容描述符一起使用,无需 INF 文件即可加载 winUSB 驱动程序。
  • 具有供应商特定类的WebUSB

如果您有特殊要求,可以使用 usbd_app_driver_get_cb() 编写自己的类驱动程序,而无需修改堆栈。以下是 RPi 团队如何添加重置接口raspberrypi/pico-sdk#197

主机堆栈

  • 人机接口设备 (HID):键盘、鼠标、通用
  • 海量存储类 (MSC)
  • 通信设备类别:CDC-ACM
  • 通过 USB 的供应商串行:FTDI、CP210x
  • 具有多级支持的集线器

与设备堆栈类似,如果您有特殊要求,可以使用 usbh_app_driver_get_cb() 编写自己的类驱动程序,而无需修改堆栈。

TypeC PD 堆栈

  • 支持 USB Type-C 的供电 3.0 (PD3.0) (WIP)
  • 超早期阶段,仅用于测试目的
  • 仅支持STM32 G4

操作系统抽象层

TinyUSB 是完全线程安全的,它将所有中断服务请求 (ISR) 事件推送到中央队列,然后在非 ISR 上下文任务函数中对其进行处理。它还使用信号量/互斥体来访问共享资源,例如通信设备类 (CDC) FIFO。因此,堆栈需要使用操作系统的一些基本 API。以下操作系统已经得到开箱即用的支持。

支持的CPU

支持以下 CPU,请查看支持的设备以获取每个 CPU 的驱动程序和功能的完整列表。

制造商 家庭
全志 F1C100/F1C200
模拟 MAX3421E(USB主机扩展板)
布里格泰克 FT90x
博通 BCM2711、BCM2837
对话 DA1469x
乐鑫 ESP32 S2、S3
兆易创新 GD32VF103
英飞凌 XMC4500
微芯片 萨姆 D11、D21、D51、E5x、G55、L2x、E7x、S7x、V7x
PIC 24、32mm、32mk、32mx、32mz、dsPIC33
心灵感应 毫米32
北欧半导体 nRF52833、nRF52840、nRF5340
新唐 NUC 120, 121, 125, 126, 505
恩智浦 MXRT RT10xx、RT11xx
动力学 吉隆坡,K32L2
线性PC 11u、13、15、17、18、40、43、51u、54、55
MCX N9
树莓派 RP2040
瑞萨 接收 63N、65N、72N
  RA 4M1、4M3、6M1、6M5
西拉布斯 EFM32GG12
索尼 CXD56
意法半导体STM32 F0、F1、F2、F3、F4、F7、H7、G0、G4、L0、L1、L4、L4+ U5、WB
TI MSP430、MSP432E4、TM4C123
价USB 埃普特里
世界卫生大会 CH32F20x、CH32V307、

执照

文件夹中的所有 TinyUSB 源src均已获得 MIT 许可证的许可,完整许可证位于此处。但是,每个文件都可以单独许可,尤其是libhw/mcu文件夹中的文件。请确保您了解项目中使用的文件的所有许可条款。

文档

About

用于嵌入式系统的开源跨平台 USB 堆栈

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 95.2%
  • CMake 1.5%
  • Makefile 1.3%
  • Python 0.9%
  • Assembly 0.6%
  • C++ 0.5%