Forum: Mikrocontroller und Digitale Elektronik STM32L151C6- Fehlercode 43 bei USB-Anmeldung an Windows10


von Julian M. (qwertzu)



Lesenswert?

Hallo,


ich muss für ein Studentenprojekt in einem STM32 Mikroconller eine 
virtuellen COM Port emulieren. Dazu habe ich bereits die Schaltung 
angefertigt und die Platine fertigen lassen, sowie den Code in den Flash 
des Mikrocontrollers geladen.

*Zu meinem Problem*:
Sobald ich meine Platine an einen Computer anschließe, gibt dieser die 
Fehlermeldung "Code 43" und "Fehler beim Anfordern einer 
Gerätebeschreibung" an. Die genauen Fehlermeldungen habe ich als PNG 
angehängt.

Ich habe vieles ausprobiert und bin mittlerweile an einem Punkt 
angekommen, an dem ich nicht mehr weiter weiß. Mein Projektbetreuer 
kennt sich leider auch nicht aus. Deswegen wäre ich für jeden Ratschlag 
und jede Erfahrung dankbar.

Ich arbeite mit dem STM32L151C6.  Den Code habe ich mit Hilfe von CubeMX 
und in Atollic True Studio geschrieben. Der Mikrocontroller wurde 
anschließend mit ST-LinkV2 geflasht. Da man mit dem ST-Link ja die 
Device-Memory ansehen kann, bin ich mir sicher, dass der Mikrocontroller 
beschrieben wurde und damit zumindest teilweise funktionsfähig ist. 
Leider finde ich im WWW auch kein Beispielprojekt, dass diesen uC 
benutzt.

Zunächst habe ich die Hardware untersucht. Die Schaltung (siehe Anhang) 
müsste aus meiner Sichtweise korrekt sein. Es kann natürlich sein, dass 
eine Hardwarekomponente defekt ist. Lohnt es sich eine neue Platine zu 
bestücken und das ganze nochmal auszuprobieren (alle Hardwareelemente 
sind vorrätig)?
Ich habe in einem Forum gelesen, dass der Mikrocontroller eine gewisse 
Zeit braucht um hochzuladen, und man den Pull-up erst nach kurzer Zeit 
einschalten soll 
[[https://electronics.stackexchange.com/questions/355981/stm32-cdc-usb-unknown-device-error-code-43]] 
. Die Pull-Ups dieses STM32 ziehen die Leitung jedoch lediglich auf ein 
paar mV (30-60kOhm Widerstände) und ich hab keine Möglichkeit eine 
Schaltung einzubauen und werde nicht an einer am Stromkreis 
angeschlossenen Platine rumlöten. Generell steh ich dieser Behauptung 
kritisch gegenüber, da ich keinerlei Informationen gefunden haben, die 
sie bestätigen würden.

Danach habe ich mich mit der Software beschäftigt. Ich arbeite unter 
Windows 10, brauche also keine zusätzlichen Treiber. Ich habe 
verschiedene Softwarekombis ausprobiert, z.B. USB als CDC, HID etc. 
konfiguriert. Ich habe meinen ganzen Code so verändert, dass nur USB, 
sowie meine äußere Betaktung (8Mhz Quarz),initialisiert werden.
Trotzdem vermute ich, dass sich der Fehler in meiner Software befindet. 
Aufgrund der "fehlenden Gerätebeschreibung" habe ich einen Fehler bei 
den VID und PID vermutet. Diese habe ich im Initalisierungscode gefunden 
und abgeändert, ohne Erfolg.

Wie gesagt wäre ich für jede Hilfe sehr dankbar. Ich hoffe ich habe alle 
wichtigen Informationen angegeben.

Liebe Grüße,
Julian

von pegel (Gast)


Lesenswert?

120 Ohm scheinen mir sehr viel.
22 oder 33 sind normal.

von pegel (Gast)


Lesenswert?

Und die 1k5 müssen auch direkt an den µC.
Könnte mir vorstellen, dass die Signale recht matschig sind.

von micha (Gast)


Angehängte Dateien:

Lesenswert?

Die 1k5 sind beim L151 auch intern vorhanden. 120 Ohm in Serie sind 
wirklich viel. Ich habe 22 Ohm.

Du könntest mal das Projekt im Anhang im Ordner 
https://github.com/libopencm3/libopencm3-examples/tree/master/examples/stm32/l1/stm32l-discovery 
entpacken. Das ist ein DFU Bootloader für den STM32L151 - damit könntest 
du evtl. die Hardware ausschliessen.

Die IOs passen u.U nicht zum angegebenen Board.

von micha (Gast)


Lesenswert?

Vergiss den Anhang von oben. Das funktioniert nicht.

Schau mal unter https://github.com/tyoshid/libopenstm32l1. Vielleicht 
ist da was brauchbares dabei.

von micha (Gast)


Angehängte Dateien:

Lesenswert?

So jetzt. Das sollte funktionieren. Sind beides Eclipse-Projekte zur 
Verwendung mit dem GNU-MCU-Eclipse-Plugin.

von Julian M. (qwertzu)


Lesenswert?

pegel schrieb:
> Und die 1k5 müssen auch direkt an den µC.
> Könnte mir vorstellen, dass die Signale recht matschig sind.

Ich habe meine Schaltung angepasst und für R7, R8 jeweils 22 Ohm benutzt 
und den Pull-Up direkt an den Pin versetzt. Ohne Erfolg. Ich habe auch 
extra nochmal eine neue Platine bestückt, um eventuelle Hardwarefehler 
auszuschließen, hat ebenfalls nichts gebracht.
Trotzdem Danke!

von M. K. (kichi)


Lesenswert?

Hast du die PLL auf 96MHz konfiguriert? Das ist nötig, damit die 
USB-Peripherie überhaupt funktionieren kann.

Julian M. schrieb:
> Leider finde ich im WWW auch kein Beispielprojekt, dass diesen uC
> benutzt.

Siehe:

micha schrieb:
> Schau mal unter https://github.com/tyoshid/libopenstm32l1.

Dort gibt es verschiedenste Beispielprojekte für den L1. Damit könntest 
zumindest herausfinden ob es an der Hardware oder an der Software liegt.

Julian M. schrieb:
> und den Pull-Up direkt an den Pin versetzt.

Der sollte nicht fest verbaut sein, sondern muss ein- und ausgeschaltet 
werden können. Löte ihn aus und nimm den internen.

: Bearbeitet durch User
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.