Lightweight USB Device Stack
- Lightweight and fast
- Event-driven process workflow
- Completely separated USB hardware driver and usb core
- Easy to use.
Supported hardware
HW driver | Written on | Endpoints | Features | MCU series |
---|---|---|---|---|
usb_stmv0 | GCC C | 8 | Internal S/N, Doublebuffered, BC1.2 | STM32L0x2 STM32L0x3 STM32L4x2 STM32L4x3 STM32F0x2 STM32F0x8 |
usb_stmv0a | GCC ASM | 8 | Internal S/N, Doublebuffered, BC1.2 | STM32L0x2 STM32L0x3 STM32L4x2 STM32L4x3 STM32F0x2 STM32F0x8 |
usb_stmv1 | GCC C | 8 | Internal S/N, Doublebuffered | STM32L1xx |
usb_stmv1a | GCC ASM | 8 | Internal S/N, Doublebuffered | STM32L1xx |
usb_stmv2 | GCC C | 6 | Internal S/N, Doublebuffered, BC1.2 | STM32L4x5 STM32L4x6 (OTG FS (Device mode)) |
- Single physical endpoint can be used to implement
- one bi-directional/single-buffer logical endpoint (CONTROL)
- one mono-directional/double-buffer logical endpoint (BULK OR ISOCHRONOUS)
- two mono-directional/single-buffer logical endpoints (BULK OR INTERRUPT)
-
At this moment BULK IN endpoint can use both buffers, but it is not real doublebuffered.
-
Tested with STM32L052, STM31L100, STM32L476RG
Implemented definitions for classes
- USB HID based on Device Class Definition for Human Interface Devices (HID) Version 1.11
- USB DFU based on USB Device Firmware Upgrade Specification, Revision 1.1
- USB CDC based on Class definitions for Communication Devices 1.2
Using makefile
- to build library module
make module MODULE=path/module.a DEFINES="mcu spcified defines" CFLAGS="cpu cpecified compiler flags"
- to build demo
make demo MCU=stm32l100xc
make demo MCU=stm32l052x8
make demo MCU=stm32l476rg
- to flash demo using st-flash
make program
Default values:
Variable | Default Value | Means |
---|---|---|
CMSIS | ../../cmsis | path to CMSIS root folder |
MCU | stm32l100xc | MCU selection for demo project |
CFLAGS | -mcpu=cortex-m3 -mfloat-abi=soft | MCU specified compiler flags |
DEFINES | STM32L1 STM32L100xC | MCU specified defines |
INCLUDES |
|
path to ST CMSIS includes |