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.
Dieser Code steht unter der BSD-Lizenz, siehe dazu die Datei LICENSE.