Hallo zusammen, ich versuche mich aktuell an einem Gerät mit ESP32 mit Ethernet über die integ. EMAC und LAN8720. Testaufbau mit einem "Waveshare LAN8720" Klon-Board läuft im Grundsatz und nun will ich die Schaltung finalisieren, aber ordentlich. Taktquelle für EMAC und PHY soll ein 50MHz Quarz-Oscillator werden. Wie in vielen Schaltungen mit ESP32 und LAN8720 zu sehen. Im LAN8720 Reference-Design ist da jedoch noch ein Schmitt-Trigger nach dem Oscillator. Brauchts den? Auf meinem Board ist er nicht drauf und bisher in keiner Schaltung mit LAN8720 die ich so gefunden habe. https://ww1.microchip.com/downloads/en/DeviceDoc/EVB8720%20Evaluation%20Board%20Schematic.pdf Dazu kommt das dämliche beim ESP32 mit EMAC, dass man sich den REFCLK-Eingang mit dem Bootloader-Pin teilt. Sprich, im Startup muss die Taktleitung definiert HIGH (Normalbetrieb) oder LOW (Bootloader) sein. Der interne Pullup des Eingang der normalerweise dafür sorgt dass immer im Normalbetrieb gestartet wird reicht aber wohl zumindest bei meinem Testsetup nicht aus, damit das stabil auf 1 bleibt - Sprich nach dem Reset spiele ich aktuell Lotto ob der BL oder das Programm geladen wird :) Dafür wollte ich eigentlich den EN-EIngang des Oscillator nutzen. Was macht eigentlich der Out von so einem Oscillator wenn er disabled ist? wird das Signal auf gnd gezogen, auf high oder ist das hochohmig?
:
Bearbeitet durch User
Ing-Dom schrieb: > Dafür wollte ich eigentlich den EN-EIngang des Oscillator nutzen. Was > macht eigentlich der Out von so einem Oscillator wenn er disabled ist? > wird das Signal auf gnd gezogen, auf high oder ist das hochohmig? Das steht sicher im Datenblatt des Oszillators, den wir leider nicht kennen. p.s. nachdem gerade ein Glaskugelpolierer hier sein Unwesen treibt, sind die alle dort zur Nachbearbeitung. Also Pech gehabt!
Ing-Dom schrieb: > Im LAN8720 Reference-Design ist da jedoch noch ein Schmitt-Trigger nach > dem Oscillator. Brauchts den? Je nach Oszillator ja oder nein. Der Schmitt-Trigger macht einen sauberen Rechteck wenn dein Oszillator einen Sinus ausgibt. Und der macht einen Rechteck mit VDDIO auch wenn der Oszillator einen Rechteck mit 3.3 macht. Quasi auch Pegelwandler.
Du koenntest 1 LVC NAND nehmen. Die haben Schmitt-Trigger an den Eingaengen. Legst du den noch freien Eingang auf L, hast du ein schoenes H am Ausgang...
Helmut -. schrieb: > p.s. nachdem gerade ein Glaskugelpolierer hier sein Unwesen treibt, sind > die alle dort zur Nachbearbeitung. Also Pech gehabt! Leider nicht, da hab ich natürlich zuerst nachgesehen. https://wmsc.lcsc.com/wmsc/upload/file/pdf/v2/lcsc/2210211600_YXC-OT2EL4C4JI-111OLP-50M_C5203552.pdf Den genauen Typ auf der Referenz-Schaltung ist leider nicht angegeben.. In den Datenblättern renommierterer Hersteller wird aber was angegeben... hier zB EN = 0 => OUT = HI Z https://www.mouser.de/datasheet/2/3/ASEDV-1826261.pdf Gibt es hier kein "übliches" Verhalten? Gustl B. schrieb: > Ing-Dom schrieb: >> Im LAN8720 Reference-Design ist da jedoch noch ein Schmitt-Trigger nach >> dem Oscillator. Brauchts den? > > Je nach Oszillator ja oder nein. > > Der Schmitt-Trigger macht einen sauberen Rechteck wenn dein Oszillator > einen Sinus ausgibt. > Und der macht einen Rechteck mit VDDIO auch wenn der Oszillator einen > Rechteck mit 3.3 macht. Quasi auch Pegelwandler. Sollte so ein Quarz-Oscillator nicht immer ein Rechteck ausgeben? Auf welches Datum im Datenblatt sollte ich hier achten?
Ing-Dom schrieb: > Sollte so ein Quarz-Oscillator nicht immer ein Rechteck ausgeben? Nö. Beispiel: https://www.crystek.com/specification/vcxo/CVSS-945.pdf "True SineWave" > Auf welches Datum im Datenblatt sollte ich hier achten? Wenn da CMOS/HCMOS/LVCMOS steht, has Du das passende. z.B. https://www.we-online.com/components/products/datasheet/831019987.pdf fchk
Der ESP32 kann die 50MHz für den LAN8720 bereitstellen, so kannst du dir den Quarz(oszillator) sparen. https://sautter.com/blog/ethernet-on-esp32-using-lan8720/ Ich verwenden in meinem Projekt den GPIO17 um den Takt auszugeben. * ETH_CLOCK_GPIO0_IN - default: external clock from crystal oscillator * ETH_CLOCK_GPIO0_OUT - 50MHz clock from internal APLL output on GPIO0 - possibly an inverter is needed for LAN8720 * ETH_CLOCK_GPIO16_OUT - 50MHz clock from internal APLL output on GPIO16 - possibly an inverter is needed for LAN8720 * ETH_CLOCK_GPIO17_OUT - 50MHz clock from internal APLL inverted output on GPIO17 - tested with LAN8720 https://github.com/flusflas/esp32-ethernet
:
Bearbeitet durch User
Danke Frank! Wieder was gelernt. Obelix X. schrieb: > Der ESP32 kann die 50MHz für den LAN8720 bereitstellen, so kannst du dir > den Quarz(oszillator) sparen. Im Grundsatz, ja (beschäftige mich nun geraume Zeit schon damit). Dafür ist aber nur GPIO17 geeignet, da GPIO16 und 0 zwar auch gehen, aber falsche Phasenlage haben und insbesondere auf GPIO0 noch andere Probleme auftreten (Phasenlage könnte man ja noch hinbekommen). https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-reference/kconfig.html#config-eth-rmii-clk-out-gpio Bei dem von mir eingesetzt PICO-V3-02 ist aber GPIO16/17 nicht verwendbar - insofern bleibt mir leider nur GPIO0, und weil der OUT nicht funktioniert, als Input.
:
Bearbeitet durch User
Dann den Enable-Eingang des Quarzoszi nutzen. Also beim Start dafür sorgen, dass der Ausgang des QO High-Impedance ist und erst später enablen. Ing-Dom schrieb: > Im LAN8720 Reference-Design ist da jedoch noch ein Schmitt-Trigger nach > dem Oscillator. Würde ich weg lassen, habe ich auch noch nicht mit gesehen.
:
Bearbeitet durch User
Obelix X. schrieb: > Dann den Enable-Eingang des Quarzoszi nutzen. Genau das ist der Plan, nach Frank Sautter sozusagen. https://sautter.com/blog/ethernet-on-esp32-using-lan8720/ Siehe meinen aktuellen Arbeitsstand. Frank Sautter schreibt noch, ein 4k7 Pullup an den GPIO-0 (der ja einen internen Pullup hat) - ist der aus deiner Sicht nötig? Für die Qualität der Clock wahrscheinlich auch nicht ideal, oder?
Ing-Dom schrieb: > ein 4k7 Pullup an den GPIO-0 (der ja einen > internen Pullup hat) - ist der aus deiner Sicht nötig? Ich habe jetzt nicht ins Datenblatt geschaut aber die Internen Pullups müssen meist erst Softwaremäßig eingeschaltet werden. Beim Augenblick des Starts ist das noch nicht der Fall. Also ja, externen Pullup. Ing-Dom schrieb: > Für die Qualität der Clock wahrscheinlich auch nicht ideal, oder? Dann nimm 10k oder noch größer. Schau mal ins Datenblatt von deinem Quarzoszi, wie stark der Ausgang belastet werden darf. Sollte meiner Meinung nach also nicht stören.
Ing-Dom schrieb: > Leider nicht, da hab ich natürlich zuerst nachgesehen. > https://wmsc.lcsc.com/wmsc/upload/file/pdf/v2/lcsc/2210211600_YXC-OT2EL4C4JI-111OLP-50M_C5203552.pdf Dort steht an Pin 1 "Tri-state" > In den Datenblättern renommierterer Hersteller wird aber was > angegeben... > hier zB EN = 0 => OUT = HI Z Auch wenn das im Datenblatt oben nicht so explizit steht vermute ich zusammen mit dem Bild "Test Circuit", dass es dort auch so ist.
Ing-Dom schrieb: > Für die Qualität der Clock wahrscheinlich auch nicht ideal, oder? Die Clock ---> Uhr Der Clock ---> Takt Welche Qualität der Uhr meinst du denn?
Obelix X. schrieb: > Ich habe jetzt nicht ins Datenblatt geschaut aber die Internen Pullups > müssen meist erst Softwaremäßig eingeschaltet werden. Beim Augenblick > des Starts ist das noch nicht der Fall. Also ja, externen Pullup. Nene, wenn am IO0 nichts dranhängt bootet der sauber und zuverlässig vom Flash - ist auch so im Datenblatt hinterlegt. https://www.espressif.com/sites/default/files/documentation/esp32-pico_series_datasheet_en.pdf, Seite 18. Insofern, wenn der Ausgang vom Oszillator als hochohmig ist, sollte man hier ohne auskommen. Da ich eh erstmal ein "Devboard" mache, mach ich einfach mal einen Footprint drauf und teste Obelix X. schrieb: > Dann nimm 10k oder noch größer. Schau mal ins Datenblatt von deinem > Quarzoszi, wie stark der Ausgang belastet werden darf. Sollte meiner > Meinung nach also nicht stören. Stimmt, bei dem YXC steht zwar nichts, aber typischerweise 1-5mA können CMOS Oscillatoren in der Bauform so nach meiner Datenblattrecherche. Insofern sollte ein 10k nicht stören, aber wenn nicht nötig, dann lass ich ihn weg.
ich kann mich gleich mal korrigieren. Der Pullup ist nötig, da der XTAL1 / CLKIN vom LAN8720 anscheinend so niederohmig ist, dass er gegen den internen Pullup des ESP nicht ankommt.
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.