一个开源跨平台嵌入式USB设备协议:TinyUSB

news2024/11/27 14:31:23

概述

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

源码链接:GitHub - chjun8/tinyusb: An open source cross-platform USB stack for embedded system

.
├── docs            # Documentation
├── examples        # Examples with make and cmake build system
├── 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            # Tests: unit test, fuzzing, hardware test
└── tools           # Files used internally

入门

有关使用 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。以下操作系统已经得到开箱即用的支持。

  • 无操作系统
  • 自由实时操作系统
  • RT-Thread:回购协议
  • Mynewt由于 newt 包构建系统,Mynewt 示例最好位于其自己的存储库中

支持的CPU

支持以下 CPU,请查看支持的设备以获取每个 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

---+-------------------------------------------------------- ----------+

图片| 24、32mm、32mk、32mx、32mz、dsPIC33

心灵感应毫米32
北欧半导体nRF52833、nRF52840、nRF5340
新唐NUC 120, 121, 125, 126, 505

恩智浦

iMXRT | RT10xx、RT11xx

------+---------------------------------------- ----------+

动力学|吉隆坡,K32L2

------+---------------------------------------- ----------+

液化石油气 | 11u、13、15、17、18、40、43、51u、54、55

------+---------------------------------------- ----------+

MCX | A15、N9

树莓派RP2040
瑞萨接收| 63N、65N、72N
RA | 4M1、4M3、6M1、6M5
西拉布斯EFM32GG12
索尼CXD56
意法半导体STM32F0、F1、F2、F3、F4、F7、H7、G0、G4、L0、L1、L4、L4+ U5、WB
TIMSP430、MSP432E4、TM4C123
价USB埃普特里
世界卫生大会CH32F20x、CH32V307、

执照

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

文档

  • 信息
    • 用途
    • 变更日志
    • 贡献者
  • 参考
    • 支持的设备
    • 入门
    • 依赖关系
    • 并发性
  • 贡献
    • 行为守则
    • 结构
    • 移植

 移植教程,后续补上,蟹蟹参阅!!!

STM32 移植参考文章:

1、TinyUSB 基本使用 – TaterLi 个人博客

2、【RT-Thread】 TinyUSB挂载成U盘和文件系统,基于STM32F405RG-CSDN博客

ESP32 移植参考文章:4. ESP32S3 使用USB 加载SD_SDIO 当作 U盘使用_esp32的usb使用-CSDN博客 

MM32 移植参考文章:基于 TinyUSB 协议栈实现 CMSIS-DAP_开源usb协议栈-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1590562.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【U8+】打开固定资产卡片提示:运行时错误‘91’,未设置对象变量或with block变量。

【问题描述】 用友U8软件,固定资产模中打开某张卡片后, 提示:运行时错误‘91’,未设置对象变量或with block变量。 Ps:但不是所有卡片打开的时候都会提示,有的正常。 【解决方法】 跟踪数据库后&#xff…

基于单片机的智能模拟路灯控制系统

摘 要: 随着电力资源的紧缺,以及光污染和雾霾天气的影响,更智能化的路灯设计对人们的日常生活意义重大。本文的智能路灯控制系统是基于单片机的控制器,通过介绍该系统相应的硬件设计和软件设计,实现定时开关和依具体情况是否需要来开关路灯和进行亮度调节,并且具有自检功能…

Ubuntu 20.04 设置开启 root 远程登录连接

Ubuntu默认不设置 root 帐户和密码 Ubuntu默认不设置 root 帐户和密码 Ubuntu默认不设置 root 帐户和密码 如有需要,可在设置中开启允许 root 用户登录。具体操作步骤如下: 操作步骤 1、首先使用普通用户登录 2、设置root密码 macw:~$ sudo passwd …

Redis入门到通关之Redis通用命令

文章目录 Redis数据结构介绍Redis 通用命令命令演示KEYSDELEXISTSEXPIRE RedisTemplate 中的通用命令 Redis数据结构介绍 Redis 是一个key-value的数据库,key一般是String类型,不过value的类型多种多样: 贴心小建议:命令不要死…

Python编写一个抽奖小程序,新手入门案例,简单易上手!

“ 本篇文章将以简明易懂的方式引导小白通过Python编写一个简单的抽奖小程序,无需太多的编程经验。通过本文,将学习如何使用Python内置的随机模块实现随机抽奖,以及如何利用列表等基本数据结构来管理和操作参与抽奖的人员名单。无论你是Pytho…

时间序列分析 #ARMA模型的识别与参数估计 #R语言

掌握ARMA模型的识别和参数估计。 原始数据在文末!!! 练习1、 根据某1915-2004年澳大利亚每年与枪支有关的凶杀案死亡率(每10万人)数据(题目1数据.txt),求: 第1小题&…

计算机视觉——DiffYOLO 改进YOLO与扩散模型的抗噪声目标检测

概述 物体检测技术在图像处理和计算机视觉中发挥着重要作用。其中,YOLO 系列等型号因其高性能和高效率而备受关注。然而,在现实生活中,并非所有数据都是高质量的。在低质量数据集中,更难准确检测物体。为了解决这个问题&#xff…

Python实现PDF页面的删除与添加

在处理PDF文档的过程中,我们时常会需要对PDF文档中的页面进行编辑操作的情况,如插入和删除页面。通过添加和删除PDF页面,我们可以增加内容或对不需要的内容进行删除,使文档内容更符合需求。而通过Python实现PDF文档中的插入和删除…

SSL数字证书

SSL数字证书产品提供商主要来自于国外,尤其是美国,原理和使用操作系统一样,区别在于SSL数字证书目前无法替代性,要想达到兼容性99%的机构目前全球才3-4家,目前国内的主流网站主要使用的是国际证书,除了考虑…

深度学习在三维点云处理与三维重建中的应用探索

目录 点云数据处理 数据清洗 数据降噪和简化 数据配准 特征提取 数据增强 数据组织 性能考量 PointNet PointNet 算法问题 改进方法 三维重建 重建算法 架构模块 流程步骤 标记说明 优点和挑战 点云数据处理 数据清洗 去噪:点云数据通常包含噪声…

使用clickhouse-backup备份和恢复数据

作者:俊达 介绍 clickhouse-backup是altinity提供的一个clickhouse数据库备份和恢复的工具,开源项目地址:https://github.com/Altinity/clickhouse-backup 功能上能满足日常数据库备份恢复的需求: 支持单表/全库备份支持备份上…

AI电影创作,AI影视创作全套完整课程

课程下载:https://download.csdn.net/download/m0_66047725/89064240 更多资源下载:关注我。 课程内容: 【试听课】AI发展的现状及对影视行业未来的影响.mp4 0【AI影视创作】流程与基本逻辑_1.mp4 1【AI基础课程】ChatGPT 注册安装流程.…

使用DSP28335在CCS中生成正弦波

DSP芯片支持数学库,那如何通过DSP芯片生成一个正弦波呢?通过几天研究,现在将我的方法分享一下,如有错误,希望大家及时指出,共同进步。 sin函数的调用 首先看下一sin函数 的使用。 //头文件的定义 #includ…

VSCode中 task.json 和 launch.json 的作用和参数解释以及配置教程

前言 由于 VS Code 并不是一个传统意义上的 IDE,所以初学者可能在使用过程中会有很多的疑惑,其中比较常见的一个问题就是 tasks.json和 launch.json两个文件分别有什么作用以及如何配置 tasks.json VSCode 官网提供的 tasks.json 配置教程 使用不同的…

Linux 系统解压缩文件

Linux系统,可以使用unzip命令来解压zip文件 方法如下 1. 打开终端,在命令行中输入以下命令来安装unzip: sudo apt-get install unzip 1 2. 假设你想要将zip文件解压缩到名为"target_dir"的目录中,在终端中切换到目标路…

【线段树】【区间更新】2916. 子数组不同元素数目的平方和 II

算法可以发掘本质,如: 一,若干师傅和徒弟互有好感,有好感的师徒可以结对学习。师傅和徒弟都只能参加一个对子。如何让对子最多。 二,有无限多1X2和2X1的骨牌,某个棋盘若干格子坏了,如何在没有坏…

基于ssm微信小程序的医院挂号预约系统

采用技术 基于ssm微信小程序的医院挂号预约系统的设计与实现~ 开发语言:Java 数据库:MySQL 技术:SpringMVCMyBatis 工具:IDEA/Ecilpse、Navicat、Maven 页面展示效果 用户管理 医院管理 医生管理 公告资讯管理 科室信息管…

目前深圳嵌入式单片机就业环境如何?

深圳作为中国的科技创新中心之一,嵌入式行业的就业环境相对较好。我这里有一套嵌入式入门教程,不仅包含了详细的视频讲解,项目实战。如果你渴望学习嵌入式,不妨点个关注,给个评论222,私信22,我在…

DDoS攻击类型与应对措施详解

攻击与防御简介 SYN Flood攻击 原理: SYN Flood攻击利用的是TCP协议的三次握手机制。在正常的TCP连接建立过程中,客户端发送一个SYN(同步序列编号)报文给服务器,服务器回应一个SYN-ACK(同步和确认&#xf…

创新科技:FlexLua助力LoRa无线一氧化碳传感器轻松开发

随着智能科技的不断进步,无线传感器技术在环境监测领域的应用越来越广泛。其中,LoRa无线一氧化碳传感器以其高效的通信原理和精准的传感器原理,在各种应用场景中大显身手。而借助FlexLua低代码技术,开发这类传感器变得更加轻松快捷…