Forum: Mikrocontroller und Digitale Elektronik STM32 wird über USB nicht erkannt


von Moot S. (mootseeker)


Angehängte Dateien:

Lesenswert?

Hallo Zusammen,

ich versuche momentan als kleines neben Projekt einen STM32l073 
anzusteuern.
Soweit so gut, nun habe ich aber bei der USB-Schnittstelle folgendes 
Problem:

Wenn ich das USB-Kabel anschliesse (in diesem Fall ein USB-C Kabel), 
plopt auf dem PC folgende Meldung: USB-Gerät wurde nicht erkannt.

Im Anhang habe ich euch ein Bild der Schaltung hinterlegt. Firmware 
technisch habe ich im CubeMx die USB Schnittstelle aktiviert und unter 
Middleware bei USB_DEVICE habe ich als Klasse "Communication Device 
Class (Virtual Port Com) ausgewählt. Dabei habe ich keine Einstellungen 
verändert, da meines Wissensnach müsste dies so Funktionieren. Auch in 
der Firmware habe ich noch keinen Code programmiert, sondern nur den vor 
generierten Code kompiliert.

Meine erste Vermutung war, dass die ESD Diode verkehrt eingelötet wurde. 
Diese scheint aber korrekt zu sein, auch die Spannungen sehen in Ordnung 
aus (5.1V VBUS).

Hat jemand eine Idee wo hier das Problem sein könnte?

von Stefan F. (Gast)


Lesenswert?

Der L073 hat einen internen Pull-Up Widerstand. Wenn du den zusammen mit 
dem externen einschaltest (was die Cube HAL tut), hast du einen zu viel.

Eventuell hast du die "Clock Configuration" vergessen. Vergleiche mal 
deine Einstellung in CubeMx mit meinen: 
http://stefanfrings.de/stm32/stm32l0.html#vcphal

Alternativ kannst du einfach mal mein Projekt aus dem Kapitel darunter 
flashen. Wenn das auch nicht läuft, liegt wahrscheinlich ein 
Hardwarefehler vor.

Zur USB-Buchse kann ich nichts sagen, damit habe ich keine Erfahrung.

von Moot S. (mootseeker)


Lesenswert?

Stefan ⛄ F. schrieb:
> Der L073 hat einen internen Pull-Up Widerstand. Wenn du den zusammen mit
> dem externen einschaltest (was die Cube HAL tut), hast du einen zu viel.
>
> Eventuell hast du die "Clock Configuration" vergessen. Vergleiche mal
> deine Einstellung in CubeMx mit meinen:
> http://stefanfrings.de/stm32/stm32l0.html#vcphal
>
> Alternativ kannst du einfach mal mein Projekt aus dem Kapitel darunter
> flashen. Wenn das auch nicht läuft, liegt wahrscheinlich ein
> Hardwarefehler vor.
>
> Zur USB-Buchse kann ich nichts sagen, damit habe ich keine Erfahrung.

Vielen Dank für deine Antwort, ich werde mal versuchen den Widestand 
auszulöten und vergleiche die CLK mit deinem Beispiel.

Ich melde mich dann weider mit neuen erkenntnissen!

von Moot S. (mootseeker)


Lesenswert?

Ich hatte gestern und heute noch folgende Punkte versucht:

- Den Widerstand am D+ habe ich ausgelötet.
- Die Clock Konfiguration habe ich kontrolliert, diese ist Standard 
mässig auf 48MHz eingestellt.
- Dann habe ich auch noch das Beispiel getestet:
> Alternativ kannst du einfach mal mein Projekt aus dem Kapitel darunter
> flashen. Wenn das auch nicht läuft, liegt wahrscheinlich ein
> Hardwarefehler vor.

Das hat auch nicht funktioniert, somit muss es ein Hardware Fehler sein. 
Ich vermute, dass es an der Buchse liegen muss.

Naja ich werde da mal das Pinout kontrollieren und melde mich wieder, 
falls ich etwas finden würde.

von 123 (Gast)


Lesenswert?

Hast du die möglichkeit D+ / D- zu messen? OK 480Mhz sind etwas viel, 
man kann ja mal fragen.

Alternativ hast du ggf einen ganz ganz alten usb FS hub? Dann wären das 
nur noch 12Mhz, ...

Das dan zu interpretieren ist dann och was anderes, ... ohne analyser, 
.. wobei ich glaube pico scops können das.

Kontrollier noch mal die Frequenzen, für HS (480Mhz) ist meist ein 
externer quarz notwendig.

von Moot S. (mootseeker)


Lesenswert?

Ich habe den Fehler gefunden.

Das Problem liegt bei der ESD Diode. Ich habe sie zwar korrekt 
eingelötet aber irgendwie Funktioniert das nicht.
Wenn ich die Diode entferne und mit Draht überbrücke, wird der STM32 
sofort erkannt und es erscheint auf dem PC sofort die Meldung COM5 
einsatzbereit.

von mr. mo (Gast)


Lesenswert?

Bist du ein Full-Speed oder Low-Speed Device? Laut datenblatt Seite 4 
ist das ein unterschied bei der Wahl wo du D+ und D- an dem Bauteil 
anschließt.

Die Begründung mit dem internen Pull-up Rpu steht im Text.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

mr. mo schrieb:
> Die Begründung mit dem internen Pull-up Rpu steht im Text.
Dank dieses in der STF202 integrierten Rpu von Pin 3 nach Pin 1 haben 
jetzt sowohl USP_D_P (R900) wie auch USB_D_N (Rpu) einen Pullup. Kein 
Wunder kann der Host damit nichts anfangen...

EDIT: deshalb ist es beim Zeichnen der Schaltplansymbole immer gut, wenn 
sie nicht nur viereckige Kästen mit Nummern sind, sondern eben auch 
symbolisch den Inhalt darstellen.

: Bearbeitet durch Moderator
von Moot S. (mootseeker)


Lesenswert?

mr. mo schrieb:
> Bist du ein Full-Speed oder Low-Speed Device? Laut datenblatt Seite 4
> ist das ein unterschied bei der Wahl wo du D+ und D- an dem Bauteil
> anschließt.
>
> Die Begründung mit dem internen Pull-up Rpu steht im Text.

Danke für den Tipp das habe ich nun auch gesehen. In meinem Fall bin ich 
ein Fullspeed device.

> Dank dieses in der STF202 integrierten Rpu von Pin 3 nach Pin 1 haben
> jetzt sowohl USP_D_P (R900) wie auch USB_D_N (Rpu) einen Pullup. Kein
> Wunder kann der Host damit nichts anfangen...

Also wenn ich das nun richtig verstanden habe, sind am D+ Pin nun 3x 
Pullups:
- Intern im MCU
- R900
- Intern im STF202

Ich werde mich mal nach einer anderen ESD-Diode umsehen, welche keinen 
internen Pullups hat.

von 123 (Gast)


Lesenswert?

Du hast da was überlesen, der Pull Up vom STF202  ist zwichen Pin 1 und 
3, somit laut deinem stromlaufplan an D- , ...

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.