Documentos de Académico
Documentos de Profesional
Documentos de Cultura
INTRODUCCION
Hoy en día, la mayoría de los equipos electrónicos de consumo que se manejan a
FIGURA 01
control remoto poseen su sistema de control en el receptor (SISCON) en base a un
microcontrolador y a memorias EEPROM donde se aloja el “código de operación”
que es propio para cada modelo. Los técnicos reparadores suelen encontrarse en
problemas a la hora de recibir aparatos con fallas en estas etapas, ya sea por
desconocimiento sobre el funcionamiento de estas memorias o por no poseer el
código que se le debe grabar a un integrado cuando se lo deba reemplazar por
otro dañado. De la misma manera, aquellos que realizan circuitos con
FIGURA 02
microcontroladores, precisan conocer dispositivos que permitan incrementar la
memoria de programa. Es por estas razones que decidimos realizar la presente
nota, que tiene por objeto “desnudar” las memorias 24X04 y dar todas las
herramientas necesarias (circuitos, diseños PCB, programas, códigos, etc.) para
que el lector pueda trabajar con ellas sin inconvenientes.
Las memorias son compatibles con el I2C estándar, con dos interfaces series que
utilizan un bus de datos bidireccional y un reloj. Las memorias emplean 4 bits del
código de selección (1010 en el caso de las 24/25X04) para la identificación del
dispositivo (la memoria) según lo establece la definición bus I2C. Este código de
acceso se dá por medio de dos patas de habilitación (E1, E2), de modo que los
FIGURA 06
dispositivos 4x4k puedan ser unidos al bus I2c y seleccionados individualmente.
Reset de Encendido: Estas memorias poseen una protección para prevenir que los
datos sean violados durante la alimentación del chip, debido a operaciones no
deseadas. Hasta que el Vcc no haya alcanzado el umbral mínimo (denominado
POR), la memoria se mantiene en estado de reset, todas las operaciones están
deshabilitadas y el dispositivo no responderá a ningún comando. De la misma
manera, cuando Vcc descienda por debajo del umbral de operación (POR), todas
las operaciones estarán deshabilitadas y el dispositivo no responderá a ningún
comando.
FIGURA 08
La tensión Vcc debe ser estable antes de aplicar cualquer señal lógica.
DESCRIPCION DE SEÑALES
Reloj serial (SCL). El pin o pata de entrada SCL es utilizado para sincronizar todos
los datos que entran y salen de la memoria. Se puede conectar una resistencia de
“pull-up” en la pata SCL (vea figura 7).
Serial Data (SDA). El pin SDA es bidireccional y es utilizado para transferir datos
dentro o fuera de la memoria. Es una salida que puede ser unida con patas de
otros dispositivos tipo “drenaje abierto” (colector abierto). Se debe conectar un FIGURA 09
resistor de “pull-up” desde la línea SDA hasta Vcc.
Chip- Enable (E1- E2). Son las patas de habilitación del chip. Aquí se establece la
condición para la selección del chip (bits b2 y b3 del código del dispositivo, vea la
figura 5). Estas entradas pueden ser conducidas dinámicamente o sujetadas a Vcc
o Vss para establecer el código de selección. Según las tensiones que tenga en
estas patas será el valor que deberá colocar en el código de selección para
acceder a ese chip.
Protect Enable (PRE). Es una pata de entrada y opera en función del “puntero” del
bloque de direccionamiento (b2) ubicado en la dirección de memoria 1FFh. Este bit
FIGURA 10
fija la protección contra escritura.
Ahora bien, las memorias que estamos describiendo (24/25x04) “siempre” son
dispositivos auxiliares en todas las comunicaciones. Si mira nuevamente la tabla de
la figura 6 que describe los modos de funcionamiento de estas EEPROM verá que
existe una serie de secuencias a seguir, a continuacióin detallaremos como se
establecen estas condiciones:
Condición Start. START es identificado por una transición alta a baja (flanco
descendiente) de la línea SDA, mientras el reloj se encuentra en un estado alto. La
condición START debe preceder a cualquier comando para la transferencia de
datos. La memoria no responde si no detecta la condición de “START”, es decir que
para el ciclo de programación debe estar supervisando continuamente las señales
SDA y SCL para detectar la condición START. FIGURA 13
Condición Stop. STOP es identificado por una transición baja a alta (flanco
ascendente) de la línea SDA mientras el reloj SCL se encuentra en un estado alto.
La condición STOP termina la comunicación entre la memoria y el bus “master”. La
condición STOP al final del comando “lectura”, fuerza un estado de standby
(espera), sólo si se reconoce una condición de NO ACKNOLEDGE. Dicho de otra
manera, mientras no termine el pulso ACK, la memoria se queda en estado de
“espera” (standby). La condición STOP al final del comado “escribir”, acciona el
ciclo interno de escritura EEPROM. Las señales correspondientes al protocolo I2C
bus, que ejemplifican lo que acabamos de ver se muestran en la figura 8. FIGURA 14
Acknowledge Bit (ACK). Se utiliza una señal que no es reconocida como dato para
indicar que la transferencia de datos fue exitosa. El transmisor master o slave,
liberará el bus SDA (recuerde que bus SDA es la línea por donde se leen o escriben
los datos) luego de enviar datos de 8 bits. Durante el noveno período del pulso del
reloj, el receptor “empujará” el bus SDAa un estado bajo para indicar la recepción
de datos de 8 bits.
El séptimo bit enviado es el número de bloque (un bloque = 256 bytes). El octavo
es el bit de escritura o lectura (RW), este bit es establecido en “1” para FIGURA 17
operaciones de lectura y en “0” para operaciones de escritura. Si se encuentra una
unión, la memoria correspondiente reconocerá la identificación en el bus SDA
durante el ciclo de reloj correspondiente al noveno bit (en ese ciclo no hay dato).
OPERACIONES DE ESCRITURA
El Modo de escritura multibyte (Multybite Write, disponible en las memorias
24/20CO4 y ST24CO4R) queda establecido cuando la señal MODO (pata 7) está en FIGURA 18 - 19
Vih y el modo de escritura por página (Page Write) se establece cuando en la pata
7 hay una tensión baja (Vil). El nivel de la pata 7 se establece con señales CMOS.
Escritura por Byte. En el modo de escritura byte por byte (Byte Write) el master
envía datos de un byte, y cada dato es reconocido por la memoria.
1. Condición de Start
2. Envío del Byte de habilitación o de código de selección de dispositivo
(selecciona el chip y el bloque)
3. Envío del Byte de direccionamiento (indica a dónde se escribirá el dato)
4. Envío del Byte de dato
5. Condición de stop
La duración del ciclo de escritura es tw = 10ms máximo, excepto cuando los bytes FIGURA 21
están en dos filas (que tienen diferentes valores para las 6 direcciones de bits más
significativas A7-A2), en cuyo caso el tiempo de programación es duplicado (un
máximo de 20ms). Escribir más de 4 bytes en el modo Multibyte puede modificar
los bytes o datos de una fila adyacente (una fila tiene 8 bytes de largo).
1. Condición de Start
2. Envío del Byte de habilitación o de código de selección de dispositivo
(selecciona el chip y el bloque)
3. Envío del Byte de direccionamiento (indica a dónde se escribirán los datos,
recuerde que son más de uno)
4. Envío de los bloques (Bytes) de datos
Aquí también, luego de cada byte (en el noveno ciclo de reloj) se establece la
condición ACK (figura 11).
Escritura por Página. Para el modo de escritura por página (Page Write), la pata 7
(MODO) debe estar en Vil. Este modo de escritura permite escribir hasta 8 bytes en
un solo bloque de escritura (un solo ciclo de escritura, que no debe confundirse MATERIALES
con un solo ciclo de reloj). Dicho de otra manera, podemos escribir de a 8 bytes
por vez, los bytes se colocan en la misma “fila” y cada fila se direcciona con los 5
bits más significativos (A7-A3) y son las mismas dentro de un block.
El master envía de a uno por vez hasta llegar a los 8 bytes de datos de una fila, los
cuales son reconocidos por la memoria. Luego de que cada byte es transferido, el
contador de la dirección interna del byte (los 3 bits menos significativos) se
incrementa. La transferencia finaliza cuando el master genera la condición STOP.
Debe tener cuidado para evitar que la dirección del contador cambie, lo cual puede
hacer que los datos sean sobreescritos. Note que para cualquier modo de
escritura, el master genera la condición STOP y comienza el ciclo interno del
programa de la memoria. Toda las entradas se encuentran deshabilitadas hasta
que el ciclo esté completo y la memoria no responderá a ningún llamado.
El área estará protegida cuando la pata 1 ( PRE) esté en “1”. Mientras el pin PRE
esté en “0”, la localización de 1FFh puede ser utilizada como un byte EEPROM
normal.
Advertencia: debe prestar especial atención cuando utiliza el modo “Write Protect”
junto con el modo Write Multibyte (pata 7 en “1”). Si estel modo arranca en la
localización justo debajo del 1º byte del área protegida, entonces la instrucción
escribirá sobre los primeros 3 bytes del área protegida contra escritura. Dicha área
es por lo tanto más pequeña que la contenida en la localización 1FFh, por 3 bytes.
Esto no funcionará en “Page Mode” mientras el contador avance y no podrá pasar
por encima del límite de 8 bytes más bajo del área protegida.
OPERACIONES DE LECTURA
Las operaciones de lectura son independientes de la tensión que tenga la pata 7
(MODO).
Lectura de datos de una dirección aleatoria. En este modo de lectura se leen los
datos de una posición que yo quiera “Imitando” un ciclo de escritura para indicar
cuál es la posición de memoria que deseo leer. Primero el master establece la PROMOCIONES
condición de Start, luego envía el código de habilitación con el bit menos
significativo en “0” (lo que indica que ahora el master va a escribir la dirección de
la que quiere leer sus datos) y luego envío el byte con la dirección que deseo leer.
Hecho esto, se establece una nueva condición de START y se vuelve a enviar el PROMOCIONES
mismo código de habilitación que antes pero ahora con el bit menos significativo
en “1” porque “voy a leer” los datos de la posición que ya indiqué desde el master,
acto seguido, la memoria “libera” el contenido de la posición de memoria indicada
PROMOCIONES
(por el bus SDA se pueden leer los datos) lo que se confirma con la condición NO
ACK. El ciclo termina con la condición Stop, tal como se puede ver en la figura 15.
Lectura secuencial. Puedo realizar una lectura secuencial de datos siempre que no
se establezca la condición de STOP. Es decir, puedo leer datos de cualquiera de las
dos formas descriptas anteriormente y si no mando la condición de Stop, luego de
“soltarse” el byte de la posición de memoria indicada, se podrán leer los datos de
la siguiente posición de memoria y luego la siguiente y así sucesivamente hasta
que se establezca la condición de stop (el master es quien da la orden de stop), tal
como se puede observar en la figura 16.
Dicho de otra forma, el master reconoce los bytes de salida de información del byte
y la memoria continúa expulsando el próximo byte de manera secuencial. Para
terminar la salida de los bytes, el master no debe reconocer la salida del último,
pero debe generar la condición STOP. La salida de datos se realiza desde
direcciones de bytes consecutivas, el contador interno se incrementará luego de
cada salida de datos.
Cabe aclarar que en todos los modos de lectura las memorias 24/25x04 “se
reconocen” durante el 9º ciclo de reloj (que correspondería a un 9º bit que usamos
para establecer la condición ACK o NO ACK). Si el master no “maneja” la línea SDA
durante este momento, la memoria termina la transferencia de datos y vuelve al
estado standby.
Hemos visto cómo debe predisponerse una memoria 24/25X04 para poder escribir
o leer su memoria, para hacerlo suelen emplearse utilitarios compuestos de un
hardware (circuito que se conecta a una computadora, donde debemos colocar la PROMOCIONES
memoria) y un software (programa que permite leer o escribir en la memoria un
archivo que tenemos en la computadora).
Tenga en cuenta que si Ud. desea este cargador ya armado, lo puede conseguir en
diferentes casas del gremio por precios que oscilan en los $35. Editorial Quark le
ofrece este programador junto con un manual de datos y un CD con abundante
información, todos los programas vistos en esta nota, varios ejemplos, un curso de
microcontroladores y memorias y más de 100 códigos de equipos comerciales
(todo por $35).