Forum: Mikrocontroller und Digitale Elektronik USB OTG Device STM32 F2xx Bibliothek Kommunikation mit VCP


von Khean (Gast)


Lesenswert?

Hey,

ich beschäftige mich derzeit mit der USB-Programmierung auf Basis eines 
STM32Fxx Controllers. Der µC soll als reines Device dienen und 
vorzugsweise mit dem isochronen Transfer Daten zum PC (Windows) schicken 
und von diesem Empfangen. Auf PC-Seite soll ein VCP eingerichtet werden. 
Da ich das Rad nicht neu erfinden möchte, habe ich nach einer relativ 
kurzen Recherche herausgefunden, dass ST zwei Bibiliotheken für ihre 
Prozessoren anbietet. Da ich mich mit einem 2xxer Proz. beschäftige 
"muss" ich demnach die USB OTB Host and Device Library 2.1.0 nutzen. Das 
Manual 1021 beschreibt diese auch einigermaßen. Ich habe mir das VCP 
Device Beispiel auf Doku- und Code-Seite angeschaut. Mir sind jedoch 
noch einige Punkte unklar und ich hoffe einfach mal das Ihr mir bei 
diesen Fragen weiter helfen könnt:

Hier das User Manual:
http://www.element14.com/community/docs/DOC-44847/

- Laut den Abb. 1, 3 und 7  besteht keine zwangsmäßige Verknüpfung der 
OTG-Treiber- und der USB-Device-Bibiliothek. Im Code finde ich jedoch an 
vielen Stellen Zugriffe von Seitens des Devices auf die OTG-Treiber. Ist 
die Verwendung der OTG-Treiber-Bibiliothek demnach "Pflicht"? Aus den 
Grafiken lese ich das eben nicht raus

- Ich habe den "Datentransfer" noch nicht so ganz verstanden. Ich weiß, 
dass beim USB das Device erstmal kein "Initiatorrecht" hat. Soll heißen, 
es darf nur Daten nach Aufforderung des Hosts versenden oder entgegen 
nehmen. Ich hätte dennoch Read- und Write-Routinen erwartet um z. B. das 
entsprechende FIFO eines Endpunktes mit Daten zu befüllen oder von einem 
beschriebenen FIFO eines Endpunktes Daten zu entnehmen. Wie ist der 
Datentransfer Bibliothek zur Applikation und vice versa implementiert? 
Evtl. sogar über ISRs oder Callback Funktionen?

- Habt ihr evtl. ein eingängieres Beispiel für den Datentransfer von 
einem µC zum VPC Port eines PCs?

Ich danke Euch schon mal im vorraus! :-)

Gruss Khean

von W.S. (Gast)


Angehängte Dateien:

Lesenswert?

Khean schrieb:
> ich beschäftige mich derzeit mit der USB-Programmierung auf Basis eines
> STM32Fxx Controllers....
> Habt ihr evtl. ein eingängieres Beispiel

Ja.

Ich hatte mir dieses Jahr diese thematik mal vorgenommen und erstmal bei 
Nuvoton NUC120 angefangen, dann NXP LPC2478, dann STM32F103ZET6, dann 
LPC1343, dann LPC1751 (das war leicht, denn der hat den gleichen 
USB-Core wie der LPC2478)

Fazit: Fast alle Cores sind grundverschieden und haben elendige Haken, 
über die man erstmal stolpern und auf die Nase fallen muß. Aber danach 
geht's eigentlich ganz gut.

Ich habe übrigens die Headerdatei vom Nuvoton für alle anderen 
beibehalten, damit ist der VCP auf allen µC aus Sicht des benutzenden 
Programms völlig gleich. Nun und für die PC-Seite ist das auch gut, da 
braucht's keine mehrfachen Installationen.

W.S.

von Uwe Bonnes (Gast)


Lesenswert?

Ein Blick auf den libopencm3 USB Core und seiner Anwendung in der 
Blackmagic Debug Probe kann auch hilfreich sein...

von Khean (Gast)


Lesenswert?

Hey,

danke Euch erst einmal für die schnellen Antworten.

Ich habe nur vergessen zu erwähnen, dass ich mit einem gängigeren 
Beispiel eines bzgl. der von mir verwendeten Bibiliothek meine :-).

Gruss

von Tycho B. (asellus)


Lesenswert?

Gibt es ein ähnliches bare metal VCP Tutorial für USB OTG?

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.