[KSZ8031RNL + RMII + STM32F407VET6] Kein Link :(

OP #3790366
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?
Gast #3794171
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?
OP #3797388
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.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.