Está en la página 1de 32

INDICE - Introduccin Mdulos internos y pines de E/S El oscilador Oscilador Start-up Timer El pin CLKOUT y el registro ECOCON Conexionado

externo, bobinas y otras yerbas Niveles tensin en los pines de E/S Configuracin de los LEDs Registros y memoria -Organizacin de la memoria interna - Los registros de control - ECON1 - ECON2 - El buffer Ethernet - Registros PHY - Escaneo de registros PHY - Registros PHSTAT1 y PHSTAT2 - Registros PHID1 y PHID2 - La interfaz SPI - Set de instrucciones SPI -Comando para leer registros de control - Comando para leer la memoria buffer - Comando para escribir registros de control

ENC28J60 de Microchip El ENC28J60 de Microchip es un circuito integrado de 28 pines capaz de hacer de interfase entre nuestros proyectos y una red Ethernet. Introduccin El ENC28J60 es un controlador Ethernet dotado de un puerto SPI (Serial Peripheral Interface), especialmente diseado para actuar como un puente entre una red Ethernet y un microcontrolador equipado con SPI. El ENC28J60 cumple con las especificaciones IEEE 802.3, e incorpora una serie de esquemas de filtrado de paquetes para limitar el numero de paquetes entrantes. Tambin provee un mdulo DMA interno para facilitar el flujo de datos y hardware especifico para el calculo de las sumas de control (IP checksums). La comunicacin con el microcontrolador que hace las veces de host se realizan mediante el bus SPI a una velocidad de hasta 10Mb/s y dos pines especiales capaces de provocar interrupciones en el ENC28J60. Otros dos pines pueden utilizarse para manejar LEDs que indiquen la conexin y la actividad de la red. La figura siguiente muestra el diagrama en bloques del integrado:

Figura1: Diagrama en bloques del EN28J60. El esquema de la figura 2 corresponde a una aplicacin tpica del ENC28J60:

Figura 2: Circuito de aplicacin tpico. Adems del integrado, puede verse que se utilizan dos transformadores de pulso y varios componentes pasivos indispensables para conectar el ENC28J60 a una red Ethernet de 10Mb/s. El EN28J60 tiene siete bloques

funcionales importantes: 1) La interfaz SPI que se encarga de comunicarlo con el microcontrolador host 2) Los registros que se emplean para monitorear y controlar al ENC28J60 3) Un buffer RAN dual para los paquetes recibidos y enviados 4) Un arbitro que controla los accesos al buffer RAM mediante DMA 5) Un bus que interpreta los datos y comandos recibidos va SPI 6) Un mdulo MAC (Maduim Access Control) que cumple con IEEE 802,3 7) Una mdulo PHY (Physical Layer) que codifica y decodifica los datos anlogos presentes en el par trenzado. Adems de ello, el dispositivo cuenta con otros bloques de soporte, como el oscilador, regulador de voltaje interno, adaptadores de nivel para proveer E/S de 5V y lgica de control. El chip viene en dos encapsulados diferentes:

Figura 3: Pinout de cada encapsulado Veamos primero una lista de la funcin de cada pin (Figura 4) y luego explicaremos con ms detalle cada uno de ellos:

Figura 4: Descripcin de la funcion de cada pin

El oscilador: Para funcionar, el ENC28J60 necesita de un oscilador que le marque el ritmo. El chip est diseado para funcionar a 25MHz, y una de las formas de proporcionrselos es utilizando un cristal como se ve en la figura 5.

Figura 5: Oscilador a cristal Se conecta el cristal entre los pines OSC1 y OSC2, y se ponen tambin ambos extremos a GND mediante C1 y C2. El valor de C1 y C2 no est en la hoja de datos, pero 15pf parecen funcionar bien en la mayora de los proyectos. El resistor R1 solo es necesario con algunos tipos de cristales (AT strip cut crystals") pero normalmente no es necesaria. La otra forma de utilizar el ENC28J60 es con una seal de clock externa (figura 2), con una amplitud de 3,3V y aplicada al pin OSC1. En este caso, puede dejarse el pin OSC2 al aire o conectarlo a GND a travs de un resistor para minimizar el ruido.

Figura 6: Oscilador externo


Oscilador Start-up Timer Este chip posee lo que Microchip denomina Oscillator Start-up Timer (OST). Se trata de un mecanismo destinado a asegurar que el oscilador y el mdulo PHYse hayan estabilizado antes de que el host intente utilizarlos. Para ello, el OST se encarga de esperar a que ocurran 7500 ciclos de reloj (300us) luego de ocurrido el Power-On Reset (encendido del chip) o un WakeUp (despertar) posterior a un Power-Down (dormir). Durante este

tiempo, todos los registros y buffers de memoria pueden ser consultados o escritos a travs del bus SPI. Sin embargo, el software del host no debera intentar transmitir paquetes, habilitar la recepcin de paquetes o acceder a los registros MAC, MII o PHY. Cuando el tiempo del OST haya finalizado, el bit CLKRDY del registro ESTAT se pondr en 1. Nuestro programa debera consultar ese bit para tener la seguridad de que el ENC28J60 est listo para funcionar.

El pin CLKOUT y el registro ECOCON La existencia de este pin tiene como fin proveer al host (o a cualquier otro circuito externo) de una fuente de reloj. CLKOUT posee un prescaler interno capaz de dividir los 25MHz del reloj del ENC28J60 por 1, 2, 3, 4 u 8, seleccionable a travs del registro ECOCON. Para crear una seal de reloj, el pin CLKOUT se mantiene en estado bajo hasta transcurrido el peridodo estipulado por el OST. Luego, comienza a enviar 0 y 1 con una frecuencia por defecto de 6,25 MHz (el clock del ENC28J60 / 4). Si el usuario modifica el valor del preescaler, este se mantiene an cuando ocurra un RESET. Si por algn motivo el usuario necesita deshabilitar temporalmente el pin CLKOUT, puede hacerlo escribiendo 0 en el registro ECOCON, y el pin quedar en estado bajo. Hay que tener en cuenta que cuando se modifica el valor de ECOCON para cambiar el valor del preescaler, algunos pulsos de reloj pueden perderse en CLKOUT. Tpicamente, al hacer ese cambio, el pin se mantiene en estado bajo entre 1 y 8 ciclos del OSC1. Eso puede verse en la figura siguiente:

Figura 7: Salida de CLKOUT y el registro ECOCON

Los bits del 7 al 3 no se encuentran implementados en este registro, y al leerlos devuelven 0. Los otros tres permiten 8 combinaciones diferentes:
COCON2:COCON0 111 = Reservado para test durante la fabricacin. No usar. 110 = Reservado para test durante la fabricacin. No usar. 101 = CLKOUT dividido 8 (3.125 MHz) 100 = CLKOUT dividido 4 (6.25 MHz) 011 = CLKOUT dividido 3 (8.333333 MHz) 010 = CLKOUT o dividido 2 (12.5 MHz) 001 = CLKOUT dividido 1 (25 MHz) 000 = CLKOUT deshabilitado, pin en estado bajo.

Conexionado externo, bobinas y otras yerbas Para funcionar y poder conectarse a la red Ethernet, el ENC28J60 necesita de algunos componentes externos, tal como puede verse en la figura 8. Los pinesTPIN+ y TPIN- deben conectarse a un transformador 1:1 especial para redes 10BASE-T . Los pines TPOUT+ y TPOUT- necesitan de un transformador de pulso con relacin 1:1 y punto medio. Este transformador debe ser capaz de proveer una aislacin como mnimo de 2000V. Adems, todos los pines mencionados necesitan de un resistor de 50 ohms con un 1% de tolerancia.

Figura8: Conexionado externo. La circuitera analgica interna del ENC28J60 tambin requiere que conectemos un resistor de 2K con un 1% de tolerancia entre el pin RBIAS y GND. El chip es capaz de operar tambin con una tensin de alimentacin de solo 2.5V, en cuto caso habr que disponer un condensador de 10 uF entre el pin VCAP y GND. Todos los pines de alimentacin (Vdd) deben ser conectados a la misma fuente de 3.3V, y todos los pines GND deben conectarse al mismo nodo. Cada par de pines Vdd/Vss debe tener su propio condensador cermico de 0.1uF, tan cerca de los pines como sea posible. Hay que tener en cuenta que corrientes relativamente altas van a circular entre el integrado y el par trenzado, por lo que las pistas correspondientes deberan ser lo mas cortas y anchas posibles para minimizar su resistencia elctrica. Niveles tensin en los pines de E/S El ENC28J60 es un chip diseado para operar a 3.3V. Sin embargo, puede ser integrado con facilidad en circuitos que se alimentan con 5V. Los pines RESET,SPI CS, SCK y SI funcionan directamente con 5V. Por otro lado, si el host opera a 5V, puede que necesites implementar un traductor capaz de manejar las salidas CMOS de 3.3V del ENC28J60. Un simple y econmico 74HCT08 (cuatro compuertas AND), un 74ACT125 (cuatro bufferes triestado) o cualquier otro chip CMOS de 5V con bufferes de entrada adaptados para niveles TTL puede ser usado como adaptador. El uso de bufferes triestado permite una fcil integracin en sistemas que deben compartir el bus SPI con otros dispositivos. La figura 9 ilustra dos formas en que esto puede ser implementado.

Figura 9

Configuracin de los LEDs Los pines LEDA y LEDB permiten la conxin de sendos LEDs destinados a brindar informacin sobre el estado del chip. Una caracterstica especial de estos dos pines es que el ENC28J60 puede detectar la polaridad con la que se han conectado los LEDs (es decir, si debe entregar corriente para que brille, o drenarla) de forma automatica luego de que tiene lugar RESET.

Figura 10: Polaridad de LEDB y efecto en PDPXMB En el caso de LEDB, tal como indica la figura 10, la forma de conectar el diodo LED fija el estado del bit PHCON1 en el registro PDPXMB. Si el LED se conecta de forma que la corriente fluya hacia LEDB, el bit se pone a 0 en cada RESET y el mdulo PHY opera en modo half-duplex. Si

la corriente fluye desde el pin, el bit se pone en 1 en cada RESET y el mdulo PHY opera en modo full-duplex. Si no se conecta ningn LED, el bit PDPXMD permanece en estado indeterminado. El registro PHLCON se encarga de controlar el comportamiento de los LEDs y determinar que funcin cumplen. La tabla siguiente (Figura 11) resume todos los estados y opciones posibles:

Figura 11: PHLCON

Organizacin de la memoria interna Toda la memoria disponible en el ENC28J60 es del tipo RAM esttica. Se divide en tres bloques principales: 1)Registros de control 2)Buffer Ethernet 3)Registros del mdulo PHY El primer bloque contiene los CRs (Control Registers) que se emplean para el controlar y obtener informacin sobre el estado del ENC28J60. Todos estos registros pueden ser accedidos (lectura y escritura) mediante la interfase SPI. El segundo bloque -el Buffer Ethernet- tiene un tamao que puede ser ajustado por el usuario y tiene como funcin servir de memoria temporal para los datos que se envan (o reciben) a (o desde) la red. Esta zona de memoria tambin puede ser accedida mediante la interfase SPI a travs de los comandos apropiados, que sern tratados ms adelante en este documento. La zona correspondiente a los registros del mdulo PHY no puede ser accedida va SPI. El acceso slo puede realizarse mediante la Media Independent Interface (MII) implementada en la MAC. La figura siguiente muestra el mapa de memoria del chip:

Figura 12: Mapa de memoria del ENC28J60. Los registros de control Los registros constituyen la interfase principal entre el host y la lgica interna del ENC28J60. Escribiendo los valores adecuados en los registros correctos puede controlarse la operacin del chip, y la lectura de esta zona de la memoria proporciona al host valiosa informacin sobre el estado del ENC28J60. La memoria asignada a los Registros de Control est dividida en cuatro bancos. Dos bits en el registro ECON1 (BSEL1:BSEL2) permiten seleccionar el banco con el que se va a trabajar. Cada banco posee 32 bytes de longitud y puede ser direccionado mediante 5 bits. Las ultimas cinco posiciones de cada banco (1Bh a 1Fh) apuntan a un juego comn de registros: EIE, EIR, ESTAT, ECON1 y ECON2. Estos son los registros ms importantes a la hora de controlar o monitorizar la operacin del ENC28J60. Al estar repetidos en todos los bancos, no es necesario efectuar un cambio de banco cada vez que se los quiere utilizar. Al igual que todos los dems registros del chip, sern analizadas uno por uno ms adelante. Existen direcciones de registro que a pesar de ser vlidas, no contienen ningn registro utilizable. Si se intenta escribir en ellas la operacin se

ignora, y si se los lee devuelven 0. Los registros de las direcciones 1Ah en cada banco estn reservadas y no deberia escribirse o leerse en ellos. Los registros disponibles pueden listarse en tres grupos: ETH, MAC y MII. Los registros cuyos nombres comienzan por E pertenecen al primer grupo, los que poseen nombres que comienzan con MA pertenecen al segundo y los que tienen nombres que empiezan con MI pertenecen al tercero. Este es el mapa de registros del ENC28J60

Figura 13: Mapa de registros del ENC28J60 Y a continuacin, el detalle de los bits que los componen y la funcin que tienen asignada:

Figura 14: Contenido de cada registro (primera parte)

Figura 15: Contenido de cada registro (segunda parte)

El registro ECON1 Este registro tiene como cometido controlar las principales funciones del ENC28J60. Habilita la transmisin de datos, selecciona los bancos de registros, controla los DMA, etc.

Figura 16: Registro ECON1 El registro ECON2 Este registro tiene funciones similares a ECON1

Figura 17: Registro ECON2 NOTA: La funcin de cada uno de los bits ser explicada con un ejemplo cuando tengamos montado el hardware para hacer pruebas. El buffer Ethernet El buffer Ethernet contiene la memoria utilizada por el ENC28J60 para recibir y enviar datos. El tamao total de esta memoria es de 8KB, y est separada en dos zonas: una para la transmisin, y otra para la recepcin. El monto de memoria utilizado en cada una de estas areas puede ser completamente configurado por el usuario mediante la interfase SPI. La relacion entre ambos espacios de memoria puede verse en la figura siguiente:

Figura 18: El buffer Ethernet El buffer de recepcin Se trata de un buffer circular FIFO controlado por hardware. Los pares de registros ERXSTH:ERXSTL y ERXNDH:ERXNDL hacen las veces de punteros que definen el tamao y la localizacin del buffer dentro de la memoria. El byte apuntado por ERXST y el byte apuntado por ERXND son sus extremos, y ambas posiciones estn incluidas en el buffer. A medida que se reciben bytes desde la interfase Ethernet son escritos secuencialmente en el buffer. Cuando el buffer se completa y el hardware nota que ha escrito el ultimo byte recibido en la posicin

apuntada por ERXND, automticamente escribe el siguiente dato en la posicin apuntada por ERXST. Esto significa que en la practica el buffer nunca puede desbordarse. El host solamente puede definir el valor de estos punteros cuando la lgica de control se encuentra deshabilitada (ECON1.RXEN = 0). No hay problemas en utilizar toda la zona comprendida entre 0000h y 1FFFh como buffer de recepcin. Los registros ERXWRPTH:ERXWRPTL determinan la posicin dentro del buffer en que el hardware escribir el prximo byte que reciba. Este puntero es de solo lectura, y se actualiza automticamente cada vez que se recibe un paquete. Este puntero puede ser til para determinar cuanto espacio libre queda en el FIFO. Durante la operacin normal, los registros ERXRDPT contienen la posicin en la que se estn leyendo datos. Si el FIFO se llena, los nuevos datos no se escribirn encima de los viejos. Para poder continuar con la recepcin, el host debe encargarse de hacer avanzar peridicamente este puntero. El buffer de transmisin Todo el espacio del buffer Ethernet que no se haya definido como buffer de recepcin se comportar como buffer de transmisin. El host debe encargarse de manejar los paquetes que se van a enviar dentro de este espacio de memoria. Los punteros ETXST y ETXND son programados con la direccin -dentro del buffer de transmisin- en que se encuentra el paquete a ser enviado. El hardware no controla si el valor de estos punteros define una posicin vlida dentro del buffer de transmisin, por lo que hay que ser muy cuidadosos para no corromper la integridad de los datos contenidos en el buffer completo. Registros PHY Los registros de este grupo proporcionan el mecanismo de supervisin y control del mdulo PHY. Hay 9 en total, y todos tienen 16 bits de ancho. A diferencia de los registros ETH, MAC y MII, o incluso de los bufferes de memoria, estos registros no son accesibles directamente a traves de la interfase SPI. Puede accederse a ellos mediante un subgrupo de los registros MAC, que implementan la llamada Media Independent Interface for Management (MIIM o Interface de control independiente del dispositivo). A este subgrupo de registros se los

denomina registros MII, y puedes verlos en las figuras 19 y 20,

Figura 19

Figura 20

Leyendo los registros Cuando el host lee un registro PHY, obtiene 16 bits de datos. Estos son los pasos a seguir para leer uno de estos registros: - Escribir la direccin del registro PHY a leer en el registro MIREGADR - Poner en 1 el bit MICMC.MIIRD. Esto comienza la operacin de lectura y pone en 1 el bit MISTAT.BUSY. - Esperar 10.24 us. Confirmar el estado de MISTAT.BUSY para tener la certeza del que el ciclo de lectura finaliz (este bit habr vuelto a 0).

Hasta que esto no ocurra, el host no podr efectuar operaciones sobre MIISCAN o escribir el registro MIWRH. - Poner a 0 el bit MICMC.MIIRD - Leer el dato buscado desde los registros MIRDL y MIRDH. El orden en que se leen estos dos bytes no es importante. Escribiendo en los registros. Siempre que se escribe en uno de los registros PHY, se escriben 16 bits. Si lo que se quiere es modificar el valor de algn bit en particular, primero debe leerse el registro completo, cambiar ese bit sobre alguna variable, y luego escribir el registro completo. Estos son los pasos a seguir para escribir en uno de estos registros: - Escribir la direccin del registro PHY a escribir en el registro MIREGADR, - Escribir los 8 bits de la parte baja del dato a guardar en el registro MIWRL. - Escribir los 8 bits de la parte alta del dato a guardar en el registro MIWRH. Al escribir en este registro, la transaccin de escritura - comienza automticamente. El MISTAT.BUSY tambin se pone en 1. El ciclo de lectura demora 10.24us. Cuando finaliza, MISTAT.BUSY se pone automticamente en 0. Hasta que esto no ocurra, el host no podr efectuar operaciones sobre MIISCAN o escribir el registro MIWRH.
Escaneo de registros PHY El MAC puede ser configurado de forma que realice operaciones de lectura de de los registros PHY forma automtica. Esto simplifica bastante el trabajo del host. Para realizar una operacin de este tipo hay que seguir los pasos enumerados a continuacin: - Escribir la direccin del registro PHY a leer en el registro MIREGADR. - Poner en 1 el bit MICMD.MIISCAN. Esto hace que comience la tarea de lectura automtica y que el bit MISTAT.BUSY se ponga en 1. La primer operacin se completa transcurridos 10.24us, y cada lectura siguiente estar disponible cada 10.24us adicionales. Esta tarea se ejecuta hasta que es cancelada por el host. Luego de poner en 1 el bit MICMD.MIISCAN, los

registros MIRDL y MIRDH se actualizan automticamente cada 10.24us. No hay forma de saber si los registros han sido o no actualizados, asi que hay que tener en cuenta que cuando accedemos a los registros MII mediante el bus SPI, puede oocurrir que estemos leyendo los datos del estado anterior. Cuando se estan efectuando las operaciones de escaneo de registros, el host no debe intentar escribir enMIWRH o comenzar una operacin MIIRD. Las operaciones MIISCAN deben ser canceladas poniendo en 0 el bit MICMC.MIISCAN. Cuando el bitMISTAT.BUSY haya vuelto a 0, las operaciones de lectura normales pueden recomenzar.

Registros PHSTAT Los registros PHSTAT1 y PHSTAT2 son de solo lectura. Contienen informacin sobre el estado actual del modulo PHY. El primero de ellos (figura 21) contiene el bit LLSTAT, que brinda informacin para determinar el momento en que el link con el resto de la red falla. El registro PHSTAT1 tambin contiene un bit de estado jabber. La traduccin de jabber es algo as como hablar atropelladamente, y en este contexto se refiere a la posibilidad que poseen algunos controladores de utilizar tamaos de paquetes diferentes a los especificados por la IEEE. Este bit en alto indica que se ha detectado esa condicin desde la ultima vez que se ley el registro.

Figura 21: Registro PHSTAT1 El registro PHSTAT2 contiene informacin sobre el estado en que se encuentra el link entre el modulo PHY y la red, y si est o no transmitiendo o recibiendo datos.

Figura 22: Registro PHSTAT2

Registros PHID Los registros PHID1 y PHID2 tambin son de solo lectura. Brindan informacin que ayuda a identificar el controlador Ethernet y pueden ser utiles a la hora de depurar una aplicacin. Entre otros datos, proporcionan: - El nmero de parte del mdulo PHY (PPN5:PPN0)

- El nivel de revisin del mdulo PHY (PREV3:PREV0) - El identificador PHY, como parte del OUI (Organizationally Unique Identifier) de Microchip (PID24:PID3) El numero de parte PHY y el nmero de revisin son parte del registro PHID2. Los dos bytes superiores del identificador PHY se encuentran en PHID1, y el resto en PHID2. La localizacin exacta de cada uno puede verse en la figura 23.

Figura 23 (Hacer click aqui para descargar una versin ms grande) La informacin sobre la revisin tambin se encuentra en EREVID. Este es un registro de control, de solo lectura, que contiene el identificador de 5 bits de la versin de ENC28J60 que se est usando. La interfaz SPI El ENC28J60 esta dotado de un puerto entandar SPI. La implementacin adoptada solo permite utilizar el modo SPI 0,0. Adems, el puerto SPI del ENC28J60 requiere que SCK este idle (inactivo, desocupado) en estado bajo; no puede seleccionarse la polaridad del reloj. A travs del puerto SPI pueden enviarse comandos y datos al chip, los datos son aceptados en cada flanco de subida de la seal SCK. Los datos de salida estn presentes en la linea SO, en cada flanco de bajada de SCK. El pin CS# debe mantenerse bajo durante estas operaciones, y volver a estado alto cuando finalizan.

Figura 24: Diagramas de seales del puerto SPI

Set de instrucciones SPI La operacin del ENC28J60 depende por completo de los comandos que recibe del host a travs de la interfase SPI. Esos comandos son instrucciones, de uno o mas bytes, que pueden utilizarse para acceder a la memoria y a los bufferes Ethernet. Como mnimo, las instrucciones poseen un cdigo de 3 bits seguido por un argumento de 5 bits que representa un registro o una constante. La tabla siguiente muestra los cdigos de cada operacin disponible:

Figura 25: Set de instrucciones SPI Comando para leer registros de control El comandos para leer registros de control (RCR, por Read Control Register) permite al host leer los registros del grupo ETH, MAC y MII en cualquier orden. El contenido de los registros se obtiene mediante un registro especial de la interfase MII. Para ms informacin, ver ms arriba la seccin Registros PHY. El comando RCR comienza poniendo en nivel bajo el pin CS#. Luego se enva el opcode correspondiente (3 bits) , seguido de la direccin del registro (5 bits) mediante los pines SCK y SI. Esta direccin identifica a uno de los 32 registros del banco seleccionado. Si corresponde a un registro del grupo ETH, el dato que contenga el registro seleccionado se enviar mediante SCK y SO, comenzando por el bit ms significativo (MSb).

Figura 26: Leyendo los registros de control. Si la direccin enviada corresponde a un registro de los grupos MAC o MII, se devolver primero un byte "de relleno". La operacin RCR termina cuando llevamos el pin CS# nuevamente a estado alto. Comando para leer la memoria buffer Este comando (RBM, por Read Buffer Memory) permite al host leer bytes desde los 8Kb de memoria utilizada como buffer de transmisin y recepcin. Si se pone en 1 el bit AUTOINC en el registro ECON2, el puntero ERDPT ser incrementado automticamente cada vez que se lea un byte. La direccin siguiente es casi siempre la direccin actual mas uno, por lo que esto de mucha utilidad. Sin embargo, cuando se lee el ultimo byte del buffer de recepcin (es decir, cuando ERDPT = ERXND), el puntero ERDPT pasar al valor contenido en ERXST, apuntando al primer byte del buffer. Esta caracterstica le

permite al hots leer un flujo continuo de bytes sin necesidad de tener en cuenta el tamao del buffer o la posicin del puntero dentro del mismo. Si AUTOINC est en 1 cuando se lee la direccin 1FFFh y ERXND no apunta a esa direccin, el puntero de lectura es incrementado y vuelve a 0000h. El comando RBM comienza cuando se pone el pin CS# en bajo. Luego se enva el opcode RBM, de tres bits y la constante 1Ah de cinco bits a continuacin, utilizando los pines SCK y SI (son 8 bits en total). Luego, el ENC28J60 enva el contenido del byte apuntado por ERDPT mediante los pines SCK y SO. Si el host contina enviando ciclos de reloj mediante SCK sin modificar el estado de CS#, el contenido del byte apuntado por ERDPT ser enviado nuevamente (siempre comenzando por el bit ms significativo (Msb)), pero como el puntero se habr incrementado automticamente, en la practica se va haciendo una lectura secuencial de todo el buffer. El comando RBM finaliza cuando CS# es puesto en alto nuevamente.

Comando para escribir registros de control El comando WCR (Write Control Register) permite al controlador escribir en los registros del grupo ETH, MAC y MII. El proceso de escritura puede efectuarse en cualquier orden y tienen lugar mediante un registro especial de la interfase MII. Para ms informacin, ver ms arriba la seccin Escribiendo registros PHY. Un comando WCR comienza cuando se pone el pin CS# en estado bajo. El opcode del comando WCR se enva al ENC28J60 seguido de 5 bits que especifican cual de los 32 registros posibles dentro de este banco queremos escribir (A4 a A0). Luego que se ha enviado el comando y la direccin se envan los datos a escribir (comenzando por el MSb) . La operacin finaliza cuando el host pone nuevamente el pin CS# en estado alto. Si CS# pasa a estado alto antes que los 8 bits del dato hayan sido enviados al ENC28J60, la operacin completa queda abortada.

Figura 27: Escribiendo los registros de control