Wiznet W5100 vs. Microchip ENCx24J600

8

Was sind die Vor- und Nachteile von Wiznet W5100 oder Microchip EncX24J600?

Es ist etwas kompliziert zu erklären.

Meine Frage bezieht sich auf die Leistung des Microchip TCP-Stacks gegenüber dem Wiznet TCP / IP-Kern auf dem Chip. Auch über die Kosten ($$).

Beispiel: Mit Wiznet hat der Mikrocontroller weniger Verarbeitung, wodurch der Mikrocontroller für andere Aufgaben frei wird. Aber ich denke, dass dies davon abhängt, auf welcher Ebene Sie arbeiten.

Mit dem Microchip TCP-Stack habe ich möglicherweise Einschränkungen bei den Peripheriegeräten, die ich steuern kann. Vielleicht muss ich einen zweiten Mikrocontroller verwenden.

Ich hoffe, ich habe es Ihnen jetzt besser erklärt, damit Sie mir bei der besten Wahl helfen können.

Daniel Grillo
quelle
Ich machte mich bereit, nach Lösungen zu suchen, um so etwas zu tun. Danke für die Nachfrage.
Kortuk
1
Irgendwelche besonderen Gründe für die ENCX24J600? Der ENC28J60 ist viel beliebter.
Kevin Vermeer
1
@reemrevnivek Ich muss mit 100 Mbit / s kommunizieren.
Daniel Grillo
1
Der W5100 ist mit einer unidirektionalen Geschwindigkeitsverbindung mit einem sehr ineffizienten Protokoll verbunden (er sendet eine 16-Bit-Adresse mit jedem Datenbyte iirc). Sie haben also (SPI-Link) / 3 als effektive Halbduplex-Höchstgeschwindigkeit erhalten. Siehe auch meine vollständige Antwort unten
Marco van de Voort

Antworten:

3

Der W5100 verfügt über einen TCP / IP-Kern auf dem Chip. Bei den Microchip ENC-Geräten muss der Benutzer selbst einen TCP / IP-Stack auf der mit ihm verbundenen MCU implementieren. Dies ist mit einem geeigneten PIC recht einfach, da kostenlose TCP / IP-Stacks von Microchip erhältlich sind.

Der W5100 hat den Vorteil, dass er mit praktisch jeder MCU verwendet werden kann. Wenn ein ENC-Chip verwendet wird, ist jedoch ein ziemlich leistungsfähiges Gerät erforderlich, um einen TCP / IP-Stack auszuführen.

Eine andere Möglichkeit ist natürlich die Verwendung einer MCU mit integriertem MAC und PHY. Microchip macht einige schöne, und es gibt auch ARM-Varianten mit ihnen.

Leon Heller
quelle
Das ist der Umfang meines Wissens.
Kortuk
2

Die Firma, für die ich arbeite, verwendet den PIC18F97J60. Es ist ein 8-Bit-Mikroprozessor mit integriertem MAC und PHY, der dem ENC24J60 sehr ähnlich ist. Wenn Sie einen PIC-Mikroprozessor verwenden möchten, können Sie den Microchip TCP / IP-Stack verwenden. Dieser Stack bietet alles bis zur Anwendungsschicht. Wenn Sie einen Nicht-Microchip-Prozessor verwenden, können Sie meines Erachtens nur die ENC24J60-Treiber verwenden. Das heißt, es sieht so aus, als ob das Wiznet die Transportschichten in die Hardware integriert, nicht nur in MAC und PHY. Sie überlassen es jedoch dem Entwickler, die Anwendungsebenen wie Telnet, FTP und HTTP zu implementieren.

mjh2007
quelle
Zu beachten ist, dass der PIC18F97J60 nur für 100 Flash-Schreibzyklen garantiert zu sein scheint und daher möglicherweise ein Problem darstellt, für das er entwickelt werden muss. ww1.microchip.com/downloads/en/DeviceDoc/39762e.pdf (S. 429)
Toby Jaffey
Die minimale Anzahl von Schreibzyklen beträgt 100. Typisch ist 1k. Ich hatte noch nie ein Problem.
mjh2007
Diese Zahl wird wahrscheinlich über den gesamten Temperaturbereich liegen, so dass es unwahrscheinlich ist, dass Ausdauer bei normalen Temperaturen ein Problem darstellt.
mikeselectricstuff
1

Ich weiß, dass es alt ist, aber ich habe dies letztes Jahr mit einem Gewürz getan, also werde ich es zum Nutzen anderer zusammenfassen.

Erstens würde ich den W5100 nicht verwenden, aber seinen Bruder W5500 , der im Grunde eine Revision ist und den SPI viel besser nutzt. Ich würde auch in Betracht ziehen, zu einem Teil mit DMA zu wechseln, insbesondere wenn Sie es nur UDP machen möchten.

In beiden Fällen werden Sie wahrscheinlich den Microchip MLA TCP / IP-Stack verwenden. Wiznet stellt hierfür Patches bereit.

Leider scheinen alle Microchip TCP / IP-Stack-Varianten die Kommunikation über SPI zu blockieren (kein DMA, kein erweiterter Puffermodus) . Ich habe versucht, es nur auf UDP zu reduzieren und den gesamten Mikrochip-Teil abgeschnitten (indem ich den zugrunde liegenden Wiznet-Treiber direkt verwendet und ihn dabei neu geschrieben habe).

Ich stimme auch MJH zu, dass der DMA-fähige PIC18F97J60 eine bessere Wahl ist als ein billigerer PIC mit ENC (es sei denn, Ihre Zahlen sind wirklich hoch), aber ich war etwas enttäuscht, dass der TCP / IP die Vorteile des J60 nicht wirklich nutzt auf den kleinsten gemeinsamen Nenner.

Die Verwendung eines IP-Teils anstelle eines Ethernet-Teils hat den Vorteil, dass Sie einen Socket auf einen bestimmten Port beschränken können und keinen unabhängigen Datenverkehr über Ihre SPI-Verbindung übertragen müssen. Der W5500 hat 4 KB pro Socket, und ich verwende separate Sockets zum Empfangen und Senden, um die Pufferauslastung zu maximieren.

Mein aktueller UDP-Stack reagiert nur auf den Wiznet-Interrupt und lädt keine nicht benötigten Nutzdaten herunter. Ich verwende es UDP, paketbasiert (keine Streams), und verwende Broadcasts an Ports zum Senden (um zu vermeiden, dass MAC-Daten für ARP-Zwecke zwischengespeichert werden müssen, obwohl dies im Nachhinein möglicherweise nicht die beste Opimisierung ist).

Auf dem 60MIPS-Dspice dauert ein Roundtrip (Empfangen eines kleinen Pakets, Antworten mit einem kleinen Paket) ungefähr 100-120us, von denen ungefähr 10-12us CPU-Zeit in drei verschiedenen Blöcken ist (Pre-Receive (3-5us), Post-Receive und Presend (5-7 us abhängig) und post send (2us). Einmal alle 2kb muss ich einige Wartungsarbeiten durchführen, die ungefähr 40us Wandzeit und 5us CPU Zeit sind.

Kurze Befehle werden mit erweitertem Puffer ausgeführt. Länger werden mit DMA verwendet (bei dspice benötigt DMA 2 Bit Zeit zwischen Bytes (oder Wörtern im 16-Bit-Modus), erweiterter Puffer nicht).

Die Suite ist (noch) nicht geöffnet, aber wenn jdn Zeiger benötigt, antworten Sie bitte in den Kommentaren. Ich plane, den Stack im kommenden Jahr auf pic32 (mk) zu portieren.

Marco van de Voort
quelle