Hallo,
nachdem ich bisher nur Erfahrung mit RS232 habe, möchte ich nun einen
Schritt weiter gehen und mich an die Kommunikation über USB wagen. Ich
würde nun also sehr gerne Daten von meinem Olimex STM32-P103 Board
mittels Virtual Com auf den PC übertragen. Bevor ich anfange, mich in
irgendwelchen Details zu verlaufen, wollte ich als erstes mal schauen,
dass ich ein Demoprojekt zum Laufen bekomme.
Ich hab mir daraufhin folgenden Sourcecode [1] heruntergeladen. Wenn ich
das richtig verstanden habe, dann sollte es ja reichen, wenn ich in der
Datei hw_config.h folgende Zeilen auf meine Bedürfnisse anpasse (der
Rest ist ja hardwareunabhängig):
1 | #define USB_CONNECT GPIOC
|
2 | #define USB_CONNECT_PIN GPIO_Pin_14
|
3 | #define RCC_APB2Periph_GPIO_CONNECT RCC_APB2Periph_GPIOC
|
Das Problem ist, wenn ich die Software auf den uC flashe, dann tut sich
erstmal gar nichts. Eigentlich hätte ich ja erwartet, dass Windows nach
dem Flashen des Mikrocontrollers ein neues USB-Device findet und mich
auffordert einen Treiber zu installieren. Doch da tut sich wie gesagt
überhaupt nichts.
Um den Fehler einzugrenzen, hab ich daraufhin erstmal den Debugger
angeschmissen. Ich bin ich dann draufgekommen, dass das Programm in
folgender Zeile (in main-usb.c) festhängt:
1 | if ((count_out != 0) && (bDeviceState == CONFIGURED))
|
Ich hab mich mittlerweile schon stundenlang durch den Sourcecode
gekämpft und versucht den Fehler weiter einzugrenzen, aber ich komme
einfach auf keinen grünen Zweig. Wie man [1] entnehmen kann, funtioniert
das Demoprogramm auf dem STM32 Eval-Board von ST ja. Die Frage, die ich
mir jetzt stelle, ist: Warum funktioniert das Demoprogramm auf dem
Eval-Board von ST aber nicht auf dem Board von Olimex? Meine Vermutung
wäre, dass Olimex den USB Connect/Disconnect irgendwie anders handhabt,
als das Eval-Board von ST. Ich hab mir daraufhin auch schon mal die
beiden Schaltpläne ([2] und [3]) angesehen, um zu untersuchen ob die
sich vielleicht bezüglich der USB Anbindung irgendwie unterscheiden.
Konnte da aber auch keine großen Unterschiede feststellen.
Langsam gehen mir nun echt die Ideen aus...
Hat von euch vielleicht jemand einen Tipp?
[1] http://www.mikrocontroller.net/articles/STM32_USB-FS-Device_Lib
[2]
https://www.olimex.com/Products/ARM/ST/STM32-P103/resources/STM32-P103-sch.gif
[3] http://it.mouser.com/pdfdocs/stm3210beval.pdf