Forum: Mikrocontroller und Digitale Elektronik STM32F4 - Discovery - USB Device Highspeed Bulk Transfer


von Gerrit (Gast)


Lesenswert?

Hi liebe Forengemeinde,

ich komme aus der AVR32 Ecke und taste mich nun in die Welt der ARM 
Controller. Dazu habe ich von einem Kollegen das STM32F4 Discovery Board 
bekommen.

Ich habe noch nichts damit angestellt, würde mir aber die CooCox IDE 
zulegen und den GNU Compiler nutzen.

Es gibt da noch Sachen, die für mich unklar sind:

Das Board hat zwei USB Anschlüsse. Einen Mini USB Anschluss und einen 
Micro USB Anschluss. So wie ich das verstanden habe, kann der Mini USB 
Anschluss nur zum Flaschen/Debuggen benutzt werden.

Kann ich den Micro USB Anschluss nutzen, um auf dem STM32F4 ein USB 
High-Speed Device einzurichten? Ich benötige den Controller unter 
anderem für die Übertragung von großer Datenmengen in kurzer Zeit, 
konkreter alle 3 ms wurden 2048 kB bearbeitet und liegen abrufbereit in 
einem Ringspeicher vor. Wenn der PC seitige USB Host denn mal Zeit hat, 
kann er sich die abholen. Das ganze möchte ich Controllerseitig mit DMA 
lösen.

So habe ich das bisher auf dem AVR32 gemacht und es funktioniert prima. 
Den STM32F4 habe ich aus dem Grund, weil die Berechnungen, die in den 3 
ms erfolgen müssen komplexer geworden sind und der AVR da nicht mehr 
hinterher kommt.

Ich habe viel von USB OTG gelesen und dass sowohl FS als auch HS 
unterstützt wird, so weit alles klar. Dann habe ich gelesen dass für USB 
OTG im HS Betrieb ein externes PHY benötigt wird. Ist das NUR für USB 
OTG der Fall? Das heißt, ich kann das externe PHY als reines USB Device 
getrost weglassen?

Die Internetseite, die sich mit USB auf dem STM32F4 beschäftigt habe ich 
noch nicht gefunden. Wenn irgendjemand Informationen darüber hat, kann 
er sie mir gerne mitteilen. Brauche davon noch sehr viel, was die 
Implementierung betrifft.

Vielen Dank im voraus

von Uwe Bonnes (Gast)


Lesenswert?

Der STM32F2/4 hat nur Full-Speed Transceiver. Prinzipiell kann an die 
zweite USB Schnittstelle ein ULPI Baustein angeschlossen werden, um 
High-Speed zu machen. Auf den Discovery Boards sitzt aber kein ULPI 
Baustein, andere Demoboards mögen den Baustein aber haben.

Um USB zum Laufen zu bekommen, kann Libopencm3 oder der Blackmagic Debug 
Probe als libopencme Anwendung Code schnell zum Erfolg führen. Falls man 
ein OS mit kooperativen Multitasking will, empfehle ich den SVN Trunk 
von Ethernut.

von Gerrit (Gast)


Lesenswert?

Hallo Uwe,

erst einmal danke für deinen Beitrag. Hast du schon USB Verbindungen mit 
dem STM32F4 zum laufen gebracht? Ich verzweifle gerade an der suche nach 
einem Vendor Class Beispiel. Ich finde nur CDC VCP Beispiele aber nichts 
für eine eigene USB Verbindung.

Zudem suche ich Beispiele, bei denen der USB Transfer mittels DMA 
stattfindet.
Hast Du da evtl schon etwas aufgebaut?

Viele grüße

von Uwe Bonnes (Gast)


Lesenswert?

Mit dem ST Code habe ich mich nicht beschaeftigt. Mit libopencm3 schon. 
Und damit habe ich USB Verbindungen zum Laufen gebracht.

von Dieter (Gast)


Lesenswert?

auch auf einem STM32F4xx ?
libopencm3 ist für STM32F103 soweit ich gesehen habe.

Grüße
Dieter

von Uwe B. (derexponent)


Lesenswert?

Hi Gerrit,

hier ein Beispiel für USB-HID im Interrupt-Mode
auf dem STM32F4 Discovery

falls dir das weiterhilft

http://mikrocontroller.bplaced.net/wordpress/?page_id=1993

von Uwe Bonnes (Gast)


Lesenswert?

Dieter schrieb:
> libopencm3 ist für STM32F103 soweit ich gesehen habe.

Dann  schau noch mal genauer hin und verwende aktuelle Quellen.

Warum hat den "Bootstrapping mit dem F4 Discovery" unter
 http://embdev.net/articles/STM_Discovery_as_Black_Magic_Probe
bei mir funktioniert?

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.