Hallo Forum, ich bin gerade dabei, einen STM32F207ZGT mit dem Microchip Phy LAN8742A und einem HR911105A (RJ45 Stecker mit Magnetics) in Betrieb zu nehmen. Der LAN8742A ist mit den Config-Pins auf Auto-Negotation eingestellt. Im Grunde an dieser Steller der Nachbau des Nucleo-F207ZG inkl. Reset-Erzeugung, nur dass ST hier einen anderen Magnetics nutzt. Nach Anschluss der Spannungsversorgung leuchten auch beide LEDs am Stecker, also ACK und Speed 100 Mbps. Senden und empfangen kann ich allerdings nicht. Mache ich eine HW-Reset, leuchtet ACK und Speed ist aus, d.h. 10 Mbps. Jetzt kann ich senden und empfangen. Der LAN8742A verlangt eine min. Reset-Zeit von 25ms. Schalte ich die Versorgungsspannung ein, während ich den Reset-Taster drücke und lassen den Taster dann los, kann ich senden und empfangen. Das würde eine zu kurze Reset-Zeit bestätigen. Was ich nicht verstehe ist, warum a. die Auto-Aushandlung nur 10 Mbps hinbekommt b. es mit dem Nucleo-Board funktioniert (Aushandlung und Reset) Der Ethernet-Teil des Schaltplans im Anhang. RMII_RESET ist mit der Reset-Leitung des STM32 verbunden (C 100nF gegen GND). Hat hier jemand einen Tipp für mich oder hat sogar die Bauteile schon mal so in Betrieb genommen? Danke für eure Antworten. VG Thomas
Thomas W. schrieb: > Hat hier jemand einen Tipp für mich oder hat sogar die Bauteile schon > mal so in Betrieb genommen? Beim DP83848 den ich mit einem F407 im Einsatz habe braucht es einen 50 MHz Clock den der PHY zum Controller liefern muss um das RMII Interface verwenden zu können. Wenn ich mich recht erinnere, denn es ist schon wieder 2 Jahre her. Weiss leider nicht ob das beim LAN8742a auch so ist, aber es ist doch eine Überprüfung Wert ....
Hallo jo mei, danke für deine Antwort. Aus den 25MHz vom Quarz macht der LAN8742A intern die 50MHz und schickt die über Pin 14 (REFCLK0) an den Controller. Der 50MHz-Takt ist da und kommt auch am Controller sauber an. VG Thomas
:
Bearbeitet durch User
Thomas W. schrieb: > danke für deine Antwort. Danke für deine freundliche Rückmeldung. Wenn das "Magnetics" nur irgendwie 100MBit kompatibel ist dann wirds wohl daran nicht liegen. Dann würde ich mir doch mal den Aufbau zur Brust nehmen, ob da irgendwas im Argen liegt. Nachdem der LAN8742A ja überall auf den Nucleo Boards drauf ist sollte das ja problemlos funktionieren.
jo mei schrieb: > Nachdem der LAN8742A ja überall > auf den Nucleo Boards drauf ist sollte das ja problemlos > funktionieren. Genau das war der Grund, warum ich mich für den LAN8742A entschieden habe. Den Aufbau habe ich auch schon zig mal überprüft. Es handelt sich um eine 4-lagige LP von JLCPCB. Die Leitungen vom Magnetics zum Phy sind gleich lang. (13.8mm zu 13.1mm) und liegen direkt nebeneinander. VG Thomas
Thomas W. schrieb: > Der LAN8742A verlangt eine min. Reset-Zeit von 25ms. Schalte ich die > Versorgungsspannung ein, während ich den Reset-Taster drücke und lassen > den Taster dann los, kann ich senden und empfangen. Das würde eine zu > kurze Reset-Zeit bestätigen. Den Fehler haste ja schon entdeckt. Aus dem Grund der Mindestresetzeiten hänge ich den Resetpin immer an einen GPIO des Prozessors. Das hält die min Zeiten ein und wenn mal was ist lässt sich der PHY auch so vom Prozessor resetten. Wenn die min Resetzeit nicht eingehalten wird, dann macht der eben irgendwas, da lässt sich lange drüber rätseln.
Hallo Mw E. leider hab ich den Fehler nicht gefunden. Den Reset-Pin des LAN8742A hab ich auch schon an einen GPIO gehängt, um die 25ms Resetzeit zu bekommen. Das klappt auch soweit. Das hat aber leider nichts daran geändert, dass ich nur 10 Mbps bekomme. Und warum funktioniert es beim Nucleo-Board? Wahrscheinlich sehe ich den Wald vor lauter Bäumen nicht :-( VG Thomas
Das stand oben aber nich so ;) Wie sieht denn das Layout aus? Das kannste ja mal mit dem Nucleo vergleichen und hier posten. PHYs sind recht zickig was zB die Bypass Cs angeht.
Mw E. schrieb: > Das stand oben aber nich so ;) Ja, weils nichts geändert hat. Im Anhang das Layout. Nicht dargestellt sind die beiden Versorgungslagen 3.3V und GND. Beide im Bereich des Ethernet-Stecker/Magnetics freigestellt.
wie sieht es denn in der Software aus? Wenn STM32 Cube verwendet wird muss man aufpassen das die PHY Statusregisteradresse richtig gesetzt ist. HAL war für die DP Phy konfiguriert, die LAN8742 haben das SR an Adresse 31 und die Bits sind anders. Und genau das macht sich beim Autokonfig bemerkbar.
Thomas W. schrieb: > Im Anhang das Layout. Beim Quarz hätte ich etwas Bedenken dass er zu weit weg ist, aber das "geht noch". Aber die Lastkapazitäten sind für einen 25 MHz Quarz erfahrungsgemäss zu gross. Zudem wirken die grossen Pads des Quarzes als zusätzliche Kapazität. Vielleicht verschiebt es dir die Quarzfrequenz zu stark, dann klappts mit den 100 MBit nicht mehr. 25 MHz Quarze brauchen aus alter Erfahrung etwa 12 bis 18 pF Lastkapazitäten. Ein Entwickler-Kollege hat in den 2000er Jahren einen PHY in einem professionellen Gerät verbaut und die Firmware Mannschaft wunderte sich geraume Zeit warum die Netzwerk-Verbindung so unzuverlässig war. Er hatte die Lastkapazitäten komplett weg- gelassen. So wie heutztage die Arduino-Jünger alles ohne Abblock-Kondensatoren aufbauen und sich wundern. Braucht's ja alles nicht ....
Hallo Johannes, ich nutze die SMT32CubeIDE 1.3.1 mit der FW 1.9. Die Config im Anhang. Die IDE kennt den LAN8742A, die Register passen. Auch die Phyadresse habe ich angepasst auf 0. Es macht auch keinen Unterschied, ob ich hier Auto, 10 oder 100Mbps einstelle.
jo mei schrieb: > Aber die Lastkapazitäten sind für einen 25 MHz > Quarz erfahrungsgemäss zu gross. Zudem wirken die grossen Pads > des Quarzes als zusätzliche Kapazität. Vielleicht verschiebt es > dir die Quarzfrequenz zu stark, dann klappts mit den 100 MBit > nicht mehr. 25 MHz Quarze brauchen aus alter Erfahrung etwa > 12 bis 18 pF Lastkapazitäten. So, gleich mal gemessen. Die Frequenz des Quarz kann ich nicht direkt messen. Aber die Outputfrequenz an Pin 14 (REFCLK0). Hier kommen ziemlich genau die 50MHz raus. Am Quarz und den Kapazitäten habe ich mich an die Vorgaben von ST gehalten. Was aber nicht heißt, dass das in Stein gemeißelt ist. Ich werde mal sehen, ob ich die Cs etwas kleiner bekomme. Die Pads werde ich mal mit einem Fräser etwas verkleiner. jo mei schrieb: > So wie heutztage die Arduino-Jünger alles ohne > Abblock-Kondensatoren aufbauen und sich wundern. Braucht's ja > alles nicht .... Abblock-Kondensatoren werden allgemein überschätzt. So klein wie die sind, können die ja nix tauchen ;-)
Thomas W. schrieb: > Am Quarz und den Kapazitäten habe ich mich an die Vorgaben von ST > gehalten. Hast du denn den gleichen Quarz bekommen den ST verwendet? Habe leider auch keine Erfahrungen mit den kleinen Typen ... Thomas W. schrieb: > Die Pads werde ich mal mit einem Fräser etwas verkleiner. Nein lass mal, das kannst du ja mit den Lastkapazitäten ausgleichen. Thomas W. schrieb: > Abblock-Kondensatoren werden allgemein überschätzt. So klein wie die > sind, können die ja nix tauchen ;-) Ja gut, dann verstehen wir uns ja. Thomas W. schrieb: > Hier kommen ziemlich genau die 50MHz raus. Diese Aussage ist natürlich etwas problematisch :-) Weil ziemlich .... Dann noch: zeig doch mal bitte die 50 MHz Clockleitung die zum Controller führt.
Thomas W. schrieb: > Die IDE kennt den LAN8742A, die Register passen. ja, ok, die 0x1f ist 31 und passt. Ich entwerfe auch gerade einen Phy Adapter für ein China-F407 Board. Im ersten Schritt einfach, da nehme ich ein fertiges Modul von Waveshare. Ich habe auch überlegt so was mal selber zu versuchen und angefangen die Teile zusammenzusuchen. Aber beim Quarz wird man erschlagen an vielen Möglichkeiten: lt. Datenblatt 300 oder 100 µW Typen, bei 100 µW ist noch ein Serienwiderstand von 500R drin. Lastkapazitäten auf jeden Fall deutlich geringer, eher wenige pF, je nach Quarz. Und dann noch zig Bauformen...
Thomas W. schrieb: > Ethernet-Stecker/Magnetics Das saudumme ist jetzt dass die Nucleo Boards doch tatsächlich einen vom LAN Connector separaten Trafo draufgebaut bekommen haben, das soll einer verstehen. Vielleicht braucht dein LAN Connector eine andere Beschaltung ....
jo mei schrieb: > Vielleicht braucht dein > LAN Connector eine andere Beschaltung Da hatte ich schon ins DB von PHY und Magjack geguckt, die passen zusammen. Das Layout sieht auch nicht schlecht aus, also der Fehler ist durchaus mystisch.
Mw E. schrieb: > also der Fehler ist durchaus mystisch. Je länger ich das Datenblatt des LAN8742A lese desto mehr zweifle ich an den Daten im Nucleo Schaltplan wo 30pF Lastkapazitäten angegeben sind. Müsste schon sehr dumm zugehen wenn das stimmen sollte. Oder aber es ist ein "ganz anderer Quarz". Letzter Satz in den Specs zum erforderlichen Quarz: "The external load capacitors, C1 and C2, determine the accuracy of the 25.000 MHz frequency". Ja daran zweifle ich nicht.
Oszilloskop vorhanden? Dann mess doch die Signale TX/RX nach. Prüfe mal die Signalqualität und die übertragenden Daten der Fast Link Pulse.
R15 / RBIAS ist falsch, das müssen 12.1k sein, nicht 12.4k. R12 ist mit 470 Ohm für den Regoff-Strap zu hoch, das DB sagt etwa 270 Ohm. Das sind jetzt alles keine "smoking guns" für Dein Problem, aber auf jeden Fall Differenzen zum DB, die ich bei so einem Problem auf jeden Fall korrigieren würde. Ich bin mir nicht sicher, ob es korrekt ist das Gehäuse des Magjacks über so einen kleinen, nicht genug spannungsfesten Kondensator (C20) an das GND der Schaltung anzubinden. Wenn so, dann müsste das einer mit >= 1.5kV sein. Ich dachte aber eigentlich daß der Hanrun den Kondensator schon integriert hat, Du den Gehäuseschirm also gar nicht selbst verbinden musst.
Guten Morgen, im Anhang der Takt am Ausgang Pin 14 (REFCLK0). Die Last-Cs am Quarz habe ich auf 22pf verringert. Ein sauberer Takt sieht allerdings anders aus. Wäre es sinnvoll, die Leitung auf der LP mit einer GND-Leitung abzuschirmen? Gerd E. schrieb: > R15 / RBIAS ist falsch, das müssen 12.1k sein, nicht 12.4k. Habe ich geändert. Danke. Gerd E. schrieb: > R12 ist mit 470 Ohm für den Regoff-Strap zu hoch, das DB sagt etwa 270 > Ohm. Ist auch korrigiert. Gerd E. schrieb: > Ich dachte aber eigentlich daß der Hanrun den Kondensator > schon integriert hat, Du den Gehäuseschirm also gar nicht selbst > verbinden musst. Du hast recht. Der C ist bereits im HR911105A integriert. Ich habe den C entfernt und mit 0Ohm ersetzt. D. C. schrieb: > Dann mess doch die Signale TX/RX nach. Prüfe mal die Signalqualität und > die übertragenden Daten der Fast Link Pulse. Auf dem Oszi sehe ich nichts. Muss ich gegen GND messen oder zwischen + und - ? VG Thomas
also meine Aufbauten sehen viel wilder aus, mit 10 cm Dupontkabeln. Bei einem habe ich wenigstens die billigen Stecker ersetzt weil die nach kurzer Zeit ausleiern und dann schon kleine Erschütterungen zum Ausfall führten. Ein Modul ist ein org. Waveshare und ein anderes, hüstl, eine halb so teure Kopie. Von daher sollte eine saubere Platine maximal sporadische Fehler verursachen, aber nicht so einen reproduzierbaren systematischen Fehler. Die Nucleos versorgen den µC über den STLink mit dem Takt, die Cube SW konfiguriert den etsprechend auf ext. Clock. Wie ist das bei deinem Board, ist das berücksichtigt? Wenn der ext. Clock fehlt git es noch einen Fallback auf HSI. Und der Reset für den Phy wird wimre in der HAL Software gemacht, HAL_INIT_Phy(). Da ist auch eine Wartezeit drin die du in der Config gezeigt hast. Dafür muss aber der HAL_Tick auch funktionieren. Hast du den init Code mal mit dem Debugger durchgesteppt? Korrektur: HAL_ETH_Init() meinte ich.
Thomas W. schrieb: >> Ich dachte aber eigentlich daß der Hanrun den Kondensator >> schon integriert hat, Du den Gehäuseschirm also gar nicht selbst >> verbinden musst. > Du hast recht. Der C ist bereits im HR911105A integriert. > Ich habe den C entfernt und mit 0Ohm ersetzt. auch wenn es mit Deinem fehlenden 100MBit nix zu tun hat: 0 ohm für C20 ist noch falscher. Denn jetzt hast Du eine direkte Verbindung von Kabelschirm auf Deine Masse. Das gibt bei 100m Ethernet-Kabellänge eine hübsche Masseschleife. Lass C20 komplett weg und die Verbindung offen. Der HR911105A hat den Kondensator zwischen dem Schirm und seinem Pin 8 integriert. Alles was Du tun musst, ist Pin 8 mit Deiner Masse verbinden. Das hast Du. Mehr ist nicht notwendig und eher schädlich.
Thomas W. schrieb: > Die Last-Cs am Quarz habe ich auf 22pf verringert. Versuche auch mal 10-15 pF. Thomas W. schrieb: > Ein sauberer Takt sieht allerdings anders aus. Abgesehen von den "Wackeleien" die vermutlich dein Oszilloskop durch Rauschen hinzufügt gibt es an dem Signal eigentlich nichts auszusetzen. Ein signifikanter Jitter (der dem LAN-Treiben ab- träglich wäre) ist nicht zu erkennen. jo mei schrieb: > zeig doch mal bitte die 50 MHz Clockleitung die zum > Controller führt.
Thomas W. schrieb: > Auf dem Oszi sehe ich nichts. > Muss ich gegen GND messen oder zwischen + und - ? Ein Tastkopf zw. GND und + und ein Tastkopf zw. GND und -. Dann im Oszi subtrahieren und dann mit dem IEEE802.3 Standard vergleichen oder hier posten.
Übrigens ich hatte mal das Problem, einen falschen Transformer eingesetzt zu haben. Prüfe das bitte. Da kann es kleine Unterschiede geben die den Unterschied ausmachen.
Hallo zusammen, ich wollte mal eine kurze Rückmeldung geben, wie der aktuelle Stand ist: Mit einfachen Worten: Es geht! Woran lags? Das ist eine gute Frage. Ich habe alle eure Tipps umgesetzt, aber nicht wirklich einen Erfolg gehabt. Also alles neu, Platine bestellt und alles neu gelötet. Und siehe da, der erste Versuch hat geklappt. Also entweder hatte einer der ICs einen Knacks oder die Umbauten haben nicht so geklappt, wie es hätte sein sollen. Auf jeden Fall funktioniert das ganze jetzt, wie es soll. Vielen Dank für eure tolle und schnelle Hilfe. VG Thomas
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.