Hi zusammen.
Ich hab hier eine Schaltung mit einem KSZ8873 (Embedded-Switch mit einem
PHY und zwei MACs). Anschlossen sind Port 2 (mit Magjack) und Port 3
(mit MII an einen anderen Controller). Der Controller an Port 3 ist per
Piggy-Board verbunden und für die Tests nicht aktiv, also ist eigentlich
nur Port 2 angeschlossen.
An Port 2 hängt mein Notebook, eben über den Magjack. Beim Einstecken
hab ich einen Link, Windows mosert natürlich dass es kein Internet
findet, aber der LInk ist da. Nach wenigen Sekunden krieg ich die
Meldung, dass das Netzwerkkabel entfernt wurde, wurde es natürlich
nicht. Nach ein paar weiteren Sekunden ist der link wieder da, und das
Spiel beginnt von vorn.
Konfiguration per bootstraps, ich hab einen pulldown an Pin 27 für Link
an Port 3, einen an LED1 (Pin 63) für I2C slave und einen am SMRXDV3
(Pin 28) für MAC-Mode an Port 3.
Diese config funktioniert auf einem anderen Board.
Der 25MHz Quarz feuert vor sich hin, ich hab keine Unterbrechungen zum
Magjack (~1 Ohm zwischen den differentiellen Pärchen). Spannungen stehen
astrein bei 3,3V bzw 1,8V.
Wenn ich nur meinen PC am Switch habe und alle anderen Ports nicht
verbunden sind, darf der PC doch nicht erkennen dass das Kabel abgezogen
wurde? Den KSZ habe ich schon getauscht, Problem bleibt bestehen.
Problem verändert sich auch nicht, wenn ich das MII an Port 3 verbinde.
Was könnte da das Problem sein? Wie würdet ihr vorgehen?
Ich würde als erstes mal probieren ob das Problem nur mit Deinem PC
auftritt, oder auch mit anderen Ethernet-Endgeräten. Also ein anderer
PC, ein paar Switche etc.
Die beiden gängigen Probleme bei Ethernet sind meiner Erfahrung nach ein
unsauberer oder falscher Takt und eine unsaubere Spannung für den PHY.
Ich hab mir jetzt das Datenblatt von Deinem KSZ nicht angeschaut. Kannst
Du Dir da die Clock auf einem Pin ausgeben lassen, z.B. als REF_CLK für
RMII? Die dann mit einem Spekki auf Jitter und Einhalten der 25/50 MHz
untersuchen. Am Quarz selbst kannst Du nicht messen, denn durch den
Tastkopf verfälschst Du das Signal zu stark.
Für die Spannung wäre eine Rauschmessung auf den für den analogen Teil
des PHYs verwendeten Versorgungsspannungen angesagt. Oszi mit
LV-Differenztastkopf oder True-RMS-Voltmeter sind dafür gut geeignet
(z.B. HP 3400A/B), zur Not Oszi mit 2 Tastköpfen und per Math-Funktion
die Differenz bilden.
Wenn das alles nichts hilft, musst Du Dir das rohe Signal mit dem Oszi
anschauen wie es über die Leitung geht. Auswerten müsste das entweder
Dein Oszi, oder eine externe Software. Für letzteres siehe z.B. hier:
https://github.com/azonenberg/scopehal-apps
Zunächst ist der KSZ8873MLL* ein Switch mit 3 MACs und 2 PHYs.
Wenn dessen MAC 3 per MII an einem MAC eines anderen Systems (z. B. µC)
angeschlossen ist, sollte hierfür bevorzugt der PHY-Mode des KSZ8873M
verwendet werden (MII laut Datenblatt angeschlossen).
Der Switch verhält sich dann an seinem Port 3 für den µC wie ein PHY.
Im MAC-Mode wird an MAC 3 normalerweise ein PHY angeschlossen (so könnte
man einen Switch mit 3 PHY-Ports realisieren).
Das serielle Interface wird an den Pins 60 und 61 gestrappt, nicht an
Pin 63.
Pin 27 ist kein Strapping-Pin.
Am Besten, du zeigst deinen vollständigen Schaltplan mit allem Drum&Dran
(auch die Übertrager an den Ports 1 und 2).
Ohne einen solchen ist schwer eine solide Aussage möglich.
Wenn du Zugang zum Switch per Management-Interface hast, sollte das
Problem schnell eingekreist sein.
* Edit: Es gibt noch einen KSZ8873MML mit 3 MACs, 2x MII und nur einem
PHY.
Danke für eure Antworten.
Ich verwende den KSZ8873MML mit zwei MACs und einem PHY. Port 1 hängt
kommplett in der Luft, der ist Reserve für ein anderes Projekt. Port 2
hängt am Magjack, Port 3 an einem INAP von Inova der PHY spielt,
deswegen ist Port 3 im MAC-Mode. Pins 63&64 sind die straps fürs
Interface laut Datenblatt Seite 9f.
Clock kann ich mir nicht ausgeben afaik, hab ich jedenfalls nichts zu
gefunden im Datenblatt. Ich hab aber rausgefunden dass der link zum KSZ
stabil bleibt, wenn ich mein Notebook auf 100Mbit Halbduplex stell.
Was mich am meisten wundert ist, dass CRS für Port 3 auf low liegt. Der
angeschlossene PHY sagt dem Switch, dass da tote Hose am MII ist?
Das Management-Interface habe ich per I2C angeschlossen aber bisher
nicht benutzt, weil der Switch bisher immer durch strapping auf Anhieb
funktioniert hat. Welche Register soll ich mir ausgeben lassen?
Stefan M. schrieb:> Clock kann ich mir nicht ausgeben afaik, hab ich jedenfalls nichts zu> gefunden im Datenblatt.
Zur Not kann man auch eine kleine Nahfeldsonde nehmen und die direkt
über den Quarz halten. Mit dem Spekki und Vorverstärker sollte man dann
den Takt auch ohne Beeinflussung des Oszillators sehen können.
> Ich hab aber rausgefunden dass der link zum KSZ> stabil bleibt, wenn ich mein Notebook auf 100Mbit Halbduplex stell.
Dann probier mal noch ein paar andere Geräte durch. Wenn es mit manchen
geht, bei manchen die Autodetection ausgemacht werden muss etc. sieht
das meiner Meinung nach einem Problem mit dem Takt oder unsauberer
Spannung aus. Jedenfalls hab ich solches Verhalten bei diesen beiden
Problemen schon gesehen.
Stefan M. schrieb:> Danke für eure Antworten.>> Ich verwende den KSZ8873MML mit zwei MACs und einem PHY. Port 1 hängt> kommplett in der Luft, der ist Reserve für ein anderes Projekt. Port 2> hängt am Magjack, Port 3 an einem INAP von Inova der PHY spielt,> deswegen ist Port 3 im MAC-Mode. Pins 63&64 sind die straps fürs> Interface laut Datenblatt Seite 9f.
Der (weniger häufige) KSZ8873MML mit 3 MACs und einem PHY hat ein
modifiziertes Pinout, teilweise auch beim Pin-Strapping.
> Ich hab aber rausgefunden dass der link zum KSZ> stabil bleibt, wenn ich mein Notebook auf 100Mbit Halbduplex stell.
Das deutet auf ein Duplex-Mismatch hin, vermutlich bedingt durch
falsches Pin-Strapping am KSZ8873MML.
Es könnte durchaus sein, dass durch den an MAC 3 angeschlossenen INAP
(welchen?) die voreingestellte Auto-Negotiation für den PHY an Port 2
überschrieben wird.
Deshalb zunächst nachmessen, was während Power-On-Reset an den Pins 29
bis 32 passiert.
Notfalls hilft ein externer Pull-Up-Widerstand (wenigstens 4,7 kOhm,
ggf. sogar 1 kOhm) an den betroffenen Pins.
Sonst sollte man per Management-Interface wenigstens die PHY-Register
auslesen und überprüfen.
> Das Management-Interface habe ich per I2C angeschlossen aber bisher> nicht benutzt, weil der Switch bisher immer durch strapping auf Anhieb> funktioniert hat. Welche Register soll ich mir ausgeben lassen?
Falls I²C dafür verwendet wird, benötigt SPIN einen Pull-Up-Widerstand.
Dein Schaltplan scheint geheim zu sein?
Dort könnte man, so er ausreichend detailliert ist, bereits eine Menge
herauslesen, ohne im Trüben fischen zu müssen.
Wenn das Strapping beim Switch korrekt als Auto-Negotiation erkannt
wird, kann die Ursache für den Duplex-Mismatch kann auch eine falsche
Einstellung an deinem Notebook sein.
Falls dort – entgegen allen Empfehlungen – Vollduplex statt
Auto-Negotiation eingestellt ist, fällt der PHY am Switch bei der
Auto-Negotiation vorschriftsmäßig auf Halbduplex.
Ich hab den Fehler gefunden und möchte lösen:
Am Switch gibts CRS und COL. COL hatte ich hart auf Masse gelegt, aber
CRS war mit dem INAP375 verbunden. Das war das Problem, ich hab das
Beinchen von CRS angehoben und fliegend mit Masse verbunden. Danach lief
alles.