Clase 14: Memoria EEPROM.

Slides:



Advertisements
Presentaciones similares
Capítulo I Gestión de E/S 1.- Gestión de E/S 2.- Hardware de E/S 3.- Software de E/S.
Advertisements

Microprocesadores Componentes básicos..
Fernando Escribano Pro 1º de Bachillerato
La Computadora y sus Partes
Computación PROGRAMACIÓN.
REPARACIÓN DE UN PC. Sistema operativo  el MS-DOS o sea el Disk Operating System  el Windows Me  el Windows 95 /98  el WINDOWS XP  el UNIX  el Linux.
Programación en Lenguaje Ensamblador.
El propósito del almacenamiento es guardar datos que la computadora no esté usando. El almacenamiento tiene tres ventajas sobre la memoria: Hay más espacio.
Arquitectura del Computador
Electrónica Digital 1. Es la parte de un sistema que almacena datos binarios en grandes cantidades. Están formadas por matrices de elementos de almacenamiento.
Introducción a la Ingeniería en Sistemas
Memorias – Introducción
BUSES.
Clase 10: Estructuras de datos y arreglos.
BUS DE DATOS.
Overview Sistemas Computacionales
*COMPONENTES DEL ORDENADOR*
Resolución de Problemas y Algoritmos Uso de iteración con secuencias
Bus I2C Bus serie síncrono. (+-) SDA: datos SLC: reloj kbits/s (pero también kbits/s y 3.4Mbits/s)
Asignación de Espacio No Contiguo
Arquitectura/Estructura de Computadoras Puertas Paralelas.
MICROCONTROLADORES NOCIONES BÁSICAS. ¿QUÉ ES UN MICROCONTROLADOR? MICROCONTROLADOR = MICROPROCESADOR + MEMORIA + PERIFERICOS.
Hanna y Dima. Definición Funciones Básicas -La unidad CENTRAL (CPU. Central Proceising Unit) -La memoria principal -Dispositivos de Entrada y Salida Tratamiento.
El Bus I 2 C. Introducción 1980: Philips desarrolla el Bus de 2 alambres I 2 C para la comunicación de circuitos integrados. Se han otorgado licencias.
I2C (Inter-Integrated Circuit) (Modo Maestro-Esclavo )
Microcomputadores Prof: Tatiana Marín R.. Lenguaje máquina = lenguaje binario InstrucciónLenguaje máquina (binario)OP ( hex)Nemónico Restar F0SUB.

Pure Valve Tone Guitar Amp
La memoria Es un grupo de posiciones o celda del mismo tamaño byte organizadas de manera secuencial y numeradas consecutivamente. Que brinda a la computadora.
Memorias.
 En computación es un conjunto de líneas de señal que el microprocesador o CPU utilizan para intercambiar datos con otros componentes como teclados,
Medidor de Potencia Proyecto para el ramo ELO-326 Seminario de Computadores II: "Sistemas Embebidos y sus Aplicaciones" Theo Soto Guzmán Junio 2007.
Memoria Principal Memoria de acceso aleatorio. La unidad de memoria y jerarquías de almacenamiento Unidades de Almacenamiento. La unidad de memoria es.
Módulo LCD Controlador HD44780.
Teoría de Sistemas Operativos I/O
Sistemas de E/S, Programada por Interrupciones su Gestión
Unidades de almacenamiento
Sesión 10: Conversión Análoga a Digital
TARJETAS DE RED.
Estructura de los Sistemas Operativos
Clase 13: Protocolo de Comunicación I 2 C. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos.
ELEMENTOS DE COMPUTACIÓN Profesor: Guillermo Figueroa
Memorias.
Memorias de Acceso Secuencial
Sesión 6: Repaso LCD - Keyboard. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1Universidad Santo.
Sesión 07: Interrupciones. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad.
Teoría de Sistemas Operativos Sistema de I/O. 2 Introducción Una de las funciones principales del sistema operativo es el control de todos los dispositivos.
SEMANA 01_2.
SANTIAGO MORA BERMÚDEZ
DISPOSITIVOS DE ALMACENAMIENTO
ALMACENAMIENTO DE DATOS. Son componentes que leen o escriben datos en medios o soportes de almacenamiento, y juntos conforman lamemoria o almacenamiento.
Computadora Es una máquina electrónica que recibe y procesa datos para convertirlos en información útil. Una computadora es una colección de circuitos.
Por: Jowin Daniel Rojas Espinosa.  ROM (Read Only Memory) Como su nombre lo indica es una memoria de solo lectura, en si la memoria se mide en Bytes.
UNIVERSIDAD TECNOLÓGICA ECOTEC. ISO 9001:2008 Identificar las características y beneficios de diferentes medios de almacenamiento 1 Ing. Sist. Ana María.
Hardware Son todos los componentes y dispositivos físicos y tangibles que forman una computadora. ¿ Cómo describir un hardware?
REPUBLICA BOLIVARIANA DE VENEZUELA UNIVERSIDAD ALONSO DE OJEDA FACULTAD DE INGENIERÍA ESCUELA DE COMPUTACIÓN ING. PROF. LEONEL SEQUERA MEMORIAS.
Resolución de problemas Fundamentos de Programación M.I. Jaime Alfonso Reyes Cortés.
Unidad de transferencia de memoria
ARQUITECTURA DEL ORDENADOR
Programación de microcontroladores PIC16f877a en linux
LOS COMPONENTES DEL ORDENADOR
Hardware Los componentes y dispositivos del Hardware se dividen en Hardware Básico y Hardware Complementario El Hardware Básico: son las piezas fundamentales.
CONCEPTOS BÁSICOS ING. SUSANA BELTRAN.
Arquitectura de Computadores Clase 16 Sistemas y Jerarquías de Almacenamiento IIC 2342 Semestre Rubén Mitnik Pontificia Universidad Católica de.
Arquitectura básica de la computadora
Prisnelly M. Colón María Cristina Feliciano Prof. Maribel Martínez SICI 3005 Universidad de Puerto Rico en Cayey Programa de Preparación de Maestros Educación.
Arquitectura de Computadores IIC 2342 Semestre Rubén Mitnik Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia.
Arquitectura de Computadores Clase 17 Tecnologías de Memorias IIC 2342 Semestre Rubén Mitnik Pontificia Universidad Católica de Chile Escuela de.
Estructura y funcionamiento de un sistema de cómputo
UNIVERSIDAD AUTÓNOMA DEL ESTADO DE MÉXICO FACULTAD DE INGENIERÍA COORDINACIÓN DE MATERIAS PROPEDÉUTICAS INGENIERÍA EN SISTEMAS ENERGÉTICOS SUSTENTABLES.
Transcripción de la presentación:

Clase 14: Memoria EEPROM

Antes de Comenzar ¿Qué vimos anteriormente? Protocolo I2C P1 ESCLAVO MAESTRO ESCLAVO P2 MAESTRO ESCLAVO P2 MAESTRO ESCLAVO P3 ESCLAVO P3 SOLO ESCLAVO P4 SOLO ESCLAVO P4 ESCLAVO P4 ESCLAVO SCL SDA

Antes de Comenzar ¿Qué vimos anteriormente? Protocolo I2C DEVICE 1 … DEVICE n … VDD SCL SDA 10k-47k

Antes de Comenzar ¿Qué vimos anteriormente? Protocolo I2C Trama de 8-Bits con ACK SCL SDA D7 D6 D5 D4 D3 D2 D1 D0 ACK MSB LSB SCL SDA Condición de START SCL SDA Condición de STOP

Antes de Comenzar ¿Qué vimos anteriormente? Protocolo I2C SDA SCL A6 R/W ACK START MSB LSB Generado por Maestro Generado por Esclavo SDA SCL D7 D6 D5 D4 D3 D2 D1 D0 ACK MSB LSB Generado por M/S STOP Generado por S/M

Agenda para la clase 1 Memorias EEPROM I2C Manipulación de este periférico además de sus características 2 Memorias internas Manipulación de EEPROM internas a través de l lenguaje C 3 Memorias internas Manipulación de EEPROM externas a través de l lenguaje C

¿Puedo ser autodidacta? Bibliografía para la clase Jonathan Valvano, Developing Embedded Software in C Using ICC11/ICC12/Hiware. C for Embedded Systems. Academia Freescale Semiconductor para Profesores 2004. Documentación sobre los diferentes periféricos: LCDs, Serial, I2C, TIMERs.

A continuación… Memorias EEPROM I2C Memorias EEPROM I2C Memorias Internas Memorias Externas

Memoria EEPROM I2C Se tienen varias referencias: 24LC02 ó 24LC02B 24LC16 ó 24LC16B 24LC128 ó 24LC128B 24LC256 y muchas más. Las anteriores son memorias EEPROM de 2k, 16k, 128k y 256k bits. El tamaño en bytes será de 256 bytes, 2kbytes, 16kbytes y 32kbytes respectivamente. 2kbits 256 bytes 16kbits 2 kbytes 128kbits 16 kbytes

Memoria EEPROM I2C Direccionando la Memoria (Periférico). Cada memoria tiene una dirección de 7 bits. Se envía después de la condición de START o RE-START. DA = Device Address. R/W: Indica hacia donde se dirige la siguiente trama después de enviar DA. M  S o S  M. SDA SCL DA6 DA5 DA4 DA3 DA2 DA1 DA0 R/W ACK START MSB LSB Generado por Maestro Generado por Esclavo

Memoria EEPROM I2C Direccionando la Memoria (Periférico). Dirección registro: $BBAA BB: Bloque AA: Registro dentro del bloque. Direccionando la Memoria (Periférico). Normalmente, se compone de 4 bits de ID y 3 bits para: Selección de memoria física (1 0 1 0 A2 A1 A0). Selección de memoria física y bloque (1 0 1 0 A2 B1 B0). Selección de bloque en de la memoria (1 0 1 0 B2 B1 B0). Toda memoria se compone de n bloques de 256 bytes. Para este caso 4 bloques. Esta memoria de 2kbytes tiene 8 bloques: 2kbytes/256 Bloque 0 256 BYTES $000 $0FF Bloque 4 256 BYTES $400 $4FF 24LC02 A0 A1 A2 GND VDD WP SCL SDA 24LC16 NC GND VDD WP SCL SDA 24LC08 NC A2 GND VDD WP SCL SDA Bloque 1 256 BYTES $100 $1FF Bloque 5 256 BYTES $500 $5FF Bloque 2 256 BYTES $200 $2FF Bloque 6 256 BYTES $600 $6FF Bloque 3 256 BYTES $300 $3FF Bloque 7 256 BYTES $700 $7FF

El valor AR7..AR0 escoge uno de los 256 registros. Memoria EEPROM I2C Selección de un registro de la memoria. Para memorias de 256 bytes. Después de enviar dirección de periférico se envía dirección del registro AR donde se va a escribir. Previamente R/W debe haberse enviado como ‘0’. Byte 00 Byte 01 Byte 02 Byte FE Byte FF El valor AR7..AR0 escoge uno de los 256 registros. … SDA SCL AR7 AR6 AR5 AR4 AR3 AR2 AR1 AR0 ACK MSB LSB Generado por Maestro Generado por Esclavo

Memoria EEPROM I2C Selección de un registro de la memoria. Para memorias con más de 256 bytes. Conformación por bloques de memoria de 256 bytes. El bloque se puede seleccionar de dos formas. Utilizar parte de la dirección del dispositivo para selección bloq: DA6 DA5 DA4 DA3 Bx By Bz R/W. Solo para memorias entre 2 y 8 bloques. Trama de 8 bits, para seleccionar entre 1 y 256 bloques. Para memorias de más de 8 bloques.

Memoria EEPROM I2C Selección de un registro de la memoria. 24LC02, memoria de 256 Bytes. Trama 1 0 1 0 A2 A1 A0 R/W. Luego se envía Dir. Registro. 1 0 1 0 1 1 0 0. Luego se envía trama con dir. $00 a $FF. 1 0 1 0 0 1 0 0. Luego se envía trama con dir. $00 a $FF 24LC02 A0 A1 A2 GND VDD WP SCL SDA 0V 5V 24LC02 A0 A1 A2 GND VDD WP SCL SDA 0V 5V Selección de memoria para lectura/escritura Selección de memoria para lectura/escritura

Memoria EEPROM I2C Selección de un registro de la memoria. 24LC04, memoria de 512 Bytes. Trama 1 0 1 0 A2 A1 B0 R/W. Luego se envía Dir. Registro. 1 0 1 0 1 1 0 0. Luego se envía trama con dir. $00 a $FF. 1 0 1 0 0 1 1 0. Luego se envía trama con dir. $00 a $FF 24LC04 NC A1 A2 GND VDD WP SCL SDA 5V 0V 24LC04 NC A1 A2 GND VDD WP SCL SDA 5V Bloque 0 256 BYTES Bloque 0 256 BYTES Bloque 1 256 BYTES Bloque 1 256 BYTES Selección de memoria para lectura/escritura, bloque 1 Selección de memoria para lectura/escritura, bloque 0

Memoria EEPROM I2C Selección de un registro de la memoria. Bloque 0 Memoria 24LC08: 8 kbits = 1024 bytes. 4 Bloques. START + 1 0 1 0 A2 0 1 R/W: Bloque 1. Dirección a escribir en el bloque 1: $20. Bloque 1: 256 Bytes $1E $1F $20 $21 Bloque 0 256 BYTES Bloque 1 Bloque 2 Bloque 3 Bloque 1 256 BYTES

Memoria EEPROM I2C Selección de un registro de la memoria. Dirección compuesta: Bloque + Registro Selección de un registro de la memoria. 24LC16, memoria de 2048 Bytes. Trama 1 0 1 0 B2 B1 B0 R/W. Luego se envía Dir. Registro. Dir: $10E. 1 0 1 0 0 0 1 0. Luego se envía trama $0E. Dir: $620. 1 0 1 0 1 1 0 0. Luego se envía trama $20. $10E = 0 0 0 0 0 0 0 1 0 0 0 0 1 1 1 0 $620 = 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 Se escoge el registro $0E Se escoge el registro $20 24LC16 NC GND VDD WP SCL SDA Bloque 0 256 BYTES Bloque 4 256 BYTES Bloque Registro en el Bloque Bloque 1 256 BYTES Bloque 1 256 BYTES Bloque 5 256 BYTES Bloque 2 256 BYTES Bloque 6 256 BYTES Bloque 6 256 BYTES Bloque 3 256 BYTES Bloque 7 256 BYTES

Memoria EEPROM I2C Escribir un Byte. Múltiples datos. Enviar trama de 8 bits de datos, finalizar con condición de STOP. Después de STOP, el dato se almacena en la FLASH. Múltiples datos. Tramas sucesivas de 8 bits, en la última se envía STOP. Los datos se almacenan después de STOP. SDA SCL D7 D6 D5 D4 D3 D2 D1 D0 ACK MSB LSB Generado por Maestro STOP Generado por Esclavo

Memoria EEPROM I2C Múltiples datos. La memoria se divide en páginas de 8, 16, 32 o más bytes. Para la escritura, la memoria incluye un búfer de acuerdo al tamaño de la página. 24LC04. 4kbits = 512 Bytes = 32 Pages/16 Bytes. La escritura en FLASH es muy lenta, se incluye un búfer RAM para guardar varios datos rápidamente. Page 0 Page 1 Page 2 Page 3 Page 4 Page 5 Page 31 … Byte 32 Byte 33 Byte 46 Byte 47 …

La memoria no hace salto de página, ¿Qué se debe hacer? Memoria EEPROM I2C Múltiples datos: Cuidado con las páginas!!! Suponer una memoria de 256 bytes con 32 páginas de 8 bytes. Página 1. Búfer y Flash. Registro 08. $03, $A3, $13, $FE Stop. Registro 14. $AB, $12, $07. Página Uno $03 Buf 0 $07 Byte 8 $07 $03 Buf 1 $A3 Byte 9 $A3 $13 Buf 2 $13 Byte 10 Buf 3 $FE Byte 11 $FE La memoria no hace salto de página, ¿Qué se debe hacer? Buf 4 Byte 12 Buf 5 Byte 13 $AB Buf 6 Byte 14 $AB Buf 7 $12 Byte 15 $12 Búfer RAM Memoria Flash

Memoria EEPROM I2C Múltiples datos: Solución al problema anterior Suponer una memoria de 256 bytes con 32 páginas de 8 bytes. Página 1. Búfer y Flash. Registro 08. $03, $A3, $13, $FE Stop. Registro 14. $AB, $12 Registro 16. $07 Página Uno Página Dos Buf 0 $03 $07 $03 Byte 16 Byte 8 $07 Buf 1 $A3 $A3 Byte 17 Byte 9 Buf 2 $13 $13 Byte 10 Byte 18 Buf 3 $FE Byte 11 $FE Byte 19 Buf 4 Byte 20 Byte 12 Buf 5 Byte 21 Byte 13 $AB Buf 6 Byte 22 Byte 14 $AB $12 Buf 7 Byte 23 Byte 15 $12 Búfer RAM Memoria Flash

Memoria EEPROM I2C Escritura de $45 (24LC02 = 1 0 1 0 A2 A1 A0) en $3E SDA SCL 1 A2 A1 A0 ACK START SDA SCL 1 ACK Dirección del periférico SDA SCL Dirección del registro $3E 1 ACK STOP Dato $45 a escribir en $3E

Memoria EEPROM I2C Escritura de $72 (24LC16 = 1 0 1 0 B2 B1 B0) en $23A SDA SCL Dato $72 a escribir en registro $3A del bloque $2 1 ACK START SDA SCL 1 ACK Dirección del periférico, usando bloque $2 SDA SCL Dirección del registro $3A dentro del bloque $2 1 ACK STOP

Memoria EEPROM I2C Escribir en $95 (24LC256 = 1 0 1 0 A2 A1 A0) en $1A12 SDA SCL 1 A2 A1 A0 ACK Parte baja de dirección, es decir, registro $12 START SDA SCL 1 ACK Dato $95 a escribir en registro $12 del bloque $1A Dirección del periférico SDA SCL 1 ACK Parte alta de dirección, es decir, bloque $1A SDA SCL 1 ACK STOP

Memoria EEPROM I2C Para lectura. Se inicia un proceso de escritura, enviando solamente la dirección de memoria. De acuerdo a los casos anteriores. Cuando se reciba el ACK de la dirección, se genera un Re-Start con R/W en ‘1’ y se empiezan a leer tramas. Las tramas serán enviadas mientras el maestro genere ACK. Para el último dato, no se genera ACK.

A continuación… Memorias EEPROM I2C Memorias Internas Memorias Externas

Memoria EEPROM interna Registro de la memoria PIC16F887. Tipo 24LC02, memoria de 256 Bytes. Dirección Inicial 0x2100 Dirección Final? 24LC02 A0 A1 A2 GND VDD WP SCL SDA 0V 5V

Escritura Escritura de datos en la memoria Interna WRITE _EEPROM(address, dato); address es un entero de 8 o 16 bits, que especifica la posición relativa de la EEPROM interna donde se almacenará el dato dato es el entero de 8 bits que se almacenará en la EEPROM

Lectura Función básica de lectura de datos dato=READ_EEPROM(address); dato es un entero de 8 bits leído desde la EEPROM interna. address es un entero de 8 o 16 bits, que especifica la posición relativa de la EEPROM interna donde se leerá el dato

Almacenamiento Escritura desde la compilación #ROM address = {datos} address especifica la dirección inicial de la EEPROM interna donde se almacenarán los datos (comienza desde la 0x2100) datos son el conjunto de valores que se almacenarán en la EEPROM. Manipulación igual al de los arreglo.

Ejemplos Desarrollar un programa que (1): Guardar y leer datos en las 10 primeras posiciones de memoria de la EEPROM interna Desarrollar un programa que (2): Mediante un teclado matricial se puede seleccionar entre escribir o leer. El usuario selecciona que desea escribir en las 9 posiciones iniciales de la EEPROM interna. Almacenar en la EEPROM interna y desde el tiempo de compilación el nombre del programador. Se puede leer cual información leer.

A continuación… Memorias EEPROM I2C Memorias Internas Memorias Externas Memorias Externas

Biblioteca Incluir la biblioteca correspondiente: #include <memoria_EEPROM> Memoria_EEPROM corresponde a la memoria externa que seleccionemos: 2401.c 2402.c 2404.c 2408.c 2416.c 2421.c 2432.c 2464.c 2465.c …

Configuración Inicialización: init_ext_eeprom(); Permite configurar la comunicación I2C, es decir, selecciona modo Master, los puertos de comunicación I2C, tamaño de la memoria, entre otros.

Escritura Escritura de datos en la memoria Interna WRITE _EXT_EEPROM(address, dato); address es un entero de 8 o 16 bits, que especifica la posición relativa de la EEPROM interna donde se almacenará el dato dato es el entero de 8 bits que se almacenará en la EEPROM

Lectura Función básica de lectura de datos dato=READ_EXT_EEPROM(address); dato es un entero de 8 bits leído desde la EEPROM interna. address es un entero de 8 o 16 bits, que especifica la posición relativa de la EEPROM interna donde se leerá el dato

Ejemplos Desarrollar un programa que (1): Guardar y leer datos en las 10 primeras posiciones de memoria de la EEPROM interna

Fin de la clase 14