STM32F4 Discovery-Demonstration funktioniert nicht mehr

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.

STM32F4 Discovery-Evaluierungsboard

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

Geben Sie hier die Bildbeschreibung ein

Ein genauerer Blick auf pdev->dev.device_status zeigt Folgendes:

Geben Sie hier die Bildbeschreibung ein

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 vergessen, wie man eine Liste der angeschlossenen USB-Peripheriegeräte auf einem Mac erhält (Systembericht erweitert oder so ähnlich), aber es wäre eine Überprüfung wert, um zu sehen, ob es als HID-Maus erkannt und aufgelistet wird.
Es sieht so aus, als würde es nicht einmal aufzählen (was mit dem konfigurierten Status enden würde). Unter Windows erhalten Sie normalerweise einen Ton, der darauf hinweist, dass es ein Problem mit der Aufzählung gibt (dh wenn etwas erkannt wird, aber nicht aufgezählt werden kann). Ich bin mir nicht sicher, was passiert auf Macs, aber ich würde denken, es wäre ähnlich, also wird es vielleicht nicht einmal erkannt. Wie Chris vorschlägt, ist es dennoch einen Versuch wert, zu überprüfen, ob etwas in den Peripheriegeräten aufgeführt ist (kann dort auf einen fehlerhaften Status hinweisen).

Antworten (1)

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)

Gibt es eine geringe Möglichkeit, dass ich Ihnen die Binärdateien schicken kann, um sie an Ihrer Entdeckung auszuprobieren?
@josef.van.niekerk - ja, schick sie an die E-Mail in meinem Profil. Ich werde mein Bestes tun, um sie mir später anzusehen, wenn ich ungefähr eine halbe Stunde Zeit habe (irgendwann heute Abend, britische Zeit).
Danke Oli! Ich teste jetzt die Stifte, aber es ist, wie Sie sagten, verdammt schwierig, die Sonde dort hineinzubekommen.
Nicht, wenn es ein sehr niedriger Widerstand ist (z. B. < 10 Ohm), nein. Normalerweise (und gemäß dem Schema im Benutzerhandbuch - S. 34) ist die Steckerabschirmung mit GND (Pin 5 im Micro AB) verbunden. Dies klingt jedoch unwahrscheinlich, als ob Sie einen Kurzschluss hatten (entweder der Programmierer oder der PC ) sollte sich über Überstrom-/Spannungsprobleme beschweren, und die Demo würde überhaupt nicht funktionieren, also überprüfen Sie es gründlich.
Stecken Sie das CN5-USB-Kabel ein, die Betriebsanzeige leuchtet auf, sodass ich zumindest weiß, dass die Vusb- und GND-Pins in Ordnung sind.
Bin ich verwirrt, ich erhalte einen 5V + Messwert von Pin 5 anstelle von Pin 1, wenn ich ein Multimeter zwischen Pin 5 und GND auf der Platine stecke? Zähle ich die Pins richtig, wenn ich in den Micro-A-USB-Anschluss auf der Platine schaue, Pin 1 ist links, ist das richtig?
Laut diesem und einigen anderen Links, die ich überprüft habe, sollte es links in einer "Standard" -Buchse sein, ja. Überprüfen Sie, in welche Richtung die Kontakte zeigen (oben oder unten), es ist wahrscheinlich ein umgekehrter Stecker. Ich werde mein Board ausgraben und auch hier nachsehen.
Ich habe gerade auf meinem Discovery-Board nachgesehen und es steht auf dem Kopf (Kontakte nach oben), also ist Pin 1 rechts. Zur doppelten Überprüfung bestätigte ich die Kontinuität zwischen dem linken Kontakt und der Masse der Platine. Ein guter Ort, um die Kontinuität für die Pins D+ und D- zu prüfen, ist eines der Pads von R58 (D-, Pin 2) und R60 (D+, Pin3) (Sie sollten sie rechts oben und rechts vom Anschluss sehen). ) Es ist schwierig, einen Draht an die Steckerkontakte zu bekommen, aber ich habe es lange genug geschafft, um die Kontinuität zu bestätigen.
CN5? Es ist das Benutzer-USB-OTG. Die Stromversorgung kommt NICHT von dort, nur von CN1 (dem Debug-USB oder einer externen Stromversorgung). Übrigens: Ich habe meine STMF4 Discovery als USB-Audio-Soundkarte. Funktioniert hervorragend auf einem PC, für nur 15,00 USD.
Interessanter Punkt. Der Schaltplan scheint zu zeigen, dass der VBUS von CN5 nur über einen STMPS2141STR-USB-Netzschalter mit dem System verbunden ist, sodass er nicht für die Stromversorgung durch CN5 ausgelegt zu sein scheint. Dies kann jedoch durch Missbrauch geschehen - der Schalter ist so spezifiziert, dass er Rückstrom blockiert, wenn er deaktiviert ist, das Datenblatt warnt jedoch davor, dass bei Aktivierung ein Rückstrom fließen kann. Wenn also die 3-V-Schiene irgendwie hoch genug für den Pullup ist, um den Schalter zu aktivieren, würde der Rückstrom fließen, der 3-V-Regler würde starten und der Zustand wäre dann selbsterhaltend, es sei denn, der stm32 treibt die Aktivierung auf niedrig.