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.org,https://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.org或http://dt1.tusb.org。
PC测试工具
通用的USB设备测试工具,支持串口测试,HID设备测试。通用的USB设备支持批量传输,中断传输以及同步传输。
USB和HID测试界面
串口测试界面