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?
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?
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?
In der Anlage habe ich nochmal den Schaltplan des Phys gehängt. Vielleicht erkennt ja jemand noch einen Fehler?
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?! ...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.