xtoolbox / TeenyUSB

Lightweight USB device and host stack for STM32 and other MCUs. Ready for USB 3.0 device.
http://www.tusb.org
MIT License
571 stars 178 forks source link
cdc ch56x composite embedded hid host hub msc rndis speed stm32 super usb usb3 winusb

Teeny USB

Build Status

一个简易的单片机USB主机和设备协议栈,现在支持3.0设备。

A teeny USB device and host stack for MCUs, support super speed device.

关于TeenyUSB的实现细节和使用方式请阅读《STM32 USB设备开发指南》 Github下载 , 21IC下载

设备栈 Device Stack

USB描述符由TeenyDT生成。 在线试用TeenyDT

USB descriptor is generate by TeenyDT. Try TeenyDT online

USB设备例程 Demo for device

主机栈 Host Stack

USB主机例程 Demo for host

如何生成示例程序 How to make demo

编译工具为 arm-none-eabi-gcc is the compile toolchain.

调试使用VSCode+OpenOCD,如何在VSCode中配置STM32开发调试环境?

git clone https://github.com/xtoolbox/TeenyUSB.git
cd TeenyUSB
git submodule update --init
cd sample
make all -j8

如果更新mcu库很慢,可以使用gitee.com镜像。https://gitee.com/xtoolbox/st_driver.git

demo编译后各字段大小信息 Section size info of each demo

$ echo "   text    data     bss     dec     hex filename" && make all -j8 LOG_INFO=0 | grep '^[^l].*output/.*.elf'
   text    data     bss     dec     hex filename
  12072    1084   69296   82452   14214 output/f723dap.elf
   4480    1080    6068   11628    2d6c output/f072bulk.elf
   6392    1084    6416   13892    3644 output/f407bulk.elf
   5396    1084    6064   12544    3100 output/f303bulk.elf
   4972    1080    6068   12120    2f58 output/f103bulk.elf
   6524    1084    6416   14024    36c8 output/f723bulk.elf
   6284    1084    6416   13784    35d8 output/f767bulk.elf
   8100    3500    2200   13800    35e8 output/f103comp.elf
   8324    3500    2200   14024    36c8 output/f072comp.elf
  10132    3504    2588   16224    3f60 output/f407comp.elf
  10240    3504    2588   16332    3fcc output/f723comp.elf
   8528    3504    2196   14228    3794 output/f303comp.elf
  10000    3504    2588   16092    3edc output/f767comp.elf
  27560    1092   35776   64428    fbac output/f107host.elf
  28704    1092   28608   58404    e424 output/f407host.elf
  28860    1092   28832   58784    e5a0 output/f723host.elf
  28504    1092   28792   58388    e414 output/f767host.elf

目录结构说明 Folder

.
├── TeenyDT         # 基于lua的USB描述符生成工具 A lua based USB descriptor generator 
├── sample          # 示例代码 Sample projects
├── mcu_lib         # MCU文件子仓库,MCU library sub module
├── core            # USB核心文件, TeenyUSB core file
├── class           # USB设备类和主机类文件, TeenyUSB device and host class file
├── driver_stm32    # STM32驱动文件。 STM32 Driver file
├── pc_test_tool    # 基于lua Qt的Windows USB 测试程序 A luaQt based Windows program to test CDC/HID/WinUSB devices
└── third_part      # 第三方代码,如FatFs,rt-thread。 Third part source code, e.g. FatFs, rt-thread.

Demo测试用的开发板 Demo tested boards

Board Folder Board Type Chip HSE Freq USB Core
stm32f072c8t6 Custom board STM32F072C8T6 No HSE USB FS
stm32f103ret6 Custom board STM32F103RET6 8 MHz USB FS
stm32f107vc Custom board STM32F107VCT6 25 MHz OTG_FS
stm32f3_disco stm32f3 disco STM32F303VCT6 8 MHz USB FS
stm32f407_evk Waveshare EVK407I STM32F407IGT6 8 MHz OTG_FS/OTG_HS_ULPI
stm32f723e_disco stm32f723e discovery STM32F723IEK6 25 MHz OTG_FS/OTG_HS_Embed
stm32767zi_nucleo stm32f767zi nucleo STM32F767ZIT6 8 MHz OTG_FS
stm32h743_openmv stm32h743_openmv STM32H743VIT6 12 MHz OTG_FS
ch565w_evk ch565w_evk CH565W 30 MHz OTG_SS

其它支持STM32的开源USB协议栈 Other open source USB stack for STM32

其它嵌入式开源USB协议栈