STM32 USB-FS-Device Lib

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche

STM32 USB-FS-Device Lib

Mit der STM32 USB-FS-Device Lib stellt ST C-Funktionen zur Benutzung der USB-Schnittstelle der STM32 µC zur Verfügung.

Sie kann zusammen mit Beispielimplementationen verschiedener USB-Geräteklassen hier bei ST kostenlos heruntergeladen werden:

Eine Beschreibung findet sich hier.

Virtual COM Port

Für die allgemeine Kommunikation mit einem PC wird für die meisten Projekte ein Virtual COMPORT die geeignete Geräteklasse sein. Auf PC Seite erscheint dabei nach Einstecken des STM32 in den USB Port ein weiterer COM Port im Gerätemanager, der von Applikationen genauso wie jeder reale COM Port verwendet werden kann. Wie der Zugriff auf µC-Seite aussieht sehen wir uns weiter unten an.

Die Beispielimplementierung

ST liefert eine Beispielimplementierung für den einen Virtual Comport mit der USB-Lib mit. Um diese Nutzen zu können, muss das verwendete Evalboard einmal mit dem USB und einmal mit einem echten RS232 verbunden sein, da man zum Test Daten zwischen zwei Terminalprogrammen hin- und herschicken kann, eines mit dem Virtual COM Port und das andere mit dem "echten" COM Port verbunden.

Da ich derzeit keinen weiteren COM Ports zur Verfügung hatte und ich gerne ein Beispiel wollte, das rein auf den USB-Port konzentriert ist, habe ich das Beispiel etwas modifiziert. In meinem Beispielprogramm sind alle USART Anteile entfernt, ebenso alle #ifdefs die sich auf ein bestimmtes EVAL-Board bzw. auf den STM32 in der Connectivity Line beziehen, welche einen USB-OnTheGo besitzt. Dadurch ist der Code jetzt deutlich leichter zu überschauen. (wenn ihr unbedingt einen STM32 aus der Connectivity Line nehmen wollt, dann quält euch durch das Orginalbeispiel.

In der jetzigen Version schickt der µC jede Zeichenkette die ihm vom PC geschickt wird wieder an den selben COM Port zurück, aber in umgekehrter Zeichenfolge. (Zum Test empfehle ich HTerm Zumindest die in Crossworks enthaltene Terminal Emulation arbeitet nicht korrekt, daher besser nicht verwenden)

Unter findet Ihr das Projekt zusammen mit einer CrossWorks Projektdatei Datei:ARM USB Test.zip. Voraussetzung zum Kompilieren ist folgende Verzeichnisstruktur

Stammverzeichnis
   |__ ARM_USB_Test
   | 
   |__ ST_StandardLib    ( Standard Peripheral Libary ab Libraries)
   |        |
   |        |__ CMSIS
   |        |
   |        |__ STM32F10x_StdPeriph_Driver
   |         
   |___ ST_USB_LIB       (STM32_USB-FS-Device_Lib ab Libraries)
          |
          |__ inc
          |
          |__ src

Windows Treiber für den Virtual COM Port

Wie im Artikel Wieso braucht man überhaupt einen Treiber für einen Virtual Com port? diskutiert, läßt die Basiskonfiguration von Windows ziemlich zu wünschen übrig wenn es um Virtual COM Ports geht. Ohne ersichtlichen Grund wird diese Standardgeräteklasse nicht automatisch erkannt und unterstützt, sondern man benötigt einen passenden Treiber oder vielmehr die passende .inf-Datei.

Da die entsprechende kostenlose .inf-Datei auf der ST-Seite nicht so einfach zu finden ist, kann sie hier Datei:Stmcdc.inf heruntergeladen werden.

Die STM32-CDC-Treiber sind WHQL Zertifiziert und über das Windows Update für die Versionen Windows 2000, XP (x86, x64), Vista (x86, x64) und 7 (x86, x64) erhältlich. Ansonsten kann der Treiber hier (V1.3.1) oder hier (V1.4.0, readme.txt lesen) heruntergeladen werden.

Schaltplan für diese Implementierung

Schaltplan

Für alle die die Schaltung nachbauen wollen hier der Schaltplan, der in meinem Lochrasteraufbau problemlos funktioniert. (Die SD-Card rechts hat natürlich nichts damit zu tun ;-)

Aufbau der Beispielimplementierung

Um die Implementierung einfacher nachvollziehen zu können, hier ein Archiv Datei:CrossWorks StandardLib Setup.zip mit einer kompletten Arbeitsumgebung für Crossworks.

Hier soll, wie ich Zeit dafür habe gezeigt werden welche der Funktionen und Dateien für uns interessant sind um eigene Funktionalität dort zu integrieren.

--Escamoteur 07:39, 27. Apr. 2010 (UTC)