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

概述

        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.mzph.cn/news/812059.shtml

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

相关文章

Redis从入门到精通(十五)Redis分布式缓存(三)Redis分片集群的搭建和原理分析

文章目录 前言5.4 分片集群5.4.1 搭建分片集群5.4.2 散列插槽5.4.3 集群伸缩5.4.3.1 需求分析5.4.3.2 创建新的Redis实例5.4.3.3 添加新节点到Redis集群5.4.3.4 转移插槽 5.4.4 故障转移5.4.4.1 自动故障转移5.4.4.2 手动故障转移 5.4.5 RedisTemplate 5.5 小结 前言 Redis分布…

kali工具----枚举工具

一、枚举工具 枚举是一类程序,它允许用户从一个网络中收集某一类的所有相关信息。本节将介绍DNS枚举和SNMP枚举技术。DNS枚举可以收集本地所有DNS服务和相关条目。DNS枚举可以帮助用户收集目标组织的关键信息,如用户名、计算机名和IP地址等,…

【Qt】界面优化

目录 一、QSS 1.1 基本语法 1.2 QSS设置方法 1.2.1 指定控件样式设置 1.2.2 全局样式设置 1.2.3 从文件加载样式表 1.2.4 使用Qt Designer编辑样式 1.3 选择器 1.3.1 介绍 1.3.2 子控件选择器 1.3.3 伪类选择器 1.4 样式属性(盒模型) 1.5 代码示例(登录界面) 二、…

OSCP靶场--Banzai

OSCP靶场–Banzai 考点(ftp爆破 webshell上传web1访问403web2可以访问webshell反弹mysql udf提权) 1.nmap扫描 ## nmap扫描一定要使用 -p- 否则容易扫不全端口 ┌──(root㉿kali)-[~/Desktop] └─# nmap -sV -sC 192.168.158.56 -Pn -p- --min-rate 2500Starting Nmap 7.…

机器学习前导——PyCharm PyTorch Python3 机器学习

机器学习前导——PyCharm & pytorch & Python3 & 机器学习 文章目录 前言PyCharmPyTorchPython3机器学习联系 前言 这学期选了《机器学习》,第一次接触,对一些专有名词很陌生。 PyCharm PyCharm是一款由JetBrains开发的软件&#xff0c…

STM32 串口接收定长,不定长数据

本文为大家介绍如何使用 串口 接收定长 和 不定长 的数据。 文章目录 前言一、串口接收定长数据1. 函数介绍2.代码实现 二、串口接收不定长数据1.函数介绍2. 代码实现 三,两者回调函数的区别比较四,空闲中断的介绍总结 前言 一、串口接收定长数据 1. 函…

SpringBoot3 + Vue3 + Uniapp + uView + Elenment 实现动态二级分类以及二级分类的管理

SpringBoot3 Vue3 Uniapp uView Elenment 实现动态二级分类以及二级分类的管理 1. 效果展示1.1 前端显示效果1.2 后台管理一级分类1.3 后台管理二级分类 2. 后端代码2.1 GoodsCategoryController.java2.2.1 GoodsCategoryMapper.java2.2.2 GoodsCategorySonMapper.java2.3.…

Zookeeper的集群搭建和ZAB协议详解

Zookeeper的集群搭建 1)zk集群中的角色 Zookeeper集群中的节点有三个角色: Leader:处理集群的所有事务请求,集群中只有一个LeaderFollwoer:只能处理读请求,参与Leader选举Observer:只能处理读…

数仓维度建模

维度建模 数仓建模方法1. 范式建模法(Third Normal Form,3NF)2. 维度建模法(Dimensional Modeling)3. 实体建模法(Entity Modeling) 维度建模1. 事实表事实表种类事务事实表周期快照事实表累计快…

强大的数据分析计算软件:Stata 15 for Mac 激活版

Stata 15 for Mac是一款高级统计分析软件,具有强大的数据管理和数据提取工具。以下是其功能和特点的详细介绍: 软件下载:Stata 15 for Mac 激活版版下载 数据管理:Stata 15 for Mac支持多种数据库、数据格式和计算机语言&#xff…

如何在淘~宝接单和解决别人问题-java开发

如下这是一个连接:https://s.tb.cn/c.0vDtL3https://s.tb.cn/c.0vDtL3 解决各种问题。可付费咨询

【JAVA基础篇教学】第四篇:Java条件语句

博主打算从0-1讲解下java基础教学,今天教学第四篇: Java条件语句。 在Java中,条件语句用于根据不同的条件执行不同的代码块。Java提供了if、else if和else等关键字来实现条件判断。 一、if语句 if语句用于执行一个代码块,如果给…

TripoSR: Fast 3D Object Reconstruction from a Single Image 论文阅读

1 Abstract TripoSR的核心是一个基于变换器的架构,专为单图像3D重建设计。它接受单张RGB图像作为输入,并输出图像中物体的3D表示。TripoSR的核心包括:图像编码器、图像到三平面解码器和基于三平面的神经辐射场(NeRF)。…

【网络】服务器间FTP传输文件被限速问题的排查(未达最优解)

服务器间FTP传输文件被限速问题的排查 问题描述具体问题软硬件环境文件传输方式的2种策略FTP相关信息问题表现问题解决结论 发散探讨——基于此问题进行发散研究相关知识从FileZilla软件入手从Windows入手从Linux入手从协议入手Windows和Linux的文件共享,分别是使用…

状态模式:管理对象状态转换的动态策略

在软件开发中,状态模式是一种行为型设计模式,它允许一个对象在其内部状态改变时改变它的行为。这种模式把与特定状态相关的行为局部化,并且将不同状态的行为分散到对应的状态类中,使得状态和行为可以独立变化。本文将详细介绍状态…

ORA-00600: internal error code, arguments: [krbcbp_9]

解决方案 1、清理过期 2、control_file_record_keep_time 修改 恢复时间窗口 RMAN (Recovery Manager) 是 Oracle 数据库的备份和恢复工具。在 RMAN 中,可以使用“恢复窗口”的概念来指定数据库可以恢复到的时间点。这个时间点是基于最近的完整备份或增量备份。 …

[Linux][进程控制][进程程序替换]详细解读

目录 1.进程创建1.fork函数初识2.fork函数返回值3.写时拷贝4.fork之后,父子进程代码共享5.fork常规用法6.fork调用失败的原因 2.进程终止0.进程终止时,操作系统做了什么?1.进程退出场景2.进程常见退出方法4 _exit函数(系统接口)4.exit函数(库…

html 引入vue Element ui 的方式

第一种&#xff1a;使用CDN的方式引入 <!--引入 element-ui 的样式&#xff0c;--> <link rel"stylesheet" href"https://unpkg.com/element-ui/lib/theme-chalk/index.css"> <!-- 必须先引入vue&#xff0c; 后使用element-ui --> <…

【单片机毕业设计8-基于stm32c8t6的RFID校园门禁系统】

【单片机毕业设计8-基于stm32c8t6的RFID校园门禁系统】 前言一、功能介绍二、硬件部分三、软件部分总结 前言 &#x1f525;这里是小殷学长&#xff0c;单片机毕业设计篇8基于stm32的RFID校园门禁系统 &#x1f9ff;创作不易&#xff0c;拒绝白嫖可私 一、功能介绍 -----------…

银行司库系统应用架构介绍

继国务院国资委印发了《关于推动中央企业加快司库体系建设进一步加强资金管理的意见》以及《关于中央企业加快建设世界一流财务管理体系的指导意见》&#xff0c;司库体系建设开始得到了更多重视。其中&#xff0c;作为改革风向标&#xff0c;央企数字化转型及司库建设对整个行…