Forum: Mikrocontroller und Digitale Elektronik STM32F4 Discovery Usb


von Kerstin (Gast)


Lesenswert?

Hallo,

hab ein paar Fragen an euch.
Besitze das Stm32 Discovery Board und möchte mit deinem
einem USB-Schnittstelle zum PC realisieren.
In der Demo App läuft bereits ein USB HID demo
ich benötige aber eine USB Verbindung um Daten auszutauschen.
Weis jemand dazu den Code?

Was gibt es von Seiten Windows - wie lese ich die daten dann aus?

Danke!
Liebe Grüße

von Stefan F. (kpy3ep) Benutzerseite


Lesenswert?

Kerstin schrieb:
> ich benötige aber eine USB Verbindung um Daten auszutauschen

Das wird immer gemacht, wenn eine Verbindung besteht. Die Frage ist, was 
für Daten von wo und wohin und am besten noch wieviel mit welcher 
Übertragungsrate.

Möchtest du das Discovery als Massenspeicher erkennen lassen? SD-Karte 
dran? Bitte ausführlicher das Problem beschreiben.

von Kerstin (Gast)


Lesenswert?

Hey,

ich möchte einfache Integer Pakete an den PC senden. Es gingen auch 
Strings. Möchte eine RGB Matrix am PC simulieren.

lg

von Stefan F. (kpy3ep) Benutzerseite


Lesenswert?

wie wäre es mit Bytes? Schau mal nach STM32F4 VCP (virtual Com Port). 
Das ist das, was du brauchst.

Hier ein funktionierendes Beispiel:
http://www.coocox.org/forum/topic.php?id=1757&page=2

Edit: In Windows dann einfach die "Daten" mit PuTTy oder Hyperterminal 
rüberschicken und lesen.

von Kerstin (Gast)


Lesenswert?

Ja, das is ja auch mein Plan nur bekomme ich Kompilierfehler wenn ich 
die USB Bibliothek verwenden möchte.

USB_OTG_CORE_HANDLE       USB_OTG_Core_dev;
USBH_HOST                 USB_HOST;

USBD_Init(&USB_OTG_Core,
            USB_OTG_HS_CORE_ID,
            &USR_Host,
            &USBD_MSC_cb,
            &USR_MSC_cb);


hab die standardlib von IAR Workbench mit dem STM32F4 Discovery example 
geladen.

von Stefan F. (kpy3ep) Benutzerseite


Lesenswert?

hmm...die IDE kenne ich jetzt nicht, scheint aber einen eigenen Compiler 
zu verwenden und nicht die gnu-arm compiler wie z.B. Atollic oder 
Coocox.

Ich kann dir eigentlich nur Coocox ans Herz legen. Das Beispiel von oben 
funktioniert damit problemlos und dürfte deine Probleme lösen. Wenn du 
von der IAR Workbench nicht weg kannst, bleibt dir wohl nur eins: Selber 
umstricken!

von Kerstin (Gast)


Lesenswert?

um den compiler gehts nicht ich hab die standard lib von stm für das 
discovery board und möchte diese ansprechen. ich kenn mich mit der
funktion usbd_init nicht aus. kann mir da jemans helfen.

von Uwe B. (Firma: TU Darmstadt) (uwebonnes)


Lesenswert?

Aus
https://github.com/UweBonnes/blackmagic.git
kannst Du mit nach Lesen und befolgen des READMEs mit
 make PROBE_HOST=f4discovery

eine "Black magic debug probe" fuer das F4 Discoveryboard bauen. Da ist 
auch ein ADCACM Modem dabei. Einfach den unnuetzen Code rauswerfen und 
eigenes ergaenzen.

von Moritz M. (Gast)


Lesenswert?

Hallo,

weiß jemand, wo die Dateien im Ordner usb_cdc\CDC herkommen? Muss man 
die Selbst programmieren?

Moritz

von Kerstin (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich bin nun etwas weiter.
Ich habe nun die Firmware für das STM32F4 Discovery heruntergeladen

im Ordner 
STM32F4-Discovery_FW_V1.1.0\Libraries\STM32_USB_Device_Library\Class\cdc

befinden sich die cdc files.

Dann habe ich ein template Projekt in der IAR Workbench IDE
erstellt und folgenden code eingebaut:

http://mcu.cz/comment-n2800.html

danach habe ich die vcp treiber 64 bit und 32 bit installiert
benutze win 7 64 bit. jedoch eine 32 bit IDE

Der Code baut nun und linkt.
Ich habe folgende Präprozessor flags gesetzt:

USE_STDPERIPH_DRIVER
STM32F4XX
USE_ULPI_PHY
USB_OTG_FS_CORE
USE_USB_OTG_FS

bei den drei
USE_ULPI_PHY
USB_OTG_FS_CORE
USE_USB_OTG_FS
weis ich nicht was sie tun. weis das jemand von euch?

Sobald ich den USB Stecker in meinen PC einführe, erscheint folgende 
Meldung( Anhang) was kann ich nun tun ??

Bitte helft mir.

von Moritz M. (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

also ich hab es unter CoIDE so gemacht:

1.) den Ordner usb_cdc aus dem Projekt [CoIDE]_USB_CDC_Example von oben 
in mein Projekt kopiert
2.) dann einen Ordner STM32F4Discovery im Projekt anlegen und da die 
Ordner Libraries/inc und Libraries/src rein kopiert (auch aus dem 
Projekt von oben)
3.) dann die usb_cdc_vcp.h eingebunden
4.) zu den Include-Pathes der IDE folgende hinzugefügt:
4a.) usb_cdc/cdc
4b.) usb_cdc/stm32_usb_device_library/class/cdc/inc
4c.) usb_cdc/stm32_usb_device_library/core/inc
4d.) usb_cdc/stm32_usb_otg_driver/inc
4e.) stm32f4discovery/inc
5.) dann den Code in main geschrieben.

Hoffe das hilft euch ein bisschen weiter. :)

wieso beide treiber installiert? wenn du win 7 64bit hast reicht doch 
der 64bit treiber. der IDE dürfte das egal sein.

Moritz

von Kerstin (Gast)


Lesenswert?

DSanbke werde ich gleich ausprobieren. Hast du das Discovery Board an 
dem USB Betrieben oder mit einem externen Netzteil versorgt.

lg

von Moritz M. (Gast)


Lesenswert?

Hallo,

ich hab das Discovery Board über USB versorgt (Mini USB zum Debuggen).

Moritz

von Kerstin (Gast)


Lesenswert?

Hi Danke Dir, nun läuft alles (USB) mit dem CooCox
nun hab ich den adc eingebunden die toolchain eingestellt und bekomme 
soclh eine Fehlermeldung nach dem build?

GCC HOME: C:\Program Files (x86)\GNU Tools ARM Embedded\4.7 2012q4\bin
compile:
    [mkdir] Skipping 
D:\Kerstin\Desktop\USB_VCP_01.02_13\USB_VCP\USB_VCP\Debug\bin because it 
already exists.
    [mkdir] Skipping 
D:\Kerstin\Desktop\USB_VCP_01.02_13\USB_VCP\USB_VCP\Debug\obj because it 
already exists.

BUILD FAILED
Output filename conflict: stm32f4xx_rcc.o would be produced from 
D:\Kerstin\Desktop\USB_VCP_01.02_13\USB_VCP\cmsis_lib\source\stm32f4xx_r 
cc.c  and stm32f4xx_rcc.c
Total time: 0 seconds


Was kann ich da tun? Hab die aktuelle Version 1.7.0

von Moritz M. (Gast)


Lesenswert?

Hallo,

hast du vllt. in der CoIDE unter Responsibility die Lib RCC eingebunden? 
Nimm die da mal raus, dann sollte es funktionieren. Die kommplete Stdlib 
hab ich in mein Projekt reinkopiert.

Moritz

von Kerstin (Gast)


Lesenswert?

Hmm wie funktioniert das?

von Moritz M. (Gast)


Lesenswert?

Hallo,

unter View -> Repository. Da sollten nur zwei Häkchen sein bei CMSIS 
BOOT und M4 CMSIS Core, weil sonst die Std-Lib zweimal eingebunden wird.

Moritz

von Kerstin (Gast)


Lesenswert?

Hi hab die RCC deswegen da drinnen weil ich noch die GPIO und die ADC 
eingehakt habe.

wenn ich alle unter ST periphal libs raushänge gibt es Linkerfehler?

von Moritz M. (Gast)


Lesenswert?

Hallo,

die STM32F4 Std-Lib habe ich komplett in das Projekt reinkopiert. Das 
ist der Ordner STM32F4xx_StdPeriph_Driver. Wenn mann jetzt noch dazu 
unter Repository RCC, GPIO und ADC auswählt dann sind die Dateien 
doppelt vorhanden und es gibt den Fehler.
Wenn du die Häkchen wieder weg machst musst du unter Configuration -> 
Compile -> Defined Symbols das Symbmbol USE_STDPERIPH_DRIVER wieder 
hinzufügen, da die CoIDE das entfernt.

Moritz

von Kerstin (Gast)


Lesenswert?

Vielen Lieben Dank ;-) Es läuft nun ;-)
prima!

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.