Ich habe vor kurzem ein STM32F4 Discovery gekauft, und als ich das Board zum ersten Mal auspackte, habe ich es an meinen Mac angeschlossen, und die bereits programmierte Demo funktionierte zu 100%. Ich konnte die blinkenden LEDs sehen, und wenn ich die Benutzertaste drückte, fungierte der Beschleunigungsmesser als Mauszeiger-Controller und bewegte den Mauszeiger auf dem Bildschirm, während ich die Platine neigte.
Ich habe Texane ST-Link und die Sourcery Codebench Lite- Toolchain verwendet, um ein paar andere Beispiele zu kompilieren, nichts Ernstes, nur einfaches, blinkendes Zeug, und alles hat gut funktioniert, als ich das Board geflasht habe.
Ich habe ein paar Wochen gebraucht, um Eclipse CDT mit der Toolchain einzurichten, es ist ein ziemlich langwieriger Prozess. Ich habe die Beispiele von ST.com heruntergeladen und die ursprüngliche Demonstration von der STM32F4 Discovery Board-Seite kompiliert. Die Kompilierung funktioniert jetzt gut, ich kann ohne Fehler bauen, aber wenn ich das Board mit der kompilierten Binärdatei flashe, scheint alles gut zu funktionieren.
Das LED-Blinky-Bit funktioniert einwandfrei, und wenn ich die Benutzertaste erneut drücke, wechselt die Platine in den Beschleunigungsmessermodus. Die Lichter blinken, wenn das Brett gekippt wird, aber dieses Mal wurde die Mauszeiger-Interaktion gestoppt, der Mauszeiger bewegt sich überhaupt nicht.
Ich habe versucht zu überprüfen, ob mein USB-Kabel beschädigt ist, habe ein anderes Kabel ausprobiert und ich habe auch einen anderen Computer ausprobiert, aber egal was ich versucht habe, ich konnte das Board nicht dazu bringen, als USB-Gerät mit der Original-Demo zu arbeiten.
Gibt es eine Möglichkeit, die ursprünglichen .hex-Dateien zum Flashen des Boards zu bekommen, um zumindest zu sehen, ob es so funktioniert, wie es aus der Box kommt. Ich schätze, wenn ich fragen darf, ob ich das Board mit der ursprünglichen Demonstration auf den Werksstandard zurücksetzen kann. Auf diese Weise kann ich die Möglichkeit ausschließen, ob die USB-Pins auf der Platine durchgebrannt sind oder etwas mit meiner Toolchain nicht stimmt.
Neue Infos
Ich habe meinen Mut zusammengenommen, um zu versuchen, die Anwendung erneut im Debug-Modus auszuführen und einen Haltepunkt festzulegen, an dem der HID-Bericht gesendet wird. Der Code ruft USBD_HID_SendReport auf, aber wie in der Abbildung unten gezeigt, wird der Block if (pdev->dev.device_status == USB_OTG_CONFIGURED) nie ausgeführt, die Funktion gibt nur USBD_OK zurück
Ein genauerer Blick auf pdev->dev.device_status zeigt Folgendes:
Der Gerätestatus ist 1, was USB_OTG_DEFAULT entspricht, was ein Wert von vier ist, der zusammen definiert ist unter:
#define USB_OTG_DEFAULT 1
#define USB_OTG_ADDRESSED 2
#define USB_OTG_CONFIGURED 3
#define USB_OTG_SUSPENDED 4
Bedeutet das jemandem etwas? Ich bin hier kein allzu großer Guru.
Ich habe auch das Discovery-Board, habe es aber nur mit Windows und der Raisonance-Toolchain verwendet (nach einem kurzen Herumspielen mit der Atollic IDE und dem eingebetteten ST-Link). Für mich klingt es jedoch nicht so, als wäre es ein Kompilier-/Plattformproblem, wenn alles andere in der Demo in Ordnung ist. Sie können jedoch versuchen, zu Ihrem ursprünglichen Setup zurückzukehren, um dies zu bestätigen.
Eine Sache, die mir bei der Verwendung aufgefallen ist, war, dass der USB-Anschluss ziemlich empfindlich ist (ich musste ein paar Mal nach wiederholtem Gebrauch ein paar USB-Mini/Mikro-Anschlüsse an meinen eigenen Prototypen umlöten).
Meine Vermutung ergibt sich aus Ihrer Beschreibung, dass es sich möglicherweise um eine schlechte Lötstelle am (Micro-) USB-Anschluss handelt - versuchen Sie, die Kontinuität an allen Stiften zu testen. Es wird schwierig sein, dort eine Sonde anzubringen, schließen Sie also ein Kabel an und prüfen Sie an der Seite des A-Anschlusses (möglicherweise müssen Sie einen dünnen Draht um Ihre Sondenspitze wickeln oder das Kabel brechen), wobei die andere Sonde an einer von beiden liegt der USB-Pins des STM32F4 oder eines Strom-/Erdungspunkts (sehen Sie im Benutzerhandbuch nach, es hat einen Schaltplan
) nicht in der Lage sein, sollten Sie in der Lage sein, eine Aktivität zu sehen)
Chris Stratton
Oli Glaser