EEPROM y uC.pdf

7
Universidad Politécnica del Estado de Morelos INGENIERIA EN ELECTRÓNICA Y TELECOMUNICACIONES Nombres del alumno: Hernández Bucio Julio Alberto Nombre de la materia: Diseño Digital Nombre del profesor: Oscar Saavedra López Cuatrimestre: Nombre de la tarea, práctica o proyecto: Memoria EEPROM y Microcontrolador Objetivo: Implementar un dispositivo que conste de un microcontrolador y una memoria EEPROM, para realizar una transmisión de datos entre estos dos dispositivos Antecedentes: Las memorias EEPROM 1 que funcionan bajo el protocolo I 2 C 2 han ganando poco a poco un espacio en el hardware de los equipos electrónicos hasta transformarse en uno de los medios de almacenamiento de información más populares por su practicidad y sencillez de manejo. El tener la posibilidad de almacenar diversos datos en una memoria no volátil, es una característica importante de los equipos de la era actual, lo cual les permite la desconexión prolongada de cualquier suministro energético y conservar durante un tiempo prolongado esta información valiosa que normalmente se perdería si se desconecta el sistema. Estas memorias son conocidas también como memorias de protocolo “serie” las 24CXX son infaltables en cualquier equipo electrónico de consumo masivo. 1 EEPROM. Electrically Erasable Progammable Read Only Memory. 2 I 2 C. Inter-Integrated Circuitos. Bus de Comunicaciones en Serie.

Transcript of EEPROM y uC.pdf

Page 1: EEPROM y uC.pdf

Universidad Politécnica del Estado de Morelos

INGENIERIA EN ELECTRÓNICA Y TELECOMUNICACIONES

Nombres del alumno:

Hernández Bucio Julio Alberto

Nombre de la materia:

Diseño Digital

Nombre del profesor:

Oscar Saavedra López

Cuatrimestre: 7°

Nombre de la tarea, práctica o proyecto:

Memoria EEPROM y Microcontrolador

Objetivo:

Implementar un dispositivo que conste de un microcontrolador y una memoria EEPROM, para realizar una transmisión de datos entre estos dos dispositivos

Antecedentes:

Las memorias EEPROM1 que funcionan bajo el protocolo I2C2 han ganando poco a poco un espacio

en el hardware de los equipos electrónicos hasta transformarse en uno de los medios de

almacenamiento de información más populares por su practicidad y sencillez de manejo.

El tener la posibilidad de almacenar diversos datos en una memoria no volátil, es una

característica importante de los equipos de la era actual, lo cual les permite la desconexión

prolongada de cualquier suministro energético y conservar durante un tiempo prolongado esta

información valiosa que normalmente se perdería si se desconecta el sistema.

Estas memorias son conocidas también como memorias de protocolo “serie” las 24CXX son

infaltables en cualquier equipo electrónico de consumo masivo.

1 EEPROM. Electrically Erasable Progammable Read Only Memory.

2 I

2C. Inter-Integrated Circuitos. Bus de Comunicaciones en Serie.

Page 2: EEPROM y uC.pdf

Memoria EEPROM.

La EEPROM es una memoria de solo lectura, programable y borrable eléctricamente.

Este tipo de memoria puede ser borrada, programada y reprogramada eléctricamente un gran

ciclo de veces dependiendo del modelo, por lo tanto es un tipo de memoria no volátil, es decir,

que al des-energizarla, no pierde su contenido almacenado previamente.

Este tipo de dispositivos suelen comunicarse mediante protocolos como I2C, SPI3 y Microwire. En

este caso, el protocola a utilizar para la comunicación es I2C.

Protocolo I2C.

El Bus I2C es un sistema de comunicación 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.

El Bus I2C permite la comunicación “chip to chip” usando solo dos cables en una conexión serial,

permitiendo de esta forma comunicar dispositivos con muy pocas vías.

Estos dos cables que caracterizan este tipo de bus son llamados SCL4 y SDA5 y son los encargados

del direccionamiento, selección, control y transferencia de datos, de a un BIT por vez, así como

también se maneja una tercera línea que es la conexión a masa.

El funcionamiento de los cables se basa en que SDA se encarga del intercambio de los datos,

mientras que SCL es el encargado de sincronizar al transmisor y al receptor mientras se hace la

transferencia desde un dispositivo a otro. Dentro de este sistema los dispositivos se identifican

como Maestro y Esclavo.

El dispositivo identificado como Maestro es el que inicia el contacto y abre el bus, mientras que al

que recepciona y contesta el llamado se le denomina Esclavo. Los dispositivos conectados al bus

pueden ser Maestro solamente, Esclavo solamente o intercalar las funciones de Maestro y Esclavo

de acuerdo como el sistema requiera, tal como es el caso que veremos de las memorias EEPROM

I2C.

Dentro de este esquema se pueden conectar en paralelo a las líneas de SCL y SDA hasta 255

dispositivos. Cada dispositivo Esclavo tiene asignada una dirección, así que cuando el dispositivo

Maestro inicialice una transmisión, todos los dispositivos Esclavos “escucharan” el llamado, pero

solo se realizará la comunicación con aquel dispositivo que tenga la dirección que el Maestro

incluyo en el mensaje, y será solo con este dispositivo con el que se realice la transferencia de

datos hasta que el dispositivo Maestro decida cerrarla.

3 Serial Peripheral Interface. Bus estándar de comunicaciones.

4 Serial Clock

5 Serial Data

Page 3: EEPROM y uC.pdf

Comunicación.

La condición de Inicio ocurre únicamente en la transición de un estado ALTO a un estado BAJO en

la línea SDA mientras la línea SCL se encuentre en un nivel ALTO. En cambio, la transición de un

estado BAJO a un estado ALTO en la línea SDA, mientras la línea SCL se encuentre en un nivel

ALTO, indicará una condición de Parada. Las condiciones de Inicio y Parada son siempre generadas

por el dispositivo que asuma la condición de Maestro dentro del bus. El bus se considerará

ocupado después de una situación de Inicio y pasará a estar nuevamente libre cierto tiempo

después de la transmisión de la condición de Parada. Dentro de este “cierto tiempo” será

determinado por el Maestro y vendrá especificado en la hoja de datos del mismo. Este proceso se

muestra en la figura 1.

Figura 1 Transiciones para generar las condiciones de Inicio y Parada

Palabra o Byte de Control.

La palabra o Byte de Control, indica la dirección que posee la memoria dentro del bus y si es que

se va leer o escribir en ella.

Read o Write indica que es lo que se va a hacer, por ejemplo leer o escribir, respectivamente.

Si se va a leer en la memoria, es te bit adopta un estado de 1, en cambio para grabar un dato,

ahora el valor de este bit será de 0.

Page 4: EEPROM y uC.pdf

Desarrollo: Para el desarrollo de esta práctica se usó como microcontrolador la placa del arduino, así como una memoria EEPROM con matrícula 24LC256, la cual es de 32K x 8; 256 kb, la cual ha sido desarrollada para aplicaciones avanzadas de bajo consumo, así como comunicaciones “personales” y adquisición de datos. El diagrama de esta memoria se muestra en la figura 2.

Figura 2 Diagrama de EEPROM 24LC256

Este dispositivo tiene una capacidad de escritura de página de hasta 64 bytes. Dentro de sus características:

Compatible con la interfaz de dos cables del protocolo I2C Se pueden agregar hasta 8 dispositivos en cascada 1,000,000 de ciclos de escritura/lectura Retención de datos de hasta 200 años

En la figura 3, se muestra el diagrama a bloques de la 24LC256.

Figura 3 Diagrama a bloques 24LC256

En la figura 2, al observar el diagrama pinout de la memoria 24LC256, se puede apreciar las

conexiones que caracterizan al mismo. El cual se muestra en la tabla 1.

Tabla 1 Pinout 24LC256

Page 5: EEPROM y uC.pdf

Como se indica en la tabla 1, las conexiones que se usaron fueron las siguientes, para el pin 1, 2 y 3

se conectan a masa, para indicarle la dirección de memoria que es, que en este caso es la cero, ya

que como se comentó anteriormente, al poderse conectar en cascada hasta 8 dispositivos, se

tiene que conectar según la dirección que tenga, si por ejemplo se tuviera los 8 dispositivos, la

dirección será la 111, por lo que los pines 1, 2 y 3 deberían de estar conectados los tres a Vcc. Por

ultimo se conecta el pin 7 a masa para habilitar la escritura en la memoria.

Los pines 8 y 4 se conectan a Vcc y Masa respectivamente para alimentar el dispositivo, mientras

que los pines 5 y 6 que son los pines SDA y SCL respectivamente se conectan, para el SDA al pin

analógico 4 del arduino, y el SDL al pin analógico número 5 del arduino. Este orden de conexión de

pines es marcado en el playground de arduino como una manera prestablecida para cada tarjeta

de arduino. Como se muestra en la tabla 2.

Board I2C / TWI pins

Uno, Ethernet A4 (SDA), A5 (SCL)

Mega2560 20 (SDA), 21 (SCL)

Leonardo 2 (SDA), 3 (SCL)

Due 20 (SDA), 21 (SCL), SDA1, SCL1

Tabla 2 Conexiones para SDA y SCL

La manera de conectarlo físicamente se muestra en la figura 4.

Figura 4Conexión de Arduino y EEPROM

Page 6: EEPROM y uC.pdf

Código de línea para la comunicación entre ambos dispositivos.

Page 7: EEPROM y uC.pdf

Pruebas y/0 conclusiones:

Para las pruebas sobre la escritura se hace mediante la escritura, valga la redundancia, sobre una

línea del código especifica. La cual se muestra a continuación.

char somedata[] = "this is sparta";

En esta línea se introduce la información que se quiere guardar en la memoria, como se puede

apreciar es un arreglo de caracteres, ya que también se puede introducir un carácter por vez.

Ahora para la lectura, en un término general, se usa el monitor serial de IDE de arduino, para

mandar imprimir y verificar que lo que escribimos ha sido escrito. Como se muestra en la figura 5,

el mensaje escrito en este ejemplo; “this is sparta”.

Figura 5 Mensaje escrito en memoria

Ya que se tiene los datos escritos en la memoria, hay dos posibilidades de verificar que los datos

que se mandaron a la EEPROM siguen ahí, la primera manera de comprobarlo es comentando una

de las líneas del código la cual es una función que se esta utilizando para escribir los datos

mandados. La línea es la siguiente;

i2c_eeprom_write_page(0x50, 0, (byte *)somedata, sizeof(somedata));

Si se comenta esta línea, y se escribe otro mensaje en la línea que se describe anteriormente para

escribir, al momento de mandar a llamar el monitor serial, se puede observar que el mensaje

mostrado es el mismo, por lo tanto la escritura ha sido inhabilitada. La otra manera de verificar

que la memoria tiene los datos aún cargados del mensaje, es una manera mas rustica de

comprobarlo, la cual se desconectar y conectar nuevamente el arduino, y verificar mediante el

monitor serial los datos almacenados. Cabe mencionar, que la habilitación y des habilitación de la

memoria se maneja por software, ya que también es posible el manejar estas opciones vía

hardware como se comentaba en la tabla 1, ya sea mandando un 0 o un 1 para habilitar o des

habilitar la escritura en el pin 7, respectivamente, solo que si en este caso, vía hardware

mantenemos siempre en 1 este pin, es decir des habilitamos la escritura, desde el principio al

verificar el monitor serial, jamás se escribirá nada en la memoria.

Bibliografía:

Revista electrónica NeoTeo. Hoja de especificaciones IC24LC256 MicroChip PlayGround De Arduino Sistemas Digitales. Morris Mano 3a edición Sistemas Digitales, Principios y Aplicaciones. Ronald J. Tocci 8a edición.