Skip to content

Lightweight USB device Stack for STM32 microcontrollers

License

Notifications You must be signed in to change notification settings

hotsauce1861/libusb_stm32

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

72 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Lightweight USB Device Stack

  • Lightweight and fast
  • Event-driven process workflow
  • Completely separated USB hardware driver and usb core
  • Easy to use.

Requirements

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)
usb_stmv3 GCC C 8 Internal S/N, Doublebuffered, optional DP control STM32F102 STM32F103 STM32F3xx
usb_stmv3a GCC ASM 8 Internal S/N, Doublebuffered, optional DP control STM32F102 STM32F103 STM32F3xx
  1. 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)
  1. At this moment BULK IN endpoint can use both buffers, but it is not real doublebuffered.

  2. Tested with STM32L052, STM31L100, STM32L476RG, STM32F103CB, STM32F303CC, STM32F303RE

Implemented definitions for classes

  1. USB HID based on Device Class Definition for Human Interface Devices (HID) Version 1.11
  2. USB DFU based on USB Device Firmware Upgrade Specification, Revision 1.1
  3. 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 bluepill program
make stm32l052x8
  • to get a help
make help

Default values:

Variable Default Value Means
CMSIS ../../CMSIS path to CMSIS root folder
CMSISDEV $(CMSIS)/Device path to CMSIS device folder
CMSISCORE $(CMSIS)/CMSIS/Include $(CMSIS)/CMSIS/Core/Include path to CMSIS core headers
MCU stm32l100xc MCU selection for demo project
CFLAGS -mcpu=cortex-m3 -mfloat-abi=soft MCU specified compiler flags
DEFINES STM32L1 STM32L100xC MCU specified defines

Useful Resources

  1. USB Implementers Forum official site
  2. USB Made Simple
  3. LUFA - the Lightweight USB Framework for AVRs.
  4. Open Source ARM cortex m microcontroller library

About

Lightweight USB device Stack for STM32 microcontrollers

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 76.1%
  • Assembly 20.9%
  • Makefile 1.5%
  • Pawn 1.5%