Neuer Ethernet-Controller ENC28J60 und seine Schnittstellentechnologie
2026-02-21 12:29:10··#1
Zusammenfassung: Dieser Artikel beschreibt Struktur, Funktion sowie Hardware- und Software-Design des neuen eigenständigen Ethernet-Controllers ENC28J60 und seiner externen Schnittstelle. Der ENC28J60 nutzt eine standardmäßige serielle SPI-Schnittstelle und benötigt für den Anschluss an einen Mikrocontroller lediglich vier Leitungen. Dies ist vorteilhaft für die Implementierung von Ethernet-Funktionalität in kleinen Systemen. Auch für Chips ohne SPI-Schnittstelle bietet er eine komfortable Möglichkeit zur Nutzung einer simulierten SPI-Schnittstelle. Schlüsselwörter: Ethernet, ENC28J60, SPI-Schnittstelle. Einleitung: Der ENC28J60 ist ein kürzlich von Microchip Technology eingeführter, 28-poliger, eigenständiger Ethernet-Controller. Bisher waren eigenständige Ethernet-Controller für die Entwicklung eingebetteter Systeme für PCs konzipiert, wie beispielsweise der RTL8019, AX88796L, DM9008, CS8900A und LAN91C111. Diese Geräte sind nicht nur komplex und sperrig, sondern auch relativ teuer. Aktuell verfügen die meisten Ethernet-Controller auf dem Markt über Gehäuse mit mehr als 80 Pins. Der ENC28J60 hingegen, der dem IEEE-802.3-Protokoll entspricht, benötigt nur 28 Pins und bietet somit alle notwendigen Funktionen bei gleichzeitig deutlich vereinfachtem Design und reduziertem Platzbedarf. 1. Struktur und Funktion: Der Ethernet-Controller ENC28J60 nutzt die branchenübliche serielle Peripherieschnittstelle (SPI) und zeichnet sich durch folgende Hauptmerkmale aus: ◆ IEEE-802.3-konform. Er integriert eine 10-Mbit/s-Ethernet-Bitübertragungsschicht (PHY) und einen Medienzugriffscontroller (MAC) und ermöglicht so die zuverlässige Übertragung und den Empfang von Datenpaketen gemäß branchenüblichen Ethernet-Protokollen. ◆ Programmierbare Filterfunktionalität. Spezielle Filter, darunter der programmierbare Mustererkennungsfilter von Microchip, werten MagicPacket-, Unicast-, Multicast- und Broadcast-Pakete automatisch aus und akzeptieren oder verwerfen sie, um die Verarbeitungslast des Hauptmikrocontrollers zu reduzieren. ◆ 10-Mbit/s-SPI-Schnittstelle. Ein branchenüblicher serieller Kommunikationsanschluss ermöglicht die Netzwerkanbindung selbst von 8-Bit-Mikrocontrollern mit nur 18 Pins. ◆ Programmierbarer 8-KB-Dual-Port-SRAM-Puffer. Dieser Puffer speichert, liest und modifiziert Pakete effizient und reduziert so die Speicherlast des Hauptmikrocontrollers. Er bietet einen flexiblen und zuverlässigen Datenverwaltungsmechanismus. 2. Hardware-Design Das Hardware-Design des ENC28J60 erfordert die Berücksichtigung verschiedener Aspekte, darunter die Reset-Schaltung, der Taktoszillator, der Starttimer des Oszillators, der Taktausgangspin, der Transformator, die Anschlüsse und andere externe Bauteile sowie die Ein-/Ausgangspegel. (Abbildung 1 dient als Referenz.) 2.1 Reset-Schaltung Der ENC28J60 verfügt über eine Power-On-Reset-Funktion. Ein Low-Pegel am RESET-Pin versetzt den ENC28J60 in den Reset-Modus; der RESET-Pin besitzt intern einen schwachen Pull-up-Widerstand. Die Hardware-Anschlüsse des ENC28J60 sind in Abbildung 1 dargestellt. 2.2 Taktoszillator Der ENC28J60 benötigt einen 25-MHz-Quarzoszillator, der an die Pins OSC1 und OSC2 angeschlossen wird; alternativ kann er auch mit einem externen Taktsignal angesteuert werden. In diesem Fall wird ein externer 3,3-V-Takt an Pin OSC1 angeschlossen, und OSC2 wird zur Reduzierung des Systemrauschens entweder getrennt oder über einen Widerstand geerdet. 2.3 Oszillator-Starttimer Der ENC28J60 verfügt über einen internen Oszillator-Starttimer (OST), der nach dem Einschalten 7500 Taktzyklen (300 µs) benötigt. Der interne PHY kann erst nach Ablauf des OST ordnungsgemäß funktionieren. Während dieser Zeit ist das Senden und Empfangen von Nachrichten nicht möglich. Der Host-Computer kann anhand des Zustands des CLKRDY-Bits im ESTAT-Register des ENC28J60 feststellen, ob das Senden oder Empfangen von Nachrichten aktiviert ist. Es ist wichtig zu beachten, dass beim Einschalten, Zurücksetzen oder Aufwachen des ENC28J60 aus dem Energiesparmodus das CLKRDY-Bit im ESTAT-Register gesetzt sein muss. Nur wenn CLKRDY gesetzt ist, können Nachrichten gesendet und empfangen sowie auf die zugehörigen Register zugegriffen werden. 2.4 Taktausgangspin: Der CLKOUT-Pin dient als Taktquelle für andere Geräte im System. Nach dem Einschalten bleibt der CLKOUT-Pin auf Low-Pegel. Nach dem Zurücksetzen läuft der OST-Zähler weiter. Nach Ablauf des OST gibt CLKOUT einen Takt mit einer Frequenz von 6,25 MHz aus. Die Taktausgabe wird über das ECOCON-Register deaktiviert, eingestellt und aktiviert. Die Taktausgabe kann durch 1, 2, 3, 4 oder 8 geteilt werden, wobei beim Einschalten standardmäßig eine Teilung von 4 eingestellt ist. Nach einer Änderung der ECOCON-Registerkonfiguration hat der CLKOUT-Pin eine Verzögerung von 80–320 ns (bleibt auf Low-Pegel), bevor er entsprechend der Einstellung ein Taktsignal mit fester Frequenz ausgibt. Software oder ein Reset-Signal am RESET-Pin beeinflussen den Zustand des ECOCON-Registers nicht. Der PowerDown-Modus hat ebenfalls keinen Einfluss auf den Taktausgang. Wenn der Taktausgang deaktiviert ist, bleibt der CLKOUT-Pin auf Low-Pegel. 2.5 Transformatoren, Abschlusswiderstände und andere externe Bauteile Zur Realisierung der Ethernet-Schnittstelle des ENC28J60 werden mehrere Standard-Bauteile benötigt: ein Impulstransformator, Vorwiderstände, Energiespeicherkondensatoren und Entkopplungskondensatoren. Die Differenzeingänge (TPIN+/TPIN-) benötigen einen Impulstransformator mit einem Übersetzungsverhältnis von 1:1 zur Implementierung von 10BASET. Die Differenzausgänge (TPOUT+/TPOUT-) benötigen einen Impulstransformator mit einem Übersetzungsverhältnis von 1:1 und Mittelanzapfung. Der Transformator muss eine Isolationsfähigkeit von mindestens 2 kV aufweisen und ESD-geschützt sein. Detaillierte Anforderungen an den Transformator finden Sie in Kapitel 16 „Elektrische Eigenschaften“ des Chip-Datenblatts. Jedes Bauteil muss über zwei 50-Ω-Widerstände mit 1 % Genauigkeit und einen in Reihe geschalteten 0,01-μF-Kondensator geerdet werden. Der Autor verwendete den integrierten Ethernet-Isolationstransformator HR901170A mit RJ45-Buchse der Firma Zhongshan Hanren. Die analoge Schaltung im ENC28J60 benötigt einen 2-kΩ-Vorspannungswiderstand (1 %) zwischen dem RBIAS-Pin und Masse. Einige digitale Schaltungen arbeiten mit 2,5 V, um den Stromverbrauch zu reduzieren. Der ENC28J60 verfügt über einen integrierten 2,5-V-Regler zur Erzeugung der benötigten Spannung. Zur Gewährleistung der Versorgungsstabilität muss ein 10-μF-Kondensator zwischen dem VCAP-Pin und Masse angeschlossen werden (dieser 2,5-V-Regler ist nicht für externe Lasten ausgelegt). Alle Versorgungsspannungsanschlüsse (VDD, VDDOSC, VDDPLL, VDDRX, VDDTX) müssen an dieselbe externe 3,3-V-Versorgung angeschlossen werden. Ebenso müssen alle Masseanschlüsse (VSS, VSSOSC, VSSSPLL, VSSTX) mit derselben externen Masse verbunden werden. Zur Entkopplung sollte zwischen jedem Versorgungsspannungsanschluss und Masse ein 0,1-µF-Keramikkondensator angeschlossen werden (der Kondensator sollte so nah wie möglich am Versorgungsspannungsanschluss platziert werden). Da die Ansteuerung der Twisted-Pair-Schnittstelle einen hohen Strom erfordert, sollte die Versorgungsleitung so breit und die Verbindung zum Anschluss so kurz wie möglich sein, um die Verluste durch den Innenwiderstand der Versorgungsleitung zu minimieren. 2.6 Eingangs-/Ausgangspegel Der ENC28J60 ist ein 3,3-V-CMOS-Baustein, lässt sich aber sehr einfach in 5-V-Systeme integrieren: Die Eingänge SPI, CS, SCK, SI und der RESET-Pin sind alle 5-V-fähig. Wenn die SPI- und Interrupt-Eingänge nicht mit dem 3,3-V-angesteuerten CMOS-Ausgang kompatibel sind, kann ein unidirektionaler Pegelwandler erforderlich sein. Die 74HCT08 (Vierfach-AND-Gatter), 74ACT125 (Vierfach-Tri-State-Puffer) und viele 5V-CMOS-Pufferchips mit TTL-Pegeleingängen können die notwendige Pegelverschiebung bereitstellen. 2.7 LED-Konfiguration Die Pins LEDA und LEDB unterstützen die automatische Polaritätserkennung beim Reset. Sie können LEDs direkt ansteuern oder als Stromsenke dienen. Beim Reset erkennt der ENC28J60 den LED-Anschluss und steuert ihn gemäß den Standardeinstellungen des PHLCON-Registers an. Änderungen der LED-Polarität während des Betriebs werden erst beim nächsten Systemreset erkannt. Der Anschluss von LEDB ist speziell; er wird beim Reset erkannt, um die Initialisierung des PDPXMD-Bits im PHCON1-Register festzulegen. Steuert LEDB die LED direkt an, wird das PHCON1.PDPXMD-Bit gelöscht, und der PHY arbeitet im Halbduplex-Modus. Nimmt LEDB hingegen einen Rückstrom auf, um die LED zum Leuchten zu bringen, wird PHCON1.PDPXMD gesetzt, und der PHY arbeitet im Vollduplex-Modus. Wenn LEDB nicht angeschlossen ist, ist der Wert von PHCON1.PDPXMD nach dem Reset undefiniert. In diesem Fall muss der Hauptcontroller dieses Bit entsprechend setzen, damit der PHY im erforderlichen Zustand (Halbduplex oder Vollduplex) arbeitet. 3. Softwareschnittstelle 3.1 SPI-Schnittstelle Die SPI (Serial Peripheral Interface) ist eine synchrone, serielle Vollduplex-Schnittstelle, die auf einer Master-Slave-Konfiguration basiert. Es handelt sich um eine 4-Draht-Schnittstelle: Master Output/Slave Input (MOSI), Master Input/Slave Output (MISO), Serial Clock (SCK) und Slave Select (SSEL). Mehrere Master oder Slaves können am selben Bus angeschlossen sein, jedoch kann immer nur ein Master mit einem Slave gleichzeitig kommunizieren. Bei einer Datenübertragung werden Daten synchron gesendet und empfangen: Der Master sendet ein Byte an den Slave, und der Slave sendet ebenfalls ein Byte an den Master zurück. Die Datenübertragung ist theoretisch Vollduplex. In der Praxis enthält jedoch in den meisten Fällen nur eine Richtung des Datenstroms sinnvolle Daten. Die Hauptmerkmale des SPI-Formats sind der ungültige Zustand und die Phase des SCK-Signals. Der Datenübertragungstakt wird vom Master bereitgestellt. Gängige Takteinstellungen basieren auf zwei Parametern: Taktpolarität (CPOL) und Taktphase (CPHA). CPOL definiert den aktiven Zustand des seriellen SPI-Takts, während CPHA die Taktphase relativ zu den Ausgabedatenbits des Slaves definiert. Die Einstellungen von CPOL und CPHA bestimmen die Taktflanke für die Datenabtastung. Abhängig von den Einstellungen von CPOL und CPHA gibt es vier SPI-Modi (siehe Tabelle 1). [IMG]/uploadpic/THESIS/2007/6/2007060609494542201D.jpg[/IMG] 3.2 Verbindung zwischen ENC28J60 und Mikrocontroller Die Verbindung zwischen dem ENC28J60 und dem Mikrocontroller (MCU) erfolgt über SPI mit einer Übertragungsrate von 10 Mbit/s. Bei Chips ohne SPI-Schnittstelle kann dies durch die Simulation einer SPI-Schnittstelle über I/O-Ports erreicht werden. Der ENC28J60 unterstützt ausschließlich den SPI-Modus 0,0. Der Mikrocontroller kann Befehle über die SPI-Schnittstelle senden, um auf die Register des ENC28J60 zuzugreifen oder den Sende-/Empfangspuffer zu lesen/beschreiben und so die entsprechenden Operationen durchzuführen. Ein Reset kann auch softwareseitig über die SPI-Schnittstelle implementiert werden; ein Software-Reset beeinflusst den Zustand des RESET-Pins nicht. Der ENC28J60 verfügt über zwei Interrupt-Ausgänge, die zur Auslösung von Ereignis-Interrupts bzw. zum Aufwecken des Hosts über das Netzwerk verwendet werden. Die CPU nutzt einen LPC2138, um Lese-/Schreibvorgänge am SPI-Port mithilfe von Makrodefinitionen zu implementieren. SOSPDR ist das SPI-Datenregister. Dieses bidirektionale Register stellt Daten für die SPI-Übertragung und den -Empfang bereit. Gesendete Daten werden durch Schreiben in dieses Register bereitgestellt, empfangene Daten können daraus gelesen werden. SOSPSR ist das SPI-Statusregister. Es muss vor dem Betrieb der SPI-Schnittstelle initialisiert werden. Der Quellcode zum Lesen/Schreiben der SPI-Schnittstelle ist unten aufgeführt. #define READSPI(Val) { S0SPDR=0x00; while (0==(S0SPSR&0x80)); Val=S0SPDR; } #define WRITESPI(Val) { if (0==(S0SPSR&0x40)) { S0SPDR=Val; while (0==(S0SPSR&0x80)); } } Der SSP des LPC2138 kann ebenfalls zur Verbindung mit dem ENC28J60 verwendet werden, muss jedoch in den SPI-Modus versetzt werden. Der SSP verfügt über einen 8-Frame-FIFO für Senden/Empfangen; eine unsachgemäße Handhabung führt zu Lese-/Schreibfehlern. Das Vorhandensein eines Puffers kann das Timing beim Lesen/Schreiben des ENC28J60 beeinträchtigen. Für Mikrocontroller ohne SPI-Schnittstelle kann eine Methode unter Verwendung gewöhnlicher I/O-Ports verwendet werden, um einen SPI-Master zu simulieren. In diesem Fall muss auf den ungültigen Zustand und die Phase des statischen Takts sowie auf das Timing der Ausgabedatenbits geachtet werden. Der Chip-Select-Eingang muss während des Betriebs des ENC28J60 aktiv (Low-Pegel) bleiben und nach dem Betrieb wieder auf Low-Pegel zurückkehren. Das Programm zur Simulation eines SPI-Masters lässt sich einfach anhand der Lese-/Schreibsignale des ENC28J60 erstellen. Der Autor hat bereits zuvor eine simulierte SPI-Master-Lese-/Schreiboperation auf einem MCP2515 mit einem AT89S51 implementiert. 4. Fazit: Der Autor hat die Ethernet-Kommunikation auf einer Plattform aus LPC2138, ENC28J60 und HR901170A implementiert. Im Vergleich zu anderen Lösungen ist dieses System äußerst effizient. Bei Mikrocontrollern ohne offenen Bus ist es zwar möglich, andere Ethernet-Controller über einen simulierten Parallelbus anzuschließen, dies ist jedoch nicht so effizient und performant wie die Verwendung einer SPI-Schnittstelle oder eines universellen I/O-Ports zur Simulation einer SPI-Schnittstelle für den Anschluss des ENC28J60. Der ENC28J60 ist ein herausragender, eigenständiger Ethernet-Controller: Dank der SPI-Schnittstelle können selbst kleine Mikrocontroller Netzwerkverbindungen herstellen; integrierte MAC- und PHY-Kerne machen weitere Peripheriegeräte überflüssig; er verfügt über programmierbare Filterfunktionen, die verschiedene Datenpakete automatisch auswerten, akzeptieren oder verwerfen und so die Rechenlast des Hauptmikrocontrollers reduzieren; und er integriert einen programmierbaren 8-KB-Dual-Port-SRAM-Puffer, was den Betrieb flexibel und komfortabel macht. Sein Nachteil ist die Beschränkung auf 10 BASETs. Referenzen: [1] Microchip Technology Inc. ENC28J60 Stand Alone Ethernet Controller with SPI Interface. [2] Philips Semiconductors. LPC213x User Manual.