Conexión Ethernet con el integrado ENC28J60 de Microchip

Conexión Ethernet con el integrado ENC28J60 de Microchip

Conexión Ethernet con el integrado ENC28J60 de Microchip

El integrado ENC28J60 es un controlador Ethernet con interfaz para bus SPI. Está diseñado para ser usado con pequeños sistemas, normalmente basados en microcontroladores.

Tabla de contenidos

    Su bus SPI puede funcionar hasta a 20 MHz y la conexión Ethernet tiene una velocidad máxima de 10 Mbit/s (10BASE-T) soportando los modos Dúplex (Full-Duplex) y Semi-dúplex (Half-Duplex) con detección y corrección automática de la polaridad. Aunque 10 Mbit/s puede parecer una velocidad baja comparada con la red GigaBit Ethernet que es la más frecuente en la actualidad, pero es más que suficiente para integrar en una red un pequeño dispositivo microcontrolado, por ejemplo, para realizar funciones como un objeto de IoT (Internet of Things, Internet de las cosas)

    Funciona a 3,3 V aunque es tolerante a señales de 5 V, por lo que es muy fácil integrarlo con diferentes microcontroladores así como trabajar con él durante el prototipado o la fase de pruebas.

    Conexión a MCU del ENC28J60 Ethernet SPI 10BASE-T

    Incluye de manera interna un buffer configurable para recepción/transmisión, un FIFO circular para la recepción y acceso directo a memoria (DMA) para agilizar el movimiento de datos. Es capaz de hacer por hardware las sumas de verificación (checksum) y otras operaciones típicas de las comunicaciones Ethernet por lo que su integración a nivel de software en un proyecto es muy sencilla.

    La configuración típica necesita, además de un oscilador de 25 MHz (un cristal con sus correspondientes condensadores) un conector y los transformadores Ethernet, que suelen encontrarse frecuentemente encapsulados junto con otros componentes como resistencias o los LED para informar de enlace y del estado recepción/transmisión en un bloque que contiene el conector RJ45.

    Módulos ENC28J60 Ethernet SPI 10BASE-T

    Sólo se fabrica para montaje de superficie (SMT/SMD) en encapsulados de 28 pines SPDIP (un DIP con mayor densidad de pines), SSOP, SOIC y QFN por lo que para realizar pruebas o prototipos se suele trabajar con módulos como los de la imagen anterior, de los que, además, hay fácil disponibilidad de unidades sueltas, frente al propio integrado que suele estar en el mercado en lotes grandes.

         

    Integrado ENC28J60

         
    Vcap 01 28 Vdd
    Vss 02 27 LEDA
    CLKOUT 03 26 LEDB
    INT 04 25 Vddosc
    NC 05 24 OSC2
    SO 06 23 OSC1
    SI 07 22 Vssosc
    SCK 08 21 Vsspll
    CS 09 20 Vddpll
    RESET 10 19 Vddrx
    Vssrx 11 18 Vsstx
    TPIN- 12 17 TPOUT+
    TPIN+ 13 16 TPOUT-
    RBIAS 14 15 Vddtx
               

    Además de (1) la alimentación, una vez montado el integrado quedarán expuestas (2) las conexiones Ethernet por el extremo del conector RJ45 y por la parte microcontrolada del montaje el bus SPI (MOSI/MISO/SCLK/CS) y (3) gestionado directamente por el microcontrolador o en otra parte de la electronica del montaje se puede conectar INT, que puede utilizarse como WOL (Wake-On-LAN) o activación remota por red (Remote Wake-up), RESET y una conexión a reloj externo CLKOUT.

    esquema simbólico conexión ENC28J60

    Como ejemplo, para realizar estas conexiones entre un módulo con el integrado ENC28J60 y una placa Arduino habría que seguir los valores de la siguiente tabla en función del tipo de placa.

    ENC28J60 Arduino UNO Arduino MEGA / DUE Arduino Leonardo
    MISO (SO) MISO (pin 12) MISO (pin 50) MISO (conector ICSP)
    MOSI (SI) MOSI (pin 11) MOSI (pin 51) MOSI (conector ICSP)
    SCK SCK (pin 13) SCK (pin 52) SCK (conector ICSP)
    RESET RESET RESET RESET
    INT INT0 (pin 2) INT4 (pin 2) INT0 (pin 2)
    SS (CS) SS (pin 10)* SS (pin 53)* pin 10*
    Vdd (3,3 V) 3V3 3V3 3V3
    Vss (GND) GND GND GND

    En general, las conexiones son las correspondientes a las que cabría esperar según lo dicho (y la lógica) pero hay algunas diferencias entre las placas. En el caso de Arduino Leonardo, salvo que se haya soldado manualmente el pin SS en la placa (es habitual añadir a mano los pines 22-CTS y 8-SS) se usa el pin 10, que no tiene esta asignación, por lo que será necesario considerarlo en el software de control. Por otra parte, no es imprescindible utilizar el pin «estándar» para seleccionar (activar) el dispositivo esclavo pero la mayoría de las librerías Ethernet para manejar el integrado esperan usar ese pin (y con esa finalidad) por lo que habrá que modificarlas en caso contrario y en algunos casos (algunas librerías) cuando se use la placa Leonardo.

    Modificación Arduino Leonardo para añadir los pines SS y CTS

    Otra de las consideraciones que hay que atender corresponde también con la placa Leonardo y al uso del conector ICSP en lugar de los correspondientes (de los bloques laterales) en la placa Arduino UNO

    Publicar comentario

    Puede que te hayas perdido