Einfaches Beispiel für die Entwicklung eines USB FullSpeed Device auf Basis des STM32F103 ohne die Verwendung externer Bibliotheken
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src
sys Projektdateien für Keil-MDK, SW4STM32, TrueSTUDIO in einzelnen zip-Ar… Nov 27, 2017
.gitignore Projektdateien für Keil-MDK, SW4STM32, TrueSTUDIO in einzelnen zip-Ar… Nov 27, 2017
Atollic_TrueSTUDIO.zip
Keil-MDK.zip
LICENSE
README.md
gnu-mcu-eclipse.zip Projektdateien für Keil-MDK, SW4STM32, TrueSTUDIO in einzelnen zip-Ar… Nov 27, 2017
sw4stm32.zip

README.md

f1usb

Dies ist ein einfaches Beispiel für die Entwicklung eines USB FullSpeed Device auf Basis des STM32F103 ohne die Verwendung externer Bibliotheken, nur durch Low-Level-Registerzugriffe. Es sind vier Varianten gezeigt:

  • Der master-Branch zeigt ein (erweiterbares) Beispiel für eigene Requests auf dem Default Control Endpoint zum Setzen und Abfragen von LED's, und einem simplen Loopback auf dem Bulk Endpoint 1. Das Device ist als "WinUSB Device" deklariert und braucht somit ab Windows 8 keine Treiber, es kann bspw. mit libusb direkt darauf zugegriffen werden. Siehe dazu auch das Projekt usbclient.
  • Im minimal-Branch ist eine gekürzte Variante mit gleicher Funktion.
  • Der vcp-Branch-Branch implementiert einen 3-fachen virtuellen COM-Port ("VCP") (auch als USB-Serial/RS232-Adapter bekannt) auf Basis der Standard-Klasse CDC-ACM, die direkt ohne Treiber genutzt werden kann.
  • Der usbpower-Branch meldet beim PC einen Stromverbrauch von 500mA an und signalisiert über den Pin PA5, wenn der PC den Strom freigegeben hat (via SET_CONFIGURATION). Hier meldet sich das Gerät ebenfalls als WinUSB Device an. Pin und Strom können im Code eingestellt werden.

Dies ist der Beispielcode für dieses Tutorial zur Entwicklung eigener USB-Geräte.

Der Code ist für den STM32F103RBT6 eingestellt. Als Pinout wird das des Olimexino-STM32 angenommen (insb. mit PC12 zum Einschalten des 1,5kΩ-Widerstands auf der D+ -Leitung). Beides kann aber leicht angepasst werden.

Im Code sind die fiktiven VID und PID 0xDEAD bzw. 0xBEEF eingestellt; dies sollte auf korrekte Werte angepasst werden.

Im Repository befinden sich zip-Archive, welche Projektdateien für verschiedene IDE's beinhalten. Zur Nutzung der entsprechenden IDE muss das Archiv einfach nur direkt in das Projektverzeichnis entpackt werden.

Dateiname Zugehörige Entwicklungsumgebung
Atollic_TrueSTUDIO.zip Atollic TrueSTUDIO Lite
gnu-mcu-eclipse.zip eclipse-cdt mit GNU MCU Eclipse-Plugins und GNU Arm Embedded Toolchain in der Version 6.3.1 (Juni 2017)
sw4stm32.zip System Workbench for STM32
Keil-MDK.zip Keil MDK 5 unter Nutzung des Clang-basierten Compiler Version 6

Auf der Releases-Seite sind fertige Binaries für den direkten Download auf den Controller verfügbar.

Lizenz

Dieser Code steht unter der BSD-Lizenz, siehe dazu die Datei LICENSE.