Download para dummies

Document related concepts
no text concepts found
Transcript
ENC28J60, el controlador Ethernet via SPI de Microchip al desnudo
« : Marzo 09, 2010, 10:16:03 »
Hola amigos!
Voy a intentar traducir la hoja de datos del ENC28J60, el controlador Ethernet via
SPI de Microchip y aportar lo que pueda sobre el funcionamiento de este chip. Va a
llevar algunos dias, quizas tenga errores al principio (al menos hasta que tengamos
un prototipo andando para hacer algunas pruebas) pero el trabajo va a valer la
pena
No va a ser una traduccion literal...¡Estás avisado!
¿Comenzamos?
INDICE
- Introducción
Módulos 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 tensión en los pines de E/S
- Configuración de los LEDs
Registros y memoria
-Organización 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
Estado del trabajo: 42% realizado, ultima actualización el 31-03-2010
cmp-enc28j60.jpg (13.61 KB - descargado 138 veces.)
Pantallazo.png (31.88 KB - descargado 1575 veces.)
« Última modificación: Abril 08, 2010, 03:59:00 por Ariel »
Ariel
Global
Moderator
dsPIC
Desconect
ado
Sexo:
Mensajes:
5438
En línea
Re: ENC28J60, el controlador Ethernet via SPI de Microchip al
desnudo
« Respuesta #1 : Marzo 09, 2010, 01:19:48 »
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.
Introducción
El ENC28J60 es un controlador Ethernet dotado de un puerto SPI (Serial
Peripheral Interface), especialmente diseñado 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. También provee un módulo DMA interno para
facilitar el flujo de datos y hardware especifico para el calculo de las
sumas de control (IP checksums). La comunicación 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 conexión 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 aplicación típica del
ENC28J60:
Figura 2: Circuito de aplicación típico.
Además 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 vía SPI
6) Un módulo MAC (Maduim Access Control) que cumple con IEEE 802,3
7) Una módulo PHY (Physical Layer) que codifica y decodifica los datos
análogos presentes en el par trenzado.
Además 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 lógica de control.
El chip viene en dos encapsulados diferentes:
Figura 3: Pinout de cada encapsulado
Veamos primero una lista de la función de cada pin (Figura 4) y luego
explicaremos con más detalle cada uno de ellos:
Figura 4: Descripción de la funcion de cada pin
Pantallazo.png (54.21 KB - descargado 1799 veces.)
Pantallazo-1.png (19.02 KB - descargado 1733 veces.)
Pantallazo-3.png (45.56 KB - descargado 1723 veces.)
Pantallazo-2.png (102.63 KB - descargado 1728 veces.)
« Última modificación: Marzo 09, 2010, 01:28:12 por Ariel »
Ariel
Global
Moderator
dsPIC
Desconect
ado
En línea
Re: ENC28J60, el controlador Ethernet via SPI de Microchip
al desnudo
« Respuesta #2 : Marzo 09, 2010, 04:47:09 »
El oscilador:
Para funcionar, el ENC28J60 necesita de un oscilador que le “marque el
Sexo:
Mensajes:
5438
ritmo”. El chip está diseñado para funcionar a 25MHz, y una de las
formas de proporcionárselos 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 también
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 mayoría 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 señal 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 través
de un resistor para minimizar el ruido.
Figura 6: Oscilador externo
Pantallazo-4.png (11.34 KB - descargado 1666 veces.)
Pantallazo-5.png (6.97 KB - descargado 1641 veces.)
En línea
Ariel
Global
Moderator
dsPIC
Desconect
ado
Re: ENC28J60, el controlador Ethernet via SPI de Microchip
al desnudo
« Respuesta #3 : Marzo 09, 2010, 04:49:39 »
Oscilador Start-up Timer
Este chip posee lo que Microchip denomina Oscillator Start-up
Sexo:
Mensajes:
5438
Timer (OST). Se trata de un mecanismo destinado a asegurar que el
oscilador y el módulo PHY se 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 Wake-Up (“despertar”) posterior a
un Power-Down (“dormir”). Durante este tiempo, todos los registros y
buffers de memoria pueden ser consultados o escritos a través del bus
SPI. Sin embargo, el software del host no debería intentar transmitir
paquetes, habilitar la recepción 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 debería consultar ese
bit para tener la seguridad de que el ENC28J60 está listo para
funcionar.
« Última modificación: Marzo 09, 2010, 05:08:05 por Ariel »
Ariel
Global
Moderator
dsPIC
Desconec
tado
Sexo:
Mensajes:
5438
En línea
Re: ENC28J60, el controlador Ethernet via SPI de Microchip al
desnudo
« Respuesta #4 : Marzo 09, 2010, 05:42:34 »
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 través del registro ECOCON.
Para crear una señal 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 aún cuando ocurra un RESET. Si por algún 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. Típicamente, 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 fabricación. No usar.
110 = Reservado para test durante la fabricación. 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.
Pantallazo-6.png (15.05 KB - descargado 1623 veces.)
En línea
Ariel
Global
Moderator
dsPIC
Desconect
ado
Sexo:
Mensajes:
5438
Re: ENC28J60, el controlador Ethernet via SPI de Microchip
al desnudo
« Respuesta #5 : Marzo 09, 2010, 06:07:41 »
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 pines TPIN+ 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
relación 1:1 y punto medio. Este transformador debe ser capaz de
proveer una aislación como mínimo de 2000V. Además, todos los pines
mencionados necesitan de un resistor de 50 ohms con un 1% de
tolerancia.
Figura8: Conexionado externo.
La circuitería analógica interna del ENC28J60 también requiere que
conectemos un resistor de 2K con un 1% de tolerancia entre el
pin RBIAS y GND. El chip es capaz de operar también con una tensión
de alimentación 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 alimentación (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 cerámico
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
deberían ser lo mas cortas y anchas posibles para minimizar su
resistencia eléctrica.
Pantallazo-7.png (38.76 KB - descargado 1640 veces.)
En línea
Ariel
Re: ENC28J60, el controlador Ethernet via SPI de Microchip
Global
Moderator
dsPIC
Desconect
ado
Sexo:
Mensajes:
5438
al desnudo
« Respuesta #6 : Marzo 10, 2010, 04:13:20 »
Niveles tensión en los pines de E/S
El ENC28J60 es un chip diseñado 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 económico 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 fácil
integración 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
Pantallazo-1.png (23.79 KB - descargado 1602 veces.)
« Última modificación: Marzo 10, 2010, 04:22:00 por Ariel »
Ariel
Global
Moderator
dsPIC
En línea
Re: ENC28J60, el controlador Ethernet via SPI de Microchip al
desnudo
« Respuesta #7 : Marzo 10, 2010, 04:39:14 »
Desconect
ado
Sexo:
Mensajes:
5438
Configuración de los LEDs
Los pines LEDA y LEDB permiten la conxión de sendos LEDs destinados
a brindar información 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 módulo PHY opera en modo half-duplex. Si
la corriente fluye desde el pin, el bit se pone en 1 en cada RESET y el
módulo PHY opera en modo full-duplex. Si no se conecta ningún LED, el
bit PDPXMD permanece en estado indeterminado.
El registro PHLCON se encarga de controlar el comportamiento de los
LEDs y determinar que función cumplen. La tabla siguiente (Figura 11)
resume todos los estados y opciones posibles:
Figura 11: PHLCON
Pantallazo-2.png (11.98 KB - descargado 1579 veces.)
Pantallazo-4.png (13.39 KB - descargado 1547 veces.)
Pantallazo-3.png (108.23 KB - descargado 1541 veces.)
En línea
Ariel
Global
Moderator
dsPIC
Desconect
ado
Sexo:
Mensajes:
5438
Re: ENC28J60, el controlador Ethernet via SPI de Microchip
al desnudo
« Respuesta #8 : Marzo 11, 2010, 11:20:11 »
Organización de la memoria interna
Toda la memoria disponible en el ENC28J60 es del tipo RAM estática.
Se divide en tres bloques principales:
1)Registros de control
2)Buffer Ethernet
3)Registros del módulo PHY
El primer bloque contiene los CRs (Control Registers) que se emplean
para el controlar y obtener información 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 tamaño que puede ser
ajustado por el usuario y tiene como función servir de memoria
temporal para los datos que se envían (o reciben) a (o desde) la red.
Esta zona de memoria también puede ser accedida mediante la interfase
SPI a través de los comandos apropiados, que serán tratados más
adelante en este documento.
La zona correspondiente a los registros del módulo PHY no puede ser
accedida vía SPI. El acceso sólo 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.
Pantallazo.png (29.42 KB - descargado 1525 veces.)
En línea
Ariel
Global
Moderator
dsPIC
Desconect
ado
Sexo:
Mensajes:
5438
Re: ENC28J60, el controlador Ethernet via SPI de Microchip
al desnudo
« Respuesta #9 : Marzo 11, 2010, 04:29:02 »
Los registros de control
Los registros constituyen la interfase principal entre el host y la lógica
interna del ENC28J60. Escribiendo los valores adecuados en los registros
correctos puede controlarse la operación del chip, y la lectura de esta
zona de la memoria proporciona al host valiosa información 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 común de registros: EIE, EIR, ESTAT, ECON1 y ECON2. Estos
son los registros más importantes a la hora de controlar o monitorizar
la operación 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 demás registros del chip, serán analizadas
uno por uno más adelante.
Existen direcciones de registro que a pesar de ser válidas, no contienen
ningún registro utilizable. Si se intenta escribir en ellas la operación se
ignora, y si se los lee devuelven “0”. Los registros de las direcciones 1Ah
en cada banco están 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 continuación, el detalle de los bits que los componen y la función
que tienen asignada:
Figura 14: Contenido de cada registro (primera parte)
Figura 15: Contenido de cada registro (segunda parte)
Pantallazo-1.png (90.79 KB - descargado 1486 veces.)
Pantallazo-2.png (77.6 KB - descargado 1466 veces.)
Pantallazo-3.png (78.25 KB - descargado 1466 veces.)
En línea
Ariel
Re: ENC28J60, el controlador Ethernet via SPI de Microchip
Global
Moderator
dsPIC
Desconect
ado
Sexo:
Mensajes:
5438
al desnudo
« Respuesta #10 : Marzo 11, 2010, 06:10:53 »
El registro ECON1
Este registro tiene como cometido controlar las principales funciones
del ENC28J60. Habilita la transmisión de datos, selecciona los bancos
de registros, controla los DMA, etc.
Figura 16: Registro ECON1
NOTA: La función de cada uno de los bits será explicada con un ejemplo
cuando tengamos montado el hardware para hacer pruebas.
Pantallazo.png (80.93 KB - descargado 1459 veces.)
En línea
Ariel
Global
Moderator
dsPIC
Desconect
ado
Sexo:
Mensajes:
5438
Re: ENC28J60, el controlador Ethernet via SPI de Microchip
al desnudo
« Respuesta #11 : Marzo 12, 2010, 06:02:14 »
El registro ECON2
Este registro tiene funciones similares a ECON1
Figura 17: Registro ECON2
NOTA: La función de cada uno de los bits será explicada con un ejemplo
cuando tengamos montado el hardware para hacer pruebas.
Pantallazo.png (69.88 KB - descargado 1412 veces.)
En línea
Ariel
Global
Moderator
dsPIC
Desconect
ado
Sexo:
Mensajes:
5438
Re: ENC28J60, el controlador Ethernet via SPI de Microchip
al desnudo
« Respuesta #12 : Marzo 12, 2010, 06:36:26 »
El buffer Ethernet
El buffer Ethernet contiene la memoria utilizada por el ENC28J60 para
recibir y enviar datos. El tamaño total de esta memoria es de 8KB, y
está separada en dos zonas: una para la transmisión, y otra para la
recepción. 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 recepción
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 tamaño y la localización del buffer dentro de la
memoria. El byte apuntado por ERXST y el byte apuntado
por ERXND son sus extremos, y ambas posiciones están 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 posición
apuntada por ERXND, automáticamente escribe el siguiente dato en la
posición 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
lógica de control se encuentra deshabilitada (ECON1.RXEN = 0). No hay
problemas en utilizar toda la zona comprendida entre 0000h y 1FFFh
como buffer de recepción. Los
registros ERXWRPTH:ERXWRPTL determinan la posición dentro del
buffer en que el hardware escribirá el próximo byte que reciba. Este
puntero es de solo lectura, y se actualiza automáticamente cada vez que
se recibe un paquete. Este puntero puede ser útil para determinar
cuanto espacio libre queda en el FIFO.
Durante la operación normal, los registros ERXRDPT contienen la
posición en la que se están leyendo datos. Si el FIFO se llena, los
nuevos datos no se escribirán encima de los viejos. Para poder
continuar con la recepción, el host debe encargarse de hacer avanzar
periódicamente este puntero.
El buffer de transmisión
Todo el espacio del buffer Ethernet que no se haya definido como buffer
de recepción se comportará como buffer de transmisión. 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 dirección -dentro del buffer de transmisión- en que se encuentra
el paquete a ser enviado. El hardware no controla si el valor de estos
punteros define una posición válida dentro del buffer de transmisión, por
lo que hay que ser muy cuidadosos para no corromper la integridad de
los datos contenidos en el buffer completo.
Pantallazo-1.png (34.91 KB - descargado 1409 veces.)
En línea
Ariel
Global
Moderator
dsPIC
Desconect
ado
Sexo:
Mensajes:
5438
Re: ENC28J60, el controlador Ethernet via SPI de Microchip
al desnudo
« Respuesta #13 : Marzo 15, 2010, 05:47:03 »
Registros PHY
Los registros de este grupo proporcionan el mecanismo de supervisión y
control del módulo 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 dirección del registro PHY a leer en el registro MIREGADR
- Poner en 1 el bit MICMC.MIIRD. Esto comienza la operación 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 algún 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 dirección 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 transacción de escritura
- comienza automáticamente. El MISTAT.BUSY también se pone en 1.
El ciclo de lectura demora 10.24us. Cuando finaliza, MISTAT.BUSY se
pone automáticamente en 0. Hasta que esto no ocurra, el host no podrá
efectuar operaciones sobre MIISCAN o escribir el registro MIWRH.
Pantallazo.png (25.97 KB - descargado 1390 veces.)
Pantallazo-1.png (39.28 KB - descargado 1374 veces.)
En línea
Ariel
Global
Moderator
dsPIC
Desconectado
Sexo:
Mensajes: 5438
Re: ENC28J60, el controlador Ethernet via SPI de
Microchip al desnudo
« Respuesta #14 : Marzo 17, 2010, 06:32:40 »
Escaneo de registros PHY
El MAC puede ser configurado de forma que realice operaciones de
lectura de de los registros PHY forma automática. Esto simplifica
bastante el trabajo del host. Para realizar una operación de este tipo
hay que seguir los pasos enumerados a continuación:
- Escribir la dirección del registro PHY a leer en el
registro MIREGADR.
- Poner en 1 el bit MICMD.MIISCAN. Esto hace que comience la
tarea de lectura automática y que el bit MISTAT.BUSY se ponga en
1. La primer operación 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 automáticamente 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 en MIWRH o comenzar una operación MIIRD. Las
operaciones MIISCAN deben ser canceladas poniendo en 0 el
bitMICMC.MIISCAN. Cuando el bit MISTAT.BUSY haya vuelto a 0,
las operaciones de lectura normales pueden recomenzar.
Re: ENC28J60, el controlador Ethernet via SPI de Microchip al desnudo
« Respuesta #15 : Marzo 20, 2010, 11:43:51 »
Registros PHSTAT
Los registros PHSTAT1 y PHSTAT2 son de solo lectura. Contienen información sobre el
estado actual del modulo PHY. El primero de ellos (figura 21) contiene el bit LLSTAT, que
brinda información para determinar el momento en que el link con el resto de la red falla. El
registro PHSTAT1 también contiene un bit de estado “jabber”. La traducción de “jabber” es
algo así como “hablar atropelladamente”, y en este contexto se refiere a la posibilidad que
poseen algunos controladores de utilizar tamaños de paquetes diferentes a los especificados
por la IEEE. Este bit en alto indica que se ha detectado esa condición desde la ultima vez
que se leyó el registro.
Figura 21: Registro PHSTAT1
El registro PHSTAT2 contiene información 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
Pantallazo.png (70.07 KB - descargado 489 veces.)
Pantallazo-1.png (92.12 KB - descargado 487 veces.)
En línea
Ariel
Global
Moderator
dsPIC
Re: ENC28J60, el controlador Ethernet via SPI de Microchip al
desnudo
« Respuesta #16 : Marzo 20, 2010, 01:53:54 »
Desconec Registros PHID
tado
Sexo:
Mensajes:
5438
Los registros PHID1 y PHID2 también son de solo lectura. Brindan información
que ayuda a identificar el controlador Ethernet y pueden ser utiles a la hora de
depurar una aplicación. Entre otros datos, proporcionan:
- El número de parte del módulo PHY (PPN5:PPN0)
- El nivel de revisión del módulo PHY (PREV3:PREV0)
- El identificador PHY, como parte del OUI (Organizationally Unique Identifier)
de Microchip (PID24:PID3)
El numero de parte PHY y el número de revisión son parte del registro PHID2.
Los dos bytes superiores del identificador PHY se encuentran en PHID1, y el
resto en PHID2. La localización exacta de cada uno puede verse en la figura 23.
Figura 23 (Hacer click aqui para descargar una versión más grande)
La información sobre la revisión también se encuentra en EREVID. Este es un
registro de control, de solo lectura, que contiene el identificador de 5 bits de la
versión de ENC28J60 que se está usando.
Pantallazo-2.png (62.04 KB - descargado 486 veces.)
En línea
Ariel
Global
Moderator
dsPIC
Re: ENC28J60, el controlador Ethernet via SPI de Microchip al
desnudo
« Respuesta #17 : Marzo 25, 2010, 04:31:17 »
Desconect
ado
La interfaz SPI
Sexo:
Mensajes:
5438
El ENC28J60 esta dotado de un puerto entandar SPI. La implementación
adoptada solo permite utilizar el modo SPI 0,0. Además, el puerto SPI del
ENC28J60 requiere que SCK este idle (inactivo, desocupado) en estado bajo;
no puede seleccionarse la polaridad del reloj. A través del puerto SPI pueden
enviarse comandos y datos al chip, los datos son aceptados en cada flanco de
subida de la señal SCK. Los datos de salida están 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 señales del puerto SPI
Pantallazo.png (30.74 KB - descargado 456 veces.)
« Última modificación: Marzo 25, 2010, 04:39:52 por Ariel »
Ariel
Global
Moderator
dsPIC
Desconect
En línea
Re: ENC28J60, el controlador Ethernet via SPI de Microchip al
desnudo
« Respuesta #18 : Marzo 25, 2010, 04:49:26 »
ado
Sexo:
Mensajes:
5438
Set de instrucciones SPI
La operación del ENC28J60 depende por completo de los comandos que recibe
del host a través 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 mínimo, las instrucciones poseen un código de 3
bits seguido por un argumento de 5 bits que representa un registro o una
constante. La tabla siguiente muestra los códigos de cada operación disponible:
Figura 25: Set de instrucciones SPI
Pantallazo-1.png (43.29 KB - descargado 447 veces.)
En línea
Ariel
Global
Moderator
dsPIC
Re: ENC28J60, el controlador Ethernet via SPI de Microchip al
desnudo
« Respuesta #19 : Marzo 31, 2010, 05:16:39 »
Desconect
ado
Comando para leer registros de control
Sexo:
Mensajes:
5438
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 más información, ver más arriba la sección “Registros
PHY”.
El comando RCR comienza poniendo en nivel bajo el pin CS#. Luego se envía
el opcode correspondiente (3 bits) , seguido de la dirección del registro (5 bits)
mediante los pines SCK y SI. Esta dirección 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 más significativo (MSb).
Figura 26: Leyendo los registros de control.
Si la dirección enviada corresponde a un registro de los grupos MAC o MII, se
devolverá primero un byte "de relleno". La operación RCR termina cuando
llevamos el pin CS# nuevamente a estado alto.
Pantallazo.png (56.38 KB - descargado 427 veces.)
En línea
Ariel
Global
Moderator
dsPIC
Re: ENC28J60, el controlador Ethernet via SPI de Microchip al
desnudo
« Respuesta #20 : Marzo 31, 2010, 05:19:38 »
Desconect
ado
Comando para leer la memoria buffer
Sexo:
Mensajes:
5438
Este comando (RBM, por Read Buffer Memory) permite al host leer bytes
desde los 8Kb de memoria utilizada como buffer de transmisión y recepción. Si
se pone en 1 el bit AUTOINC en el registroECON2, el puntero ERDPT será
incrementado automáticamente cada vez que se lea un byte. La dirección
siguiente es casi siempre la dirección actual mas uno, por lo que esto de
mucha utilidad. Sin embargo, cuando se lee el ultimo byte del buffer de
recepción (es decir, cuando ERDPT = ERXND), el puntero ERDPT pasará al
valor contenido en ERXST, apuntando al primer byte del buffer. Esta
característica le permite al hots leer un flujo continuo de bytes sin necesidad
de tener en cuenta el tamaño del buffer o la posición del puntero dentro del
mismo. Si AUTOINC está en 1 cuando se lee la dirección 1FFFh y ERXND no
apunta a esa dirección, el puntero de lectura es incrementado y vuelve a
0000h.
El comando RBM comienza cuando se pone el pin CS# en bajo. Luego se envía
el opcode RBM, de tres bits y la constante 1Ah de cinco bits a continuación,
utilizando los pines SCK y SI (son 8 bits en total). Luego, el ENC28J60 envía el
contenido del byte apuntado por ERDPT mediante los pines SCK y SO. Si el
host continúa 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 más significativo (Msb)), pero como el puntero
se habrá incrementado automáticamente, en la practica se va haciendo una
lectura secuencial de todo el buffer. El comando RBM finaliza cuando CS# es
puesto en alto nuevamente.
En línea
Ariel
Global
Moderator
dsPIC
Re: ENC28J60, el controlador Ethernet via SPI de Microchip al
desnudo
« Respuesta #21 : Abril 08, 2010, 03:57:51 »
Desconect
ado
Comando para escribir registros de control
Sexo:
Mensajes:
5438
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 más información, ver más arriba la sección “Escribiendo registros
PHY”.
Un comando WCR comienza cuando se pone el pin CS# en estado bajo. El
opcode del comando WCR se envía 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 dirección se
envían los datos a escribir (comenzando por el MSb) . La operación 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
operación completa queda abortada.
Figura 27: Escribiendo los registros de control