Guten Tag, Ich würde gerne an einen ESP32 Ethernet anbauen. Da gibt's natürlich bereits kaufbare Module aber auf die möchte ich verzichten zu mal es auch ein Lernprozess für mich ist. Der ESP32 ja selbst bereits eine MAC hat würde es hier gehen nur einen PHY Adapter (LAN8720 o.ä) anzubauen ähnlich wie hier : https://sautter.com/blog/ethernet-on-esp32-using-lan8720/ Das würde dann über den UART Anschluss laufen, kleiner Nachteil wäre hier dass ich ~8+ Pins belegen würde je nachdem wie ich es anschließe. Als Alternative ginge es natürlich auch ein komplett eigenes Modul mit MAC+ PHY an den SPI anzuschließen wie ein ein ENC28J60 oder W5500. Vorteil hier wäre natürlich, dass ich nur die SPI Pins benötige (Die ich dann auch noch für andere SPI Module auslagern kann) + einem CS Pin und zusätzlich CLK. Da ich selbst noch nicht so viel Erfahrung mit Seriellen Anschlüssen gemacht habe würde ich euch gerne Fragen ob ihr mir hier etwas Input geben könntet ? Die Datenübertragungsgröße ist gering (MQTT/JSON) mit jetzt auf 2MB gesetzt, was mich Interessieren würde wäre die Geschwindigkeit der jeweiligen Anschlüsse ob es da etwas auffälligen gibt ? Oder ob ich sonst etwas beachten soll. Vielen Dank ! Mit freundlichen Grüßen Darath
:
Bearbeitet durch User
Daniel D. schrieb: > Der ESP32 ja selbst bereits eine MAC hat würde es hier gehen nur einen > PHY Adapter (LAN8720 o.ä) anzubauen ähnlich wie hier : > https://sautter.com/blog/ethernet-on-esp32-using-lan8720/ > Das würde dann über den UART Anschluss laufen, kleiner Nachteil wäre > hier dass ich ~8+ Pins belegen würde je nachdem wie ich es anschließe. NEIN. Das läuft nicht über UART. JEDER Ethernet MAC hat einen *MII-Anschluss (100M: MII, RMII; 1G: GMII, RGMII, SGMII, 10G: XMII), und der verwendete PHY hat auch einen *MII-Anschluss. Das ist was spezielles und kein UART, und Du musst es exakt so machen, wie es da in deinem Link steht, damit es geht, weil Du eben genau die RMII-Pins brauchst. > Als Alternative ginge es natürlich auch ein komplett eigenes Modul mit > MAC+ PHY an den SPI anzuschließen wie ein ein ENC28J60 oder W5500. Kann man machen, empfiehlt sich aber nur dann, wenn Du kein Ethernet MAC hast. Solange Du einen Ethernet-MAC hast, ist es immer besser, den auch zu benutzen, sowohl aus Sicht der Rechenleistung, der Programmierung (der Ethernet-Treiber ist ja fertig, da musst Du nichts mehr dran machen) und der Übertragungsgeschwindigkeit. fchk
Vielen Dank für die Antworten! Frank K. schrieb: > NEIN. Das läuft nicht über UART. JEDER Ethernet MAC hat einen > *MII-Anschluss (100M: MII, RMII; 1G: GMII, RGMII, SGMII, 10G: XMII), und > der verwendete PHY hat auch einen *MII-Anschluss. Das ist was spezielles > und kein UART, und Du musst es exakt so machen, wie es da in deinem Link > steht, damit es geht, weil Du eben genau die RMII-Pins brauchst. > Verstehe, dann hab ich hier wohl was vertauscht. Bedeutet also nur, dass die Pins für UART (TXD/RXD) den gleichen Namen haben wie für MII? Ich bin der oberen Anleitung gefolgt und habe versucht alle Pins nach dem Modul anzustecken, erhalte aber keine Verbindung zum PHY. Hättest du da eine Idee warum ? Als ESP benutzte ich ein D1 Mini: https://cdn.shopify.com/s/files/1/1509/1638/files/D1_Mini_ESP32_Datenblatt_AZ-Delivery_Vertriebs_GmbH.pdf?v=1604068666 Die Pins habe ich aber so belegt wie es in der Anleitung gemacht wurde und auch Pull Up/Downs dazu, aber es kommt nur: 12:43:08.137 -> E (1008) emac: Timed out waiting for PHY register 0x2 to have value 0x0007(mask 0xffff). Current value 0xffff 12:43:09.128 -> E (2008) emac: Timed out waiting for PHY register 0x3 to have value 0xc0f0(mask 0xfff0). Current value 0xffff 12:43:09.128 -> E (2008) emac: Initialise PHY device Timeout > Kann man machen, empfiehlt sich aber nur dann, wenn Du kein Ethernet MAC > hast. Solange Du einen Ethernet-MAC hast, ist es immer besser, den auch > zu benutzen, sowohl aus Sicht der Rechenleistung, der Programmierung > (der Ethernet-Treiber ist ja fertig, da musst Du nichts mehr dran > machen) und der Übertragungsgeschwindigkeit. Naja, bei dem SPI Modul gibt es auch alles fertig für Arduino / ESP32 weswegen ich hier kein Mehrauffwand sehe. Zu der Geschwindigkeit, wieso ist es über den internen MAC schneller als über den externen ? Und was ist, wenn der ESP32 bereits recht gut ausgelastet ist, wäre da über SPI nicht schneller da er nur die Daten Senden/Empfangen muss und nicht auch noch zusätzlich MAC/PHY belastet.
Daniel D. schrieb: > Frank K. schrieb: >> NEIN. Das läuft nicht über UART. JEDER Ethernet MAC hat einen >> *MII-Anschluss (100M: MII, RMII; 1G: GMII, RGMII, SGMII, 10G: XMII), und >> der verwendete PHY hat auch einen *MII-Anschluss. Das ist was spezielles >> und kein UART, und Du musst es exakt so machen, wie es da in deinem Link >> steht, damit es geht, weil Du eben genau die RMII-Pins brauchst. >> > Verstehe, dann hab ich hier wohl was vertauscht. Bedeutet also nur, dass > die Pins für UART (TXD/RXD) den gleichen Namen haben wie für MII? Ja, es gibt bei einigen Signalen Namensähnlichkeiten. > Die Pins habe ich aber so belegt wie es in der Anleitung gemacht wurde > und auch Pull Up/Downs dazu, aber es kommt nur: Ich habe keine Erfahrungen speziell mit ESP32, aber MII und RMII sind überall gleich, und ich habe schon dutzende davon verbaut. Ein mögliches Problem ist die Tatsache, dass die Pins mehrfach benutzt werden, und hier musst Du jedem betroffenen Pin sagen, dass er Ethernet/RMII sein soll und kein GPIO oder sonstwas. >> Kann man machen, empfiehlt sich aber nur dann, wenn Du kein Ethernet MAC >> hast. Solange Du einen Ethernet-MAC hast, ist es immer besser, den auch >> zu benutzen, sowohl aus Sicht der Rechenleistung, der Programmierung >> (der Ethernet-Treiber ist ja fertig, da musst Du nichts mehr dran >> machen) und der Übertragungsgeschwindigkeit. > Naja, bei dem SPI Modul gibt es auch alles fertig für Arduino / ESP32 > weswegen ich hier kein Mehrauffwand sehe. Zu der Geschwindigkeit, wieso > ist es über den internen MAC schneller als über den externen ? Und was > ist, wenn der ESP32 bereits recht gut ausgelastet ist, wäre da über SPI > nicht schneller da er nur die Daten Senden/Empfangen muss und nicht auch > noch zusätzlich MAC/PHY belastet. Bei vielen Prozessoren kann der MAC direkt per DMA auf den Speicher zugreifen und sich selber die Daten holen und verschicken bzw empfangene Daten im Speicher ablegen, ohne direkte Mitwirkung des Prozessors. Der muss nur einmal die Blockadresse mitteilen. Oft kann der MAC noch mehr (z.B. Prüfsummen ausrechnen oder), und auch das ist dann etwas, was der Prozessor selber nicht mehr machen muss. Daher belastet der interne MAC den Prozessor fast immer weniger als ein externer MAC/PHY. fchk
Zur Geschwindigkeit: Ich habe hier mal Zahlen vom Microchip TCP/IP-Stack herausgesucht und verglichen. Performancewert: UDP LAN Throughput Prozessor ist hier ein PIC32MX795F512L mit 80 MHz. 1. ENC28J60: ext. 10MBit/s SPI MAC/PHY: 456kB/s 2. ENC624J600: ext. 100MBit/s SPI MAC/PHY: 784kB/s 3. interner 100 MBit/s MAC+LAN8720A PHY: 8449kB/s Das ist jetzt nur ein Beispiel, aber die Ergebnisse dürften auf anderen Plattformen nicht soviel anders aussehen. Und da alle MACs und PHYs hier von Microchip kommen, kannst Du davon ausgehen, dass sie wissen, was sie da programmieren und dass das einigermaßen gut für die Plattform optimiert ist. SPI ist eben als Anbindung deutlich ineffizienter als ein direkter Zugriff auf die Register und den Speicher über den internen Adress-/Datenbus, wie Du aus den Ergebnissen in der Tabelle ablesen kannst. Du kannst z.B. den PIC18F97J60 mit internem MAC/PHY mit der Kombination PIC18F8722+ENC28J60 via SPI vergleichen. Beide Prozessoren haben exakt die gleiche Architektur und fast die gleiche Rechenleistung (Spalte MIPS), und der interne MAC/PHY vom PIC18F97J60 ist recht ähnlich zum externen ENC28J60. Der Unterschied ist im Wesentlichen die Anbindung - einmal intern über den Adress/Datenbus und einmal extern via SPI, und genau dieser Unterschied ist für einen satten Faktor 2 in der Performance verantwortlich. Schick, was? fchk
:
Bearbeitet durch User
Nimm doch einen wiznet w5500 , hatte den vor Jahren an eine arduino verbaut und hat eigenklich recht problemlos funktioniert und mit ca 5.- aus CHINA auch eine preiwerte Lösung. Specifications: Chip type: W5500 Supports both 3.3V & 5V. Hardwired TCP/IP Protocols : TCP, UDP, ICMP, IPv4, ARP, IGMP, PPPoE 10BaseT/100BaseTX Ethernet PHY embedded Supports automatic response (full duplex / half duplex mode) Supports 8 independent sockets simultaneously Internal 32Kbytes Memory for Tx/Rx Buffers Power off mode: support Network wake: support SPI interface (SPI MODE 0, 3),convenient connection with MCU Size: 55mm x 28mm Color: Blue https://github.com/jozala/ESP32_W5500_TCP CU , Larry
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.