Forum: Mikrocontroller und Digitale Elektronik USB Enumeration schlägt fehl bei STM32F103


von Christoph B. (christophbudelmann) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hallo,

ich versuche gerade die STM32-USB-Firmware-Bibliothek auf einem 
Olimex-Board (P103) zum Laufen zu bringen, doch die Enumeration schlägt 
fehl. Ich arbeite mit Codesourcery Lite und habe ein Beispiel-Projekt 
von Martin Thomas auf die neueste Standard-Firmware-Bibliothek 
angepasst. Aus dieser Bibliothek bekomme ich auch alle Beispiele 
problemlos zum Laufen. Die USB-Bibliothek wird richtig kompiliert und 
läuft ohne Fehlermeldungen durch, aber nach dem Flashen und Anstecken 
des USB-Kabels meldet Windows nur ein unbekanntes Gerät.

Die USB-Bibliothek selber habe ich (fast) nicht verändert, ich habe nur 
den Pin für die Aktivierung des 1K5-Pull-Ups an D+ entsprechend geändert 
für das Olimex-Board. Der Rest sollte unabhängig von der Hardware bzw. 
identisch mit den anderen Entwicklungsboards sein (z.B. 8MHz Quarz), für 
die die Beispiele eigentlich geschrieben worden sind.

Im Anhang findet sich der komplette Trace nach Einstecken des USB-Kabels 
des Olimex-Boards. Das Board reagiert scheinbar überhaupt nicht. 
Dementsprechend sind die Vendor und Product ID danach auch 0 und es 
können keine Treiber geladen werden.

Das Problem klingt genau nachdem, was bereits im Forum von STM 
durchgekaut wurde:

http://www.stm32circle.com/forum/viewtopic.php?id=239

Einige andere scheinen ebenfalls noch diese Probleme zu haben, nur 
nirgendwo findet man eine Antwort.

Vielleicht weiß ja hier noch jemand Rat, ich danke schonmal für jede 
konstruktive Antwort.

von Christoph B. (christophbudelmann) Benutzerseite


Angehängte Dateien:

Lesenswert?

Im ersten Posting habe ich den falschen Screenshot erwischt, das war der 
Trace des Hubs. Im angehängten richtigen Screenshot sieht man, dass 
wirklich nur immer 0x0000 vom STM32F103 zurückkommen. Da das Programm 
läuft, kann eigentlich wirklich nur die Interrupt-Routine nicht 
aufgerufen werden...

von Ralf H. (Firma: rahand.eu) (ralfh)


Lesenswert?

Schau erst mal mit einer LED, ob es wirklich der Interrupt (welcher 
überhaupt?) ist.

von Christoph B. (christophbudelmann) Benutzerseite


Lesenswert?

Ralf H. schrieb:
> Schau erst mal mit einer LED, ob es wirklich der Interrupt (welcher
> überhaupt?) ist.

Der USB-Low-Priority-Interrupt. Das mit der LED hatte ich mangels JTAG 
genauso getestet, um festzustellen, ob der Interrupt aufgerufen wird. 
Dies war aber nicht der Fall.

Inzwischen habe ich aber den Fehler, ich hatte den falschen 
Start-Up-Code. Das Beispiel von Martin Thomas benutzt die Version 1 der 
Bibliothek, ich habe aber die aktuelle dritte Version eingebunden und 
übersehen, dass sich der Start-Up-Code verändert hat.

Jetzt funktioniert alles.

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.