TeenyUSB

TeenyUSB是一个用于STM32芯片的轻量级USB协议栈。这个项目最开始主要目的是为了解决芯片代码空间的不足的问题。用CubeMX生成的代码体积比较大,而选用的芯片资源又十分有限,因此就有了实现一个轻量级USB的想法。后来在实现的过程中发现抛开了层层的封装之后,USB并非想象中的那么复杂,于是将实现过程中遇到的问题以及一些想法记录了下来,形成了《STM32 USB设备开发指南》一书。

目前TeenyUSB协议栈还在开发的过程中,《STM32 USB设备开发指南》也还在不断的完善中。与TeenyUSB协议栈和《STM32 USB设备开发指南》有关的问题可以在TeenyUSB问题反馈中留言,也可以到Github上提交问题,项目地址:https://github.com/xtoolbox/TeenyUSB。或者是直接给作者发送电子邮件 admin&xtoolbox.org,将邮件中的&符号替换成@。

源代码托管地址:code.tusb.orghttps://github.com/xtoolbox/teenyusb

下载《STM32 USB设备开发指南(预览版)》:GitHub镜像21ic镜像

目前支持的设备例程

自定义USB设备     自定义的USB设备,采用Bulk传输,在Windows上采用WCID的形式自动安装驱动,无需手动安装。

F723Dap               基于STM32F723的DAPLink,同时支持 V1和V2数据传输模式

复合设备                支持USB串口、U盘、自定义HID以及WinUSB Bulk传输的复合设备

目前支持的主机例程

HUB+U盘+键盘鼠标   支持U盘键盘鼠标以及HUB级连的主机Demo。

基于rt-thread的双角色设备  主从模式根据连线自动切换,支持RNDIS主从模式,U盘主从模式及自动挂载,键盘主从械,鼠标从机模式等

测试过的芯片型号

STM32F072C8T6, 开发板型号:自制开发板

STM32F103RET6, 开发板型号:自制开发板

STM32F107VCT6, 开发板型号:自制开发板

STM32F303VCT6, 开发板型号:stm32f3 discovery

STM32F407IGT6, 开发板型号:Waveshare EVK407I

STM32F723IEK6, 开发板型号:stm32f723e discovery

STM32F767ZIT6, 开发板型号:stm32f767zi nucleo

 

相关工具

TeenyDT 描述符生成工具

USB描述符自动生成工具,使用lua格式来编写描述符,自动生成TeenyDT和libOpenCM3格式的描述符及初始化代码。描述符示例及在线试用 http://dt.tusb.orghttp://dt1.tusb.org

PC测试工具

通用的USB设备测试工具,支持串口测试,HID设备测试。通用的USB设备支持批量传输,中断传输以及同步传输。

测试工具下载:Github镜像21ic镜像

USB和HID测试界面

串口测试界面