Forum: Mikrocontroller und Digitale Elektronik STM32F407 kein TX_EN Signal am MII


von Felix W. (f_elix_w)


Angehängte Dateien:

Lesenswert?

Moin,
habe einen STM32F407VET6 ganz nach anerkannten Regeln der Technik mit 
einem LAN9303 verbandelt, funktioniert auch alles soweit. Jedoch nach 
einigen Stunden Betriebszeit fängt das TX_EN Signal ausgehend vom STM32 
an zu schwächeln, sodass der STM32 irgendwann nicht mehr mit dem 
Internet kommunizieren kann.
Kennt jemand so ein Phänomen?
MII hat 68 Ohm Traces,
Sonst sind alle anderen Funktionen beim STM32, soweit ich das getestet 
habe, intakt.

von M. Н. (Gast)


Lesenswert?

Es geht also am Anfang und hört dann auf?
Schönes Phänomen.

Mehrere Möglichkeiten:

Kaputter Code: Irgendwann wird durch einen Programmierfehler der Pin 
umkonfiguriert

Chip-Schaden: ESD Schlag o.ä. hat die Pinstruktur angeknackst und über 
Temperatur setzt er dann irgendwann aus.

Wenn das Problem auftritt, ist der Fehler dann nach einem Reset (ohne 
Power-Cycle) wieder weg, oder musst du den Chip länger ausschalten?

Hast du mal mit dem Debugger einen Registerdump der MAC und des GPIO 
Ports gemacht, sobald der Fehler auftritt?

Hört die Kommunikation schlagartig auf, oder nimmt die Signalqualität 
des TXEN Signals mit der Zeit ab? (Oszilloskop Aufnahme vor und nach 
Fehler)

Felix W. schrieb:
> schwächeln
 Was heißt schwächeln?

Ich hatte einmal etwas ganz ähnliches auf einer selbst gelöteten 
Platine: Der Pin am STM (TQFP100) sah 1a gelötet aus. Aber aus 
irgendeinem Grund war zwar Zinn am Beinchen und auf dem Pad, aber es 
hatte keinen Kontakt. Sobald dann die Platine warm wurde, war die 
Verbindung schlagartig offen.

von Felix W. (f_elix_w)


Angehängte Dateien:

Lesenswert?

Wenn der Chip mehrere Stunden ausgeschaltet war, läuft er für wenige 
Minuten wieder.
Bisher hatte es den Eindruck gemacht, als würde das Signal TX_EN einfach 
seltener kommen, werde das aber nochmal checken.
Den kaputten Code kann ich ausschließen, da der Chip nur die nötigste 
Programmierung bekommen hat.
Die Register und Ports versuche ich mit den Debugging Tools auszulesen, 
sobald sich ein Fenster öffnet, wo der Chip eine angenehme 
Fehlerhäufigkeit aufweist.

Hatte ähnliches Verhalten mal bei einem Netzwerk Phy. Da habe ich ihm 
Vollspeed die Register ausgelesen bis er ausgestiegen ist. Nach längerem 
liegen ging er dann wieder.

Kann es sein, dass der angehängte Code das Gerät auf Dauer überlastet?
Warm wird er nicht.

von späh kulant (Gast)


Lesenswert?

Felix W. schrieb:
> Kennt jemand so ein Phänomen?

Du zeigst Signale die mit einem Logik-Analysator aufgezeichnet
wurden. Man könnte spekulieren dass das in Frage kommende
Signal einen "analogen" Zwischenzustand angenommen haben könnte,
hervorgerufen durch einen Kampf zweier Signale die eigentlich
nichts miteinander zu tun haben sollen, sich aber zufällig
doch berühren - durch einen Platinen-Fehler (Äz-Brücke) oder
einer niederohmigen Verbindung. Auch ein (sehr) starker Pullup/
Pulldown oder ein hochohmiger Längswiderstand kann so ein
Phänomen verurachen.

von Felix W. (f_elix_w)


Lesenswert?

Gute Idee, kann ich aber soweit ausschließen. Wenn ich nämlich im Logic 
Analyzer die Vth ändere, das heisst, dass er schon bei höherem oder 
niedrigem Pegel auf 1 oder 0 springt, bleibt das Muster das selbe, kann 
hier denke ich von Digitalen Werten ausgehen 1/0.

von späh kulant (Gast)


Lesenswert?

Felix W. schrieb:
> Wenn ich nämlich im Logic
> Analyzer die Vth ändere, das heisst, dass er schon bei höherem oder
> niedrigem Pegel auf 1 oder 0 springt

Äusserst unsicher. Ich würde nie mit einem Logik-Analysator
auf analoges Signal-Verhalten schliessen.

von M. Н. (Gast)


Lesenswert?

späh kulant schrieb:
> Felix W. schrieb:
>> Wenn ich nämlich im Logic
>> Analyzer die Vth ändere, das heisst, dass er schon bei höherem oder
>> niedrigem Pegel auf 1 oder 0 springt
>
> Äusserst unsicher. Ich würde nie mit einem Logik-Analysator
> auf analoges Signal-Verhalten schliessen.

Korrekt. Nur eine Oszi-aufnahme schafft hier Abhilfe

Felix W. schrieb:
> Wenn der Chip mehrere Stunden ausgeschaltet war, läuft er für wenige
> Minuten wieder.

Das heißt ja, dass die ausgeschaltete Zeit einen Einfluss hat, was 
erstmal für ein analoges Problem sprechen würde.

Felix W. schrieb:
> Kann es sein, dass der angehängte Code das Gerät auf Dauer überlastet?
> Warm wird er nicht.

Du zeigst einen Screenshot irgendwelcher Funktionsaufrufe. Keine Ahnung, 
was die machen ;) (Ich programmiere nie mit den Libraries von ST...)

Generell ist ein STM schon dafür ausgelegt 100% Usage zu haben und 
braucht dann zwar auch gut Strom und wrd warm, aber problematisch ist 
das nicht.

Was tatsächlich immer gut warm wird (prinzipbedingt) und auch bei dir 
warm werden sollte, ist die PHY.

Kannst du den Fehler eventuell durch Kältespray/Föhn oder durch 
mechanischen Stress auf der Platine irgendwie triggern?

Alternativ die Software deaktivieren und über GPIO einfach den TX_EN Pin 
toggeln und schauen, ob das irgendwie verschwindet. Wo misst du dein 
TX_EN Signal? An der Phy, oder am Ausgang des STM?

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.