EEPROM y uC.pdf
-
Upload
julio-hernandez -
Category
Documents
-
view
58 -
download
7
Transcript of 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.
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
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.
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
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
Código de línea para la comunicación entre ambos dispositivos.
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.