Forum: Mikrocontroller und Digitale Elektronik STM32F4 USB Beispiele


von Moritz M. (avrprogger)


Lesenswert?

Hallo,

als nächstes in meinem Projekt möchte ich mich gerne mal mit der USB 
Schnittstelle der STM32F4 Controller beschäftigen. Ich hab mir die 
USB-Libs mal angesehen, doch leider gibt es dabei keine Anleitungen, wie 
bei der Standard-Peripherie-Lib. In den Beispielen von ST steige ich 
nicht ganz durch, deshalb nun die Frage ob sich jemand damit auskennt 
und vllt. auch ein Beispiel hat?

Moritz

von Gnubbel (Gast)


Lesenswert?

UM1021 Sollte dir weiter helfen(User Manual von ST)

von erhardd (Gast)


Lesenswert?


von erhardd (Gast)


Lesenswert?


von Moritz M. (avrprogger)


Lesenswert?

Hallo,

also ich steig da bei den STM32F4-Controllern noch nicht durch.
In welchen Modi kann die STM32F4-USB-Schnittstelle verwendet werden?
(Host // Device // OTG(Host/Device)). Hat vielleicht jemand ein Bsp. für 
das STM32F4 Discovery Board?

Moritz

von erhardd (Gast)


Lesenswert?

Moritz M. schrieb im Beitrag #2761717:
> On-the-Go ist doch
> eig. dazu da um z.B zwei USB-Sticks miteinander zu verbinden oder?

OTG soll deinem Programm ermöglichen, das Gerät an diesem Anschluss als 
Host oder als Device, je nach Auswahl im Programm(zum Beisp. durch den 
Joystick), zu behandeln.
Ein USB-Stick Inhalt wird als -Board ist Host- für dieses Gerät 
ausgelesen.


Wenn dieser (gleiche!) USB-Anschluss später irgentwann mit dem PC 
verbunden wurde und Du mit dem Joy/Touch    -Board ist Device- 
ausgewählt hast, wird das ganze Board vom PC als "Device" erkannt und so 
behandelt.
Als HID (human interface Device) als Mouse z.B., wenn Du den 
Kompass/Acc. drauf hast. Die Kippbewegungen des Boards bewegen dann 
einen Mauszeiger auf dem PC-Bildschirm ;
Bei meinem Board wird in diesem Fall die SD-Karte des Boards ausgelesen 
und kann beschrieben werden(Data-Logging).
Nun kannst Du 2 verschiedene USB- Anschlüsse vorsehen.
Ich habe einmal FS(Full-Speed) und einen HS(High-Speed über USB3320) am 
Laufen. Und für beide OTG...

von Moritz M. (avrprogger)


Lesenswert?

Hallo

okay. Also OTG ist praktisch Device und Host in einem, nur das der Host 
eingeschränkte "Rechte" hat gegenüber einem reinen Host. Bei OTG wird 
dann während der Laufzeit festgelegt ob die Schnittstelle Host oder 
Device sein soll? Die USB-Schnittstelle von den STM32F-Controllern kann 
aber auch als normaler Host bzw. Device verwendet werden oder?

Moritz

von Moritz M. (avrprogger)


Lesenswert?

Hallo nochmal,

ich glaube ich habe die Antwort selbst gefunden (Reference Manual). Also 
STM32F4-Controller habe nur OTG.  Diese OTG-Schnittstelle kann dann nur 
als Host oder nur als Device verwendet werden; Oder als OTG, wobei der 
Modus(Host/Device) während der Laufzeit festgelegt wird.

Hab ich das Richtig verstanden?

Moritz

von erhardd (Gast)


Lesenswert?

...im Grunde, -ja;
OTG ist höher angesiedelt, da Du dich nicht von vorherein festlegen 
musst...
-eben "on the go" , oder ,  "wie benötigt"...

von erhardd (Gast)


Lesenswert?

...schau Dir mal das Bild genauer an:
Beitrag "Re: HY_STM32F417_BB"
Du siehst am unteren Rand die Auswahlmöglichkeit für USB-FS.
-einmal als Host, darunter per Stick wählbar, als Device...

von erhardd (Gast)


Lesenswert?

...oder noch eindeutiger:
-mit dem Programm FS-USB-Host aus der o.g. Lib kannst Du Dir die Bilder 
auf deinem USB-Stick auf dem LCD 
ansehen,http://www.mikrocontroller.net/attachment/148684/HY_F417_BB_MS-Cardn_007__FILEminimizer_.jpg


-mit dem Programm STM324xG-EVAL_USBD-FS aus o.g. Lib kannst Du am PC den 
Stick als "Laufwerk" öffnen und den Inhalt ansehen und ändern
http://www.mikrocontroller.net/attachment/148558/Speicherinhalt_der_SD-Karte__FILEminimizer_.jpg

von Moritz M. (avrprogger)


Lesenswert?

Hallo,

vielen Dank! Also verstanden habe ich das jetzt. Ich weiß nur nicht 
richtig wie man die Lib verwendet. Welche Init-Funktionen brauch man? 
Wie kann man Daten Senden? Usw...? Beipiele?

Moritz

von erhardd (Gast)


Lesenswert?

...wenn Du die Lib entpackt hast, öffnest Du z.B.
stm32_f105-07_f2_f4_usb-host-device_lib\STM32_USB-Host-Device_Lib_V2.1.0 
\Project\USB_Host_Device_Examples\DRD
-dann suchst Du Dir die IDE deines Vertrauens und öffnest das 
entsprechende Projekt;
-da ist alles vorhanden und sehr gut kommentiert;

von Moritz M. (avrprogger)


Lesenswert?

Hallo,

also sehr gut dokumentiert ist finde ich etwas anderes.Hat nicht jemand 
einfach ein Beispiel z.B. einfach nur eine Maus Emulation oder so? Kann 
doch nicht sein, dass ich der erste bin der die USB Schnittstelle ohne 
irgendein Klumpatsch drum herum benutzen möchte?

Moritz

von Moritz M. (avrprogger)


Lesenswert?

Hallo,

hat wirklich noch niemand die USB Schnittstelle benutzt? Durch die 
Beispiele von ST steige ich nicht ganz durch. Die Std_Periph_Lib ist 
super dokumentiert die USB_Lib praktisch gar nicht.

Moritz

von Alex E. (tecnologic) Benutzerseite


Lesenswert?

Moin,

Ich nutze sie beispielsweise als Host für n USB Stick. Was genau willst 
du denn machen.

MfG

Tec

von Moritz M. (avrprogger)


Lesenswert?

Hallo,

ich möchte mich einfach erstmal so mit USB näher beschäftigen. Könntest 
du dein Projekt mal posten?

Moritz

von Martin M. (capiman)


Lesenswert?

Moritz M. schrieb:
> ich möchte mich einfach erstmal so mit USB näher beschäftigen. Könntest
> du dein Projekt mal posten?

es ist halt erst mal ein großer Unterschied, ob man einen USB Host
oder ein USB Device realisieren will. Dies sollte man mindestens
mal festlegen. Wenn man dies nicht kann, hilft vielleicht
erst einmal ein Blick in die USB 2.0 Spezifikation,
die man unter http://www.usb.org findet.

von Moritz M. (avrprogger)


Lesenswert?

Hallo,

ich weiß wie USB im Prinzip funktioniert usw.
Mir ist ziemlich egal ob ich mit einem Host oder mit nem Device anfange. 
In meinem späteren Projekt kommt beides rein. Ich wäre sehr froh wenn du 
dein Beispiel posten könntest.

Moritz

von Alex E. (tecnologic) Benutzerseite


Lesenswert?

http://code.google.com/p/thundercyer-the-alarm-clock/
Das Repo ist nicht sehr aktuell, aber USB ist vollständig drin.

Was USB mit dem ST Lib angeht ist das eigendlich recht simpel.
Bei dem F4 lässt du den OTG Core mit übersetzen bei nem F1 den normalen.
Dann musste Host oder Device mit übersetzen und darin die gewünschte Dev 
Class. Wenn das hast treibst du dich eigenlich nur in den usb_usr.x 
Dateien rum. Da sind die Callbacks aus dem USB stack drin. Sieht man 
auch schön bei dem Mediakey beispiel für das F4discovery.

MfG

Tec

von Martin M. (capiman)


Lesenswert?

Siehe auch diesen Thread hier:
Beitrag "STM32F4 Discovery: USB CDC (serielle Schnittstelle) arbeitet!"

Ich habe das Beispiel von hier probiert. Dort hat sich zumindest
das Device mit FS (Full Speed) gemeldet (mehr nicht getestet):
https://www.das-labor.org/svn/microcontroller/src-stm32f4xx/serialUSB/

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.