Forum: Mikrocontroller und Digitale Elektronik [KSZ8031RNL + RMII + STM32F407VET6] Kein Link :(


von Fabian H. (hdr)


Lesenswert?

Hallo Forum,
ich verwende an einem STM32707VET6 als Ethernet den KSZ8031RNL als Phy.

http://www.farnell.com/datasheets/1447923.pdf

Als Softwaregrundlage verwende ich den Ethernettreiber von ST, bei dem 
ich die Adresse des PHYs entsprechend angepasst habe.

Nun zeigt sich folgende Situation:
Ich kann den Phy ansprechen, die Register setzen und wieder auslesen. 
Leider meldet er immer, dass kein Link vorhanden ist. Das angeschlossene 
Notebook zeigt ebenfalls "Netzwerkkabel entfernt".

Durch Zufall hatte ich Slow Oscillator Mode aktiviert: "Slow Oscillator 
Mode
Slow Oscillator Mode is used to disconnect the input reference 
crystal/clock on XI (pin 8) and select the on-chip slow oscillator when 
the KSZ8021/31RNL device is not in use after power-up. It is enabled by 
writing a one to register 11h, bit [5]."

Dabei schaltete sich die Link LED ein, die Auto Neg. Prozess läuft durch 
und der PC sagt, dass eine Verbindung hergestellt ist. Der Phy selber 
meldet jedoch noch immer "Link down".

Dies lies mich vermuten, dass es ein Problem mit dem externen 25MHz 
Quarz gibt. Dieser schwingt aber (mit Oszi gemessen) sauber auf 25MHz. 
Auch das Referenztaktsignal von 50MHz gibt der Phy sauber an den STM32 
weiter. Also eigentlich sollte der Takt stimmen?!

Wenn ich alle Register des Phy auslese, bekomme ich die folgenden Werte:
 @00015551  [ETH     ] REG[0x00] VAL[0x00003100]
 @00015551  [ETH     ] REG[0x01] VAL[0x00007849]
 @00015551  [ETH     ] REG[0x02] VAL[0x00000022]
 @00015551  [ETH     ] REG[0x03] VAL[0x00001556]
 @00015551  [ETH     ] REG[0x04] VAL[0x000001E1]
 @00015551  [ETH     ] REG[0x05] VAL[0x00000000]
 @00015551  [ETH     ] REG[0x06] VAL[0x00000004]
 @00015553  [ETH     ] REG[0x07] VAL[0x00002001]
 @00015558  [ETH     ] REG[0x08] VAL[0x00000000]
 @00015564  [ETH     ] REG[0x09] VAL[0x00000000]
 @00015569  [ETH     ] REG[0x0A] VAL[0x00000000]
 @00015574  [ETH     ] REG[0x0B] VAL[0x00000000]
 @00015579  [ETH     ] REG[0x0C] VAL[0x00000000]
 @00015584  [ETH     ] REG[0x0D] VAL[0x00000000]
 @00015589  [ETH     ] REG[0x0E] VAL[0x00000000]
 @00015594  [ETH     ] REG[0x0F] VAL[0x00000000]
 @00015599  [ETH     ] REG[0x10] VAL[0x00000000]
 @00015605  [ETH     ] REG[0x11] VAL[0x00000000]
 @00015610  [ETH     ] REG[0x12] VAL[0x00000000]
 @00015615  [ETH     ] REG[0x13] VAL[0x00000000]
 @00015620  [ETH     ] REG[0x14] VAL[0x00000000]
 @00015625  [ETH     ] REG[0x15] VAL[0x00000000]
 @00015630  [ETH     ] REG[0x16] VAL[0x00000002]
 @00015635  [ETH     ] REG[0x17] VAL[0x00000402]
 @00015640  [ETH     ] REG[0x18] VAL[0x00000800]
 @00015646  [ETH     ] REG[0x19] VAL[0x00007777]
 @00015651  [ETH     ] REG[0x1A] VAL[0x00007777]
 @00015656  [ETH     ] REG[0x1B] VAL[0x00000000]
 @00015661  [ETH     ] REG[0x1C] VAL[0x00000000]
 @00015666  [ETH     ] REG[0x1D] VAL[0x00000000]
 @00015671  [ETH     ] REG[0x1E] VAL[0x00000010]
 @00015676  [ETH     ] REG[0x1F] VAL[0x00008100]

Hat jemand einen Tipp für mich, was ich falsch mache oder in welche 
Richtung ich noch suchen könnte?

von Fabian H. (Gast)


Lesenswert?

Müsste der Phy bereits von sich aus einen Link aufbauen, wenn er keine 
Verbindung zum ST hätte? Oder ist immer ein Softreset nach dem PowerOn 
notwendig?

von Fabian (Gast)


Lesenswert?

Ich habe mich geirrt. Mit dem Flag schalte ich gar nicht den Slow 
Oscillator Mode ein (dieser würde in Reg 0x11 liegen)
Ich setze aber ein Bit im Register 0x12, welches laut Datenblatt 
reserviert ist.
Außerdem habe ich festgestellt, dass die TX Leitung zwischen MagJack und 
Phy verpolt war. Dies habe ich nun korrigiert. Leider bekomme ich unter 
normalen Umständen nun noch immer keinen Link hin.
Wenn ich das mysteriöse Flag in Register 0x12 jedoch setze, baut sich 
der Link auf und es scheint so, als ob ich auch Daten aus dem Netz 
empfange...
Aber was verbirgt sich hinter dem Register? - Wieso scheint es mit dem 
gesetzten Bit zu funktionieren?! - Warum funktioniert es nicht wie bei 
allen anderen auch?

von Fabian H. (hdr)


Angehängte Dateien:

Lesenswert?

In der Anlage habe ich nochmal den Schaltplan des Phys gehängt. 
Vielleicht erkennt ja jemand noch einen Fehler?

von Fabian H. (hdr)


Lesenswert?

Ein Fehler habe ich selbst gerade noch gefunden. R402 müssen 2.2µ statt 
22µ sein. Evtl. kommt der interne 1.2V Regler da nicht mit klar, aber ob 
das wirklich der entscheidende Grund ist?! ...

von Fabian (Gast)


Lesenswert?

Nein, war leider auch nicht der Grund :(

von Fabian H. (hdr)


Lesenswert?

HEUREKA!

Nun habe ich den Fehler. Als ich nicht weitergekommen bin, habe ich den 
Cable-Diagnostic Mode aktiviert. Der meldet als Resultat "Cable-Short 
Ciruit / Distance < 1m".
Das Kabel ist ok, also muss es am Phy <> MagJack liegen. Den also 
durchgemessen. Und tataaa: Dieser blöde MagJack hat nicht die 
Standardbelegung (1,2,3,6) sondern verwendet für RX Pin 7, 8.

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.