You are on page 1of 10

Memorias EEPROM I2C 24CXX ELECTRNICA Las memorias EEPROM que funcionan bajo el protocolo I2C han ganando

poco a poco un espacio en el hardware de los equipos electrnicos hasta transformarse en uno de los medios de almacenamiento de informacin ms populares por su practicidad y sencillez de manejo. Tener la posibilidad de almacenar datos de diversa ndole en una memoria no voltil, es una caracterstica importante de los equipos que les permite la desconexin prolongada de cualquier suministro energtico y conservar durante mucho tiempo informacin valiosa que de otro modo, se perdera al desconectar un sistema. Tambin conocidas como memorias de protocolo serie las 24CXX son infaltables en cualquier equipo electrnico de consumo masivo y aqu te ayudaremos a comprender su funcionamiento. Estos diminutos circuitos integrados poseen la capacidad de almacenar datos organizados, los que deben ser grabados de manera apropiada en su interior y adems tienen particularidades que los hacen sobresalir y destacar dentro de su gnero. Algunas de las caractersticas dignas de mencionar, pueden ser las que a continuacin enumeramos: Pueden ser escritas y borradas de forma elctrica = Electrically Erasable ProgramableRead Only Memory Estn garantizadas para 1 milln de ciclos de escritura/lectura. Pueden llegar a retener la informacin sin ser alimentadas durante cientos de aos. Se organizan por pginas para facilitar su direccionamiento y almacenamiento de la informacin. Utilizan para su funcionamiento una tensin nica (5Volts o 3,3Volts) Son compatibles con el protocolo serial I2C (Marca registrada de Philips) Bajsimo costo. Amplia variedad de encapsulados para adaptar el modelo necesario, de acuerdo al tamao de la aplicacin.

Repasemos el Concepto I2C El Bus I2C (Inter Integrated Circuit) es un sistema de comunicacin de dos cables, con propiedades de velocidad de transferencia de datos considerada de media a baja (400 Khz. a 100 Khz.) y que fue desarrollado por Philips Semiconductor, a comienzos de la dcada del 80. Originalmente creado para reducir los costos de los equipos electrnicos, tuvo sus primeras aplicaciones en controles de contraste, brillo y volumen en aparatos de televisin pero actualmente encontramos conexiones por bus I2C en una gran variedad de computadoras,

equipos industriales, entretenimiento, medicina, sistemas militares y un ilimitado abanico de aplicaciones e importantes usos potenciales. Antes de la aparicin del Bus I2C, las transferencias de datos de memorias a microprocesadores, eran realizadas en forma paralela requiriendo de esta forma encapsulados con una importante cantidades de pines (24, 28, o ms pines). La asignacin de funciones de los pines se repartan entre el direccionamiento de la memoria, la seleccin, el control y la transferencia de datos. Esta ltima solamente requera de 8 pines ms otros ocho pines para el direccionamiento, por mencionar algunos. En contraste con este despilfarro de pines, el Bus I2C permite la comunicacin chip-to-chip usando solo dos cables en una conexin serial, permitiendo de esta forma comunicar dispositivos con muy pocas vas. Estos dos cables son llamados Clock (SCL) y Data (SDA) y son los encargados del direccionamiento, seleccin, control y transferencia de datos, de a un BIT por vez.

SDA est encargado del intercambio de datos, mientras que SCL se encarga de sincronizar al transmisor y al receptor durante la transferencia de los datos mencionados desde un IC al otro. Dentro del sistema de comunicacin I2C, los dispositivos estn identificados como Maestro (Master) y Esclavo (Slave), por lo que al dispositivo que inicia el contacto y abre el bus se lo denomina Master, mientras que al que recepciona y contesta el llamado se lo denomina Slave. Los dispositivos conectados al bus pueden ser Master solamente, Slave solamente o intercalar las funciones de Master y Slave de acuerdo como el sistema requiera, tal como es el caso que veremos de las memorias EEPROM I2C. Este sistema puede interconectar a muchos IC sobre el bus (hasta 255 dispositivos) y todos conectados a los mismos dos cables SDA y SCL. Cada dispositivo esclavo posee una nica direccin y cuando el Master transmita el llamado todos los ICs conectados al bus lo escucharn, pero solo le contestar aquel que posea la direccin que el transmisor incluy en

su llamada y ser con este nico Slave, con quien iniciar la transferencia de datos hasta que decida cerrarla. Comenzando a comunicar La condicin de START o Inicio ocurre nicamente en la transicin de un estado ALTO a un estado BAJO en la lnea SDA mientras la lnea SCL se encuentre en un nivel ALTO. En cambio, la transicin de un estado BAJO a un estado ALTO en la lnea SDA, mientras la lnea SCL se encuentre en un nivel ALTO, indicar una condicin de STOP o Parada. Las condiciones de START y STOP son siempre generadas por el dispositivo que asuma la condicin de Master dentro del bus. El bus se considerar ocupado despus de una situacin de START y pasar a estar nuevamente libre cierto tiempo despus de la transmisin de la condicin de STOP. Este cierto tiempo ser determinado por el Master y vendr especificado en la hoja de datos del mismo.

En Proton debemos indicarle al programa y/o al microcontrolador cules son los pines que cumplirn las funciones de SDA y SCL, porque pueden existir desarrollos en que estemos trabajando con un dispositivo que no posea un mdulo SSP nativo(Synchronous Serial Port). En este caso, no tendremos pines dedicados (por hardware) a tal fin en el microcontrolador y debemos indicarle al sistema mediante instrucciones de programa, que pines cumplirn la funcin de interconexin al Bus I2C. Esto se realiza al comienzo del programa antes de la declaracin de variables y se formaliza mediante un comando llamado DECLARE, quedndonos la secuencia de la siguiente forma: DECLARE SDA_PIN PORTB.0 DECLARE SCL_PIN PORTB.1 En el ejemplo propuesto, hemos ordenado que SDA sea el pin 0 del puerto B, mientras que SCL sea el pin 1 del mismo puerto. Esta aplicacin es vlida para cualquier puerto del microcontrolador mientras est configurado en modo digital y se debe tener en cuenta que si no se incluyen estas directivas al inicio del programa, por defecto se asignarn los pines PORTA.0 para SDA y PORTA.1 para SCL. Otra de las cosas que debemos indicarle a nuestro sistema durante el desarrollo es la velocidad a la que intercambiar datos el bus ya que la mayora de los dispositivos actuales puede realizarlo a 400Khz o a 100Khz. Si bien ya existen circuitos integrados capaces de trabajar a 1Mhz tambin nos encontramos en la actualidad con el contraste de memorias EEPROM que no pueden intercambiar datos a ms de 100Khz. Por lo tanto, si optamos por utilizar la frecuencia mnima, incluiremos el siguiente comando: DECLARE SLOW_BUS=ON Luego de esto, ya estamos listos para abrir el dilogo dentro del bus y lo haremos con el sencillo comando: BSTART

De esta forma, el bus ya habr sido abierto por nuestro microcontrolador asignndose ste la funcin de Master y pasando a estar todo listo para la transferencia de datos hacia el Slave que el microcontrolador decida, transmitiendo al bus la direccin pertinente. Para leer datos, en nuestro caso alojados en una memoria, lo haremos de la siguiente forma: BUSIN Control, Direccin, [Variable] La sintaxis expresada nos indica que el Master (nuestro microcontrolador) recibir (BUSIN) un dato, el que colocar dentro de una Variable luego de haberlo sacado de uno de los dispositivos colgados del Bus I2C. El circuito a quin desea extraer el dato le transmite a travs de la palabra de Control que va a extraer datos de l, y que dicho dato se encuentra en la Direccin apuntada. La palabra Control posee dos informaciones importantes a destacar que son el nombre que posee nuestro dispositivo remoto dentro del Bus y la instruccin acerca de que vamos a leer en l. Si por el contrario lo que desea hacer el sistema es escribir un dato en el dispositivo Slave seleccionado, lo har mediante la siguiente forma: BUSOUT Control, Direccin, [Variable] Con una sintaxis muy similar al caso anterior, el Master transmitir (BUSOUT) un dato, el que tomar de una Variable, y lo grabar en uno de los dispositivos conectados al bus y seleccionado con la palabra de Control. En esta palabra se indicar a cul de todos los dispositivos le hablar, indicndole que grabar en l y que a este proceso lo har en una Direccin definida dentro del programa principal. Cabe agregar en este punto que Proton y la mayora de los fabricantes de memorias recomiendan efectuar una rutina de demora o espera luego de haber grabado un dato a travs de BUSOUT, para asegurar la grabacin del dato, la que se efectiviza mediante la expresin: DELAYMS 10 , indicndonos con esto que efectuar un retardo o demora (Delay) de 10 milisegundos. Luego, slo nos queda cerrar el bus y lo haremos con la instruccin: BUSTOP Eso es todo. Ya tenemos la forma de abrir el bus, de leer o de grabar en un dispositivo Slave y de cerrar nuevamente el bus. Es momento de saber cmo manejar la palabra de Control y la Direccin de lectura/escritura. Organizacin Interna de las Memorias No todas las memorias EEPROM I2C se direccionan y controlan de la misma forma. Por lo tanto, haremos un breve resumen de los datos ms relevantes a tener en cuenta al momento de emplear la palabra Control dentro de los comandos BUSIN y BUSOUT. Palabra o Byte de Control La palabra o Byte de Control, nos indicar la direccin que posee la memoria dentro del bus y si vamos a leer o a escribir en ella. 24C00 = 1|0|1|0|X|X|X|R/W R/W significa Read o Write, que en espaol equivale a Leer o Escribir respectivamente segn lo que decidamos hacer con la memoria. Si vamos a leer la memoria (Read) este bit adoptar el valor 1. En cambio, al grabar un dato en la misma (Write), el valor ser 0. Por su parte X, significa que el valor que adopte en estas posiciones no tiene relevancia, por lo que podemos adoptar para este lugar, un cero o un uno que el resultado ser el mismo. Como dato adicional

podemos mencionar que la memoria 24C00 posee una capacidad de 128 bits, organizada en una sola pgina con 16 Bytes de 8 bits 24C01/24C02/24C04 = 1|0|1|0|A2|A1|A0|R/W Para este grupo de memorias tenemos la misma direccin en los cuatro bits iniciales (1010) que en el caso anterior, lo mismo para el bit final de R/W, pero encontramos un significativo cambio en las posiciones A0, A1 y A2 que coinciden con los pines uno, dos y tres respectivamente, segn las hojas de datos de las memorias.

Con estos tres bits, podemos direccionar hasta ocho memorias conectadas al mismo bus, trabajo que puede realizar cmodamente el microcontrolador. La nica que se diferencia de este grupo es la 24C04 que debe tener siempre conectado A0 a GND o a VCC, pudiendo por lo tanto, direccionarse slo cuatro unidades de la misma a travs de A1 y A2. A0, en este caso, servir para direccionar el puntero de escritura o lectura, hacia la primer pgina de 256 Bytes o hacia la segunda. Aqu empezaremos a ver ya, cmo la estructura interna de estas memorias est organizada en pginas. Por ltimo, destacamos que en este grupo de memorias encontramos la siguiente caracterstica: sumarse a otras iguales para incrementar la capacidad de almacenamiento. Por su parte la memoria 24C02 posee una pgina de 256 Bytes y la 24C04 ya posee dos pginas de 256 Bytes cada una, sumando as 512 Bytes de capacidad. Vemos entonces, que las 24C01 y 24C02 poseen una sola pgina, por lo que la palabra de control para ellas ser igual a 1010000X, siendo X el bit que defina la lectura o escritura en la memoria, mientras que la 24C04 tendr dos palabras de control, segn la pgina donde decidamos trabajar. Esto es, 1010000X para la primer pgina y 1010001X para la segunda. 24C08/24C16 = 1|01|0|B2|B1|B0|R/W En el caso de estos modelos, repetimos los primeros cuatro bits iniciales que identifican a las memorias EEPROM seriales (1010) y el ltimo bit R/W, mientras que nos encontramos con la terminologa B2, B1 y B0 dentro de la palabra de control en estos modelos.

En el caso de estas dos memorias, no podremos colocar en el bus mltiple cantidad de ellas sino que slo tendremos posibilidad de colocar una sola, a diferencia de las anteriores vistas hasta aqu. Esto es debido a que a pesar de poseer la misma disposicin de pines que los modelos anteriores, A2, A1 y A0 no poseen conexin interna colocndose generalmente estos a GND. Por su parte, B2, B1 y B0 sirven para identificar por software la pgina (o bloque) dentro de la memoria. Es decir, que para la 24C08 que posee una disposicin de cuatro pginas de 256 Bytes (4 X 256 X 8 bits = 1 KByte = 8 Kbit); mientras que la 24C16, dispondr de 8 pginas de 256 Bytes de 8 bits lo que equivale a un total de 2KByte que es lo mismo que 16Kbit. Por lo tanto, razonando lo mencionado y analizando el cuadro superior, vemos que tendremos 4 palabras de control para la 24C08 y 8 Palabras de control para la 24C16: una por cada pgina de 256 Bytes.

La palabra Direccin Habiendo llegado hasta aqu, nos queda resolver solamente la forma en que estar compuesta esta palabra, la que ser usada para decidir el casillero que ocuparemos con informacin dentro de la pgina que habremos seleccionado con anterioridad. En el caso de la 24C00 tenamos una pgina de tan slo 16 Bytes, por lo que tendremos apenas 16 filas para ubicar Bytes de informacin. Protn Lite acepta cualquiera de las tres notaciones para las palabras de Control y de Direccin, es decir: Binaria,Decimal o Hexadecimal, por lo que podemos escribir para facilitar el trabajo, un comando de la siguiente forma: BUSIN 161, 8, [Dato]

En el ejemplo mostrado tenemos la palabra de control 161, lo que equivale a10100001 en binario y que nos indica que accederemos a la primer pgina (pgina cero) de cualquier memoria de las vistas y que la citada memoria ser leda. Luego viene el valor 8, que sera 00000100 en binario, lo que nos indica que se leer la octava de todas las filas de Bytes que tenga esta pgina. Mientras que por ltimo, el dato extrado ser volcado en una variable de tamao BYTE a la que hemos denominado Dato Escribir en esta misma direccin sera: BUSOUT 160, 8, [Otro_Dato] El ltimo bit de la palabra de control a pasado a ser cero (antes tenamos 161 y ahora tenemos 160), y el valor a grabar ser el que exista en ese momento dentro de la variable Otro_Dato, tambin de tamao BYTE y declarada al inicio del listado del programa.

Con este sencillo programa de ejemplo podemos leer la primer pgina de una memoria EEPROM I2C y colocar en un display LCD cada uno de los valores ledos durante medio segundo antes de pasar al prximo valor, hasta leerlos a todos. Para otras pginas, variaremos la palabra de control segn nuestras necesidades de uso. El ejemplo muestra la utilizacin de un PIC16F84A y la declaracin de los pines que se utilizarn como SDA y SCL. Tambin cabe destacar que se utilizar una baja velocidad de bus y que el LCD se conecta al puerto por defecto para tal fin, que en este caso es el B. De esta forma se pueden guardar una multitud de datos en una memoria EEPROM I2C y tenerlos siempre listos para su utilizacin durante el desarrollo del programa. Adems, funciones extras dentro del programa del microcontrolador nos pueden permitir detectar el corte de la tensin de alimentacin y, mediante el uso de una batera de respaldo o Back-Up, grabar inmediatamente todas las variables dentro de la memoria para luego proceder a apagar el sistema de forma automtica hasta que se reponga la energa. Un ejemplo de esta aplicacin son los contadores de fichas de los videojuegos de saln, los flippers y la mayora de las mquinas recreativas que trabajan con fichas o monedas. Mientras la mquina funciona normalmente, la batera de respaldo se mantiene cargada y al momento de un apagn o de la desconexin para su traslado, la informacin se guarda de manera automtica para su posterior control.Lo sabas? Lector y Grabador de Memorias EEPROM

En la actualidad es muy frecuente encontrar memorias seriales EEPROM dentro de equipos electrnicos de tecnologa avanzada, como lo son los televisores de ltima generacin (LCD's, retroproyectores, etc.), reproductores de CD y DVD, monitores de PC, telfonos, etc., por mencionar slo algunos. Muchas de las fallas que presentan los equipos electrnicos se deben a un problema en la memoria EEPROM que utiliza. En efecto, una memoria puede resultar daada y dejar de funcionar correctamente, pero en la mayora de los casos, el problema es que se ha alterado o perdido su contenido o informacin binaria, es decir, los datos que tena grabados en su interior. Eso es lo que mayormente provoca fallas de funcionamiento en el equipo que la utiliza. Lo interesante de todo lo dicho es que, reescribiendo el contenido original de la memoria, ya sea en la misma o en una nueva, el mal funcionamiento del equipo desaparece y la falla queda resuelta. Con esta herramienta electrnica estarn cubiertas las necesidades que tendr un tcnico reparador de equipos electrnicos de consumo que posean memorias EEPROM en su interior. Con el mismo se puede leer, modificar, borrar, copiar (clonar) y grabar las memorias del tipo 24xxx y 93Cxx, que son las ms populares, cumpliendo funciones de programador de memorias EEPROM. Ud. no tendr ningn inconveniente leyendo las instrucciones de instalacin del software, como de uso de los diferentes comandos para utilizar esta herramienta, ya que todo el material est escrito en espaol. Y en caso de dudas, contar con todo nuestro asesoramiento. Trabajando con memorias EEPROM Insertando la memoria en el zcalo correspondiente, y corriendo el software provisto en el CDROM, se podrn seleccionar las diferentes operaciones y comandos que pueden necesitarse: lectura, programacin y borrado. El software provisto verifica si el contenido de la memoria coincide con el que se quiso grabar, alertando si fue o no exitosa la operacin. Con el fin de obtener o guardar los contenidos de diferentes memorias de equipos electrnicos, la placa Lector y Grabador de Memorias EEPROM se conecta a una PC mediante el cable para puerto serie (con conector DB9) provisto, e intercambiar datos con la misma, a travs de un software gratuito de uso popular, tambin provisto en el CDROM que forma parte del conjunto. La capacidad del software permite leer el contenido de una memoria y almacenar los datos en forma de archivo con extensin .E2P (tambin .HEX, .BIN) en una unidad de almacenamiento de computadora (disquete, CDROM, Pen Drive, disco rgido, etc.), para darle un uso futuro en otras reparaciones de equipos similares, o compartir con otros colegas que realicen tambin su propia coleccin o base de datos y ser enviado a travs de Internet por correo electrnico, ya que en muchos casos tiene la misma importancia que un repuesto original. Muchos equipos electrnicos que ingresan a un taller de reparaciones simplemente quedan reparados una vez que se les "refresca" el contenido original de fbrica de su memoria EEPROM.

El equipo completo de Lector y Grabador de Memorias EEPROM se entrega listo para usar, y est compuesto por: Placa Lector y Grabador CDROM con el software necesario Cable serie DB9 para PC Caja contenedora Requerimientos de hardware Se necesita una PC con puerto serie DB9 nativo o bien, una placa PCI que emule un puerto serie RS232. No recomendamos usar un adaptador USB-RS232, ya que pueden funcionar demasiado lento, provocando errores de temporizacin. El software provisto en el CDROM es Windows 95/98/NT/2000/ME/XP compatible. El software necesario se refiere a lo que se necesita para usar el producto programador. Como orientacin, dentro del CDROM se proporcionan sitios web a donde los tcnicos pueden buscar datos de memorias segun marca y modelo de equipo. Los datos contenidos en las memorias estn en forma de archivo (con extensin .bin, .hex, .e2p, o equivalentes) y los puede obtener de varias formas: 1) Leyendo una memoria de un equipo igual que funcione bien. 2) Bajando el contenido de un sitio web que lo ofrezca.

3) Recibindolo por email de alguien que se lo d. 4) A veces, con slo borrar la memoria, el equipo sale funcionando. 5) En www.daselec.com.ar comercializan un CDROM con datos recopilados de varias fuentes.

You might also like