stm32cube und USB

Gast #4448705
Lesenswert?

Hallo zusammen,

ich versuche vergeblich, eine USB Verbindung mit meinem stm32f205 
aufzubauen. Was mache ich falsch?

Mein Schaltplan (eigenes Board): siehe Anhang "HW_USB.png".
Meine Konfiguration in CubeMX: siehe Anhang "CubeMX_USB.png"

In dem von CubeMX erzeugten Projekt (ich benutze Keil) habe ich sonst 
nichts verändert. Ich habe einfach nur auf "Rebuild" geklickt (lief ohne 
Fehlermeldungen durch) und das Projekt anschließend geflasht (ebenfalls 
fehlerfrei). Natürlich macht das Projekt nichts (kein Inhalt), aber ich 
hatte erwartet, dass wenigstens eine Verbindung zum Host erfolgreich 
aufgebaut wird.

Stattdessen meldet der Host (Win 7, Treiber 
[STM32_USB-Host-Device-Lib_V2.2.0] von STM sind installiert):
"USB Gerät wurde nicht erkannt"

(VID und PID werden zu "0000" angegeben)


Warum funktioniert das nicht? Ich habe CubeMX so verstanden, dass es für 
"Doofe" ist. Also habe ich das Tool ganz "doof" bedient - aber nichts 
funktioniert. Jetzt bin ich seit mehreren Stunden auf Fehlersuche und 
grabe mich in die Details ein... wenn ich das machen muss, brauche ich 
dann aber irgendwann kein CubeMX mehr.

Oder liegt mein Fehler in der Hardware? Habt ihr eine Idee?
Angehängte Dateien:
#4448732
Lesenswert?

MeinerEiner schrieb:
> Stattdessen meldet der Host (Win 7, Treiber
> [STM32_USB-Host-Device-Lib_V2.2.0] von STM sind installiert):
> "USB Gerät wurde nicht erkannt"

Welcher Fehlercode kommt?

MeinerEiner schrieb:
> (VID und PID werden zu "0000" angegeben)

Was steht im Device Deskriptor drin? VID und PID muss man normalwerweise 
für eigene Projekte anpassen.

Übrigens sieht Dein USB Anschluss verdächtig aus, als ob VBUS und GND 
vertauscht sind. Mess da mal nach.
#4448776
Lesenswert?

Jim M. schrieb:
> Was steht im Device Deskriptor drin? VID und PID muss man normalwerweise
> für eigene Projekte anpassen.

Kommt drauf an welche Klasse in CubeMX ausgewählt wurde. Bei den 
Standardklassen (CDC, HID, DFU, etc) gibt CubeMX STs VID und 
entsprechende PIDs vor.

@TO:
Was ist in CubeMX unter Pinout ausgewählt und was unter Configuration 
(unter Middlewares, USB)? In der Default-Einstellung ist die USB-Klasse 
ausgeschaltet...
Was ist in Pinout, Peripherals, USB_OTG_FS für ein Modus ausgewählt? 
Device only, Host, OTG?
Gast #4448787
Lesenswert?

Jim M. schrieb:
> Welcher Fehlercode kommt?

Wie finde ich den heraus? Es kommt halt die oben beschriebene 
Fehlermeldung und mein STM32 Board wird unter den angeschlossenen 
Geräten als "unknown device" gelistet.



Jim M. schrieb:
> Was steht im Device Deskriptor drin?

Ich habe die Vorgabe von STM drin gelassen: VID = 1155 und PID = 22336.



Jim M. schrieb:
> Übrigens sieht Dein USB Anschluss verdächtig aus, als ob VBUS und GND
> vertauscht sind.

Laut Datenblatt des USBLC6-2 ist Pin 2 = GND und Pin 5 = VBus. So habe 
ich es auch beschaltet und es sollte daher passen. Oder wie meinst Du 
Deinen Hinweis?
Gast #4448813
Lesenswert?

Arc N. schrieb:
> Was ist in CubeMX unter Pinout ausgewählt und was unter Configuration
> (unter Middlewares, USB)?

Die Einstellungen unter Pinout habe ich angehängt. Unter 
Middlewares->USB finde ich kein Pinning, aber falls Du das unter 
Connectivity->USB_FS meinst: das passt zu dem unter Pinout (siehe 
Eröffnungspost).



Arc N. schrieb:
> Was ist in Pinout, Peripherals, USB_OTG_FS für ein Modus ausgewählt?
> Device only, Host, OTG?

Device_only.


Sollte alles passen, oder? Hmm... Das Board selbst läuft übrigens 
natürlich auch ("Hello World" funktioniert).
Angehängte Dateien:
#4448884
Lesenswert?

MeinerEiner schrieb:
> Sollte alles passen, oder? Hmm... Das Board selbst läuft übrigens
> natürlich auch ("Hello World" funktioniert).

Sieht passend aus

Jim M. schrieb:
> Übrigens sieht Dein USB Anschluss verdächtig aus, als ob VBUS und GND
> vertauscht sind.

Könnte der Fehler sein...
PA12 = D+
PA11 = D-

Usb:
1 = VBUS, 2 = D-, 3 = D+, 4 = ID, 5 = GND
bzw.
1 = VBUS, 2 = D-, 3 = D+, 4 = GND

Andere Fehlerquelle: Passt der externe Takt bzw. falls Quarz, schwingt 
der an
Gast #4448894
Lesenswert?

Christoph S. schrieb:
> Die alte USB-Lib der Standard Peripheral Library benötigte mindestends
> 0x2000 Stack und 0x4000 Heap, wird bei CubeMX das selbe sein.

Ah ja, guter Hinweis, danke! Ich hab beides auf 0x4000 erhöht. Leider 
funktioniert es aber immer noch nicht.



Arc N. schrieb:
> 1 = VBUS, 2 = D-, 3 = D+, 4 = GND

Ach so. Das ist einfach eine Jumperleiste, an der ich mein USB-Kabel 
angelötet habe. Am USB-Steckverbinder, der in den Host gesteckt wird, 
stimmt die Verkabelung. Dennoch danke für den Hinweis.
#4450919
Lesenswert?

MeinerEiner schrieb:
> Device_only.

Mit dem USBLC6-2 hatte ich auch mal so meine Probleme.
Ich fand dann im Netz diese für mich nachvollziehbare Erklaerung:

USBLC6-4 and USBLC6-2 are wrong options for USB Device protection.
These parts are good for Host downstream port protection, but never use 
them for Device upstream port protection.

TVS diodes array which has "high-side" diodes, like PRTR5V0U2X, USBLC6-4 
and USBLC6-2 are good for USB host port.
But this array causes trouble described by the OP on USB device and OTG 
ports.

Edit: Soweit ich mich erinnere (liegt schon ein paar Jahre zurück),  war 
mein Problem aber nicht die USB-Anbindung an sich, sondern ich konnte 
wegen des USBLC6-2 das Aus- und wieder Einstecken nicht erkennen und 
musste in Software pollen.
Gast #4477690
Lesenswert?

Okay, nach einer langen Odyssee hat sich herausgestellt, dass Cube den 
Takt falsch eingestellt hat.

Eigentlich war er gar nicht falsch, denn die 48 MHz Domain für USB wurde 
schon mit der richtigen Frequenz getaktet. Aber scheinbar mochte der 
Controller die PLL Kombination nicht. Möglicherweise steht das sogar 
irgendwo in den Tiefen des Datenblatts, nur habe ich das natürlich nicht 
gelesen, da Cube ja alles automatisch einstellt. Oder auch nicht. 
Jedenfalls frage ich mich, was Cube mir bringt, wenn ich am Ende ein 
Vielfaches ins Debugging investiere, als was ich fürs selbst 
programmieren gebraucht hätte.

So wie im Anhang gezeigt funktioniert es übrigens.
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren