clase 14: memoria eeprom. 2009/1 circuitos digitales iii 2010/1 circuitos digitales iii 2010/1...

38
Sistemas Digitales Clase 14: Memoria EEPROM

Upload: jaime-olivera-montero

Post on 24-Jan-2016

243 views

Category:

Documents


8 download

TRANSCRIPT

Page 1: Clase 14: Memoria EEPROM. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III

Sistemas Digitales IIClase 14: Memoria EEPROM

Page 2: Clase 14: Memoria EEPROM. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás

Antes de ComenzarAntes de Comenzar

¿Qué vimos anteriormente? Protocolo I2C

P2MAESTROESCLAVO

P1MAESTROESCLAVO

P3SOLO

ESCLAVO

P4SOLO

ESCLAVO

SCL

SDA

P2MAESTROESCLAVO

P1ESCLAVO

P3ESCLAVO

P4ESCLAVO

P4ESCLAVO

Page 3: Clase 14: Memoria EEPROM. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás

Antes de ComenzarAntes de Comenzar

¿Qué vimos anteriormente? Protocolo I2C

DEVICE 1 DEVICE 2 DEVICE n…

VDD

SCLSDA

10k-47k

Page 4: Clase 14: Memoria EEPROM. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás

Antes de ComenzarAntes de Comenzar

¿Qué vimos anteriormente? Protocolo I2C

D7 D6 D5 D4 D3 D2 D1 D0 ACKSDA

SCL

MSB LSB

SCL

SDA

Condición de START

SCL

SDA

Condición de STOP

Trama de 8-Bits con ACK

Page 5: Clase 14: Memoria EEPROM. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás

Antes de ComenzarAntes de Comenzar

¿Qué vimos anteriormente? Protocolo I2C

SDA

SCL

A6 A5 A4 A3 A2 A1 A0 R/W ACK

Generado porEsclavo

MSB LSB

Generado por Maestro

SDA

SCL

D7 D6 D5 D4 D3 D2 D1 D0 ACK

START

STOP

Generado porS/M

MSB LSB

Generado por M/S

Page 6: Clase 14: Memoria EEPROM. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás

Agenda para la claseAgenda para la clase

11Memorias EEPROM I2C Manipulación de este periférico además de sus características

22Memorias internas Manipulación de EEPROM internas a través de l lenguaje C

33Memorias internas Manipulación de EEPROM externas a través de l lenguaje C

Page 7: Clase 14: Memoria EEPROM. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás

¿Puedo ser autodidacta?¿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.

Page 8: Clase 14: Memoria EEPROM. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás

A continuación…A continuación…

Memorias Externas

Memorias Internas

Memorias EEPROM I2CMemorias EEPROM I2C

Page 9: Clase 14: Memoria EEPROM. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás

Memoria EEPROM I2CMemoria 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.

2kbits256 bytes

2kbits256 bytes

16kbits 2 kbytes

16kbits 2 kbytes

128kbits 16 kbytes

128kbits 16 kbytes

Page 10: Clase 14: Memoria EEPROM. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás

Memoria EEPROM I2CMemoria 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

Generado porEsclavo

MSB LSB

Generado por Maestro

START

Page 11: Clase 14: Memoria EEPROM. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás

Memoria EEPROM I2CMemoria EEPROM I2C

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).

24LC

0224L

C02

A0

A1

A2

GND

VDD

WP

SCL

SDA

Bloque 0256 BYTES

$000$0FF

Bloque 1256 BYTES

$100$1FF

Bloque 2256 BYTES

$200$2FF

Bloque 3256 BYTES

$300$3FF

Bloque 4256 BYTES

$400$4FF

Bloque 5256 BYTES

$500$5FF

Bloque 6256 BYTES

$600$6FF

Bloque 7256 BYTES

$700$7FF

24LC

0824L

C08

NC

NC

A2

GND

VDD

WP

SCL

SDA

Toda memoria se compone de n bloques

de 256 bytes. Para este caso 4 bloques.

Toda memoria se compone de n bloques

de 256 bytes. Para este caso 4 bloques.

24LC

1624L

C16

NC

NC

NC

GND

VDD

WP

SCL

SDA

Esta memoria de 2kbytes tiene 8

bloques: 2kbytes/256

Esta memoria de 2kbytes tiene 8

bloques: 2kbytes/256

Dirección registro: $BBAABB: Bloque

AA: Registro dentro del bloque.

Dirección registro: $BBAABB: Bloque

AA: Registro dentro del bloque.

Page 12: Clase 14: Memoria EEPROM. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás

Memoria EEPROM I2CMemoria 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’.

SDA

SCL

AR7 AR6 AR5 AR4 AR3 AR2 AR1 AR0 ACK

Generado porEsclavo

MSB LSB

Generado por Maestro

Byte 00Byte 01Byte 02

Byte FEByte FF

El valor AR7..AR0 escoge uno de los

256 registros.…

Page 13: Clase 14: Memoria EEPROM. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás

Memoria EEPROM I2CMemoria 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.

Page 14: Clase 14: Memoria EEPROM. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás

Memoria EEPROM I2CMemoria 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

24LC

0224L

C02

A0

A1

A2

GND

VDD

WP

SCL

SDA

0V

5V

0V

24LC

0224L

C02

A0

A1

A2

GND

VDD

WP

SCL

SDA

0V

5V

5V

Selección de memoria para

lectura/escritura

Selección de memoria para

lectura/escritura

Selección de memoria para

lectura/escritura

Selección de memoria para

lectura/escritura

Page 15: Clase 14: Memoria EEPROM. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás

Memoria EEPROM I2CMemoria 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

24LC

0424L

C04

NC

A1

A2

GND

VDD

WP

SCL

SDA

5V

0V

24LC

0424L

C04

NC

A1

A2

GND

VDD

WP

SCL

SDA

5V

5V Bloque 1256 BYTES

Bloque 0256 BYTES

Bloque 1256 BYTES

Bloque 0256 BYTES

Selección de memoria para

lectura/escritura, bloque 0

Selección de memoria para

lectura/escritura, bloque 0

Selección de memoria para

lectura/escritura, bloque 1

Selección de memoria para

lectura/escritura, bloque 1

Page 16: Clase 14: Memoria EEPROM. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás

Memoria EEPROM I2CMemoria EEPROM I2C

Selección de un registro de la memoria. 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 0256 BYTES

Bloque 1256 BYTES

Bloque 2256 BYTES

Bloque 3256 BYTES

Bloque 1256 BYTES

Bloque 1: 256 Bytes

$1E

$1F

$20

$21

Page 17: Clase 14: Memoria EEPROM. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás

24LC

1624L

C16

NC

NC

NC

GND

VDD

WP

SCL

SDA

Bloque 0256 BYTES

Bloque 1256 BYTES

Bloque 2256 BYTES

Bloque 3256 BYTES

Bloque 4256 BYTES

Bloque 5256 BYTES

Bloque 6256 BYTES

Bloque 7256 BYTES

Bloque 1256 BYTES

Bloque 6256 BYTES

Se escoge el registro $0E

Se escoge el registro $0ESe escoge el

registro $20

Se escoge el registro $20

Memoria EEPROM I2CMemoria EEPROM I2C

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

Bloque Registroen el Bloque

Dirección compuesta:

Bloque + Registro

Dirección compuesta:

Bloque + Registro

Page 18: Clase 14: Memoria EEPROM. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás

Memoria EEPROM I2CMemoria EEPROM I2C

Escribir un Byte. 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

STOP

Generado porEsclavo

MSB LSB

Generado por Maestro

Page 19: Clase 14: Memoria EEPROM. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás

Memoria EEPROM I2CMemoria 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.

Page 0 Page 1 Page 5 Page 31…Page 2 Page 3 Page 4

Byte 32Byte 33 Byte 46Byte 47…

La escritura en FLASH es muy lenta, se incluye

un búfer RAM para guardar varios datos

rápidamente.

La escritura en FLASH es muy lenta, se incluye

un búfer RAM para guardar varios datos

rápidamente.

Page 20: Clase 14: Memoria EEPROM. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás

Memoria EEPROM I2CMemoria 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. Stop.

Byte 8Byte 9Byte 10Byte 11Byte 12Byte 13Byte 14Byte 15

Memoria Flash

Buf 0Buf 1Buf 2Buf 3Buf 4Buf 5Buf 6Buf 7

Búfer RAM

$03$A3$13$FE

$03$A3$13$FE

$AB$12

$07

$AB$12

$07

Página Uno

La memoria no hace salto de página, ¿Qué

se debe hacer?

La memoria no hace salto de página, ¿Qué

se debe hacer?

Page 21: Clase 14: Memoria EEPROM. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás

Memoria EEPROM I2CMemoria 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 Stop. Registro 16. $07 Stop.

Byte 8Byte 9Byte 10Byte 11Byte 12Byte 13Byte 14Byte 15

Memoria Flash

Buf 0Buf 1Buf 2Buf 3Buf 4Buf 5Buf 6Buf 7

Búfer RAM

$03$A3$13$FE

$03$A3$13$FE

$AB$12

$07

$AB$12

Página Uno

Byte 16Byte 17Byte 18Byte 19Byte 20Byte 21Byte 22Byte 23

$07

Página Dos

Page 22: Clase 14: Memoria EEPROM. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás

Memoria EEPROM I2CMemoria EEPROM I2C

Escritura de $45 (24LC02 = 1 0 1 0 A2 A1 A0) en $3E

SDA

SCL

1 0 1 0 A2 A1 A0 0 ACK

SDA

SCL

0 0 1 1 1 1 1 0 ACK

START

SDA

SCL

0 1 0 0 0 1 0 1 ACK

STOP

Dirección del periférico

Dirección del periférico

Dirección del registro $3E

Dirección del registro $3E

Dato $45 a escribir en $3E

Dato $45 a escribir en $3E

Page 23: Clase 14: Memoria EEPROM. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás

Memoria EEPROM I2CMemoria EEPROM I2C

Escritura de $72 (24LC16 = 1 0 1 0 B2 B1 B0) en $23A

SDA

SCL

1 0 1 0 0 1 0 0 ACK

SDA

SCL

0 0 1 1 1 0 1 0 ACK

START

SDA

SCL

0 1 1 1 0 0 1 0 ACK

STOP

Dirección del periférico, usando

bloque $2

Dirección del periférico, usando

bloque $2

Dirección del registro $3A dentro

del bloque $2

Dirección del registro $3A dentro

del bloque $2

Dato $72 a escribir en

registro $3A del bloque $2

Dato $72 a escribir en

registro $3A del bloque $2

Page 24: Clase 14: Memoria EEPROM. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás

Memoria EEPROM I2CMemoria EEPROM I2C Escribir en $95 (24LC256 = 1 0 1 0 A2 A1 A0) en $1A12

SDA

SCL

1 0 1 0 A2 A1 A0 0 ACK

SDA

SCL

0 0 0 1 1 0 1 0 ACK

START

SDA

SCL

0 0 0 1 0 0 1 0 ACK

SDA

SCL

1 0 0 1 0 1 0 1 ACK

STOP

Dirección del periférico

Dirección del periférico

Parte alta de dirección, es decir,

bloque $1A

Parte alta de dirección, es decir,

bloque $1A

Dato $95 a escribir en

registro $12 del bloque $1A

Dato $95 a escribir en

registro $12 del bloque $1A

Parte baja de dirección, es decir,

registro $12

Parte baja de dirección, es decir,

registro $12

Page 25: Clase 14: Memoria EEPROM. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás

Memoria EEPROM I2CMemoria 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.

Page 26: Clase 14: Memoria EEPROM. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás

A continuación…A continuación…

Memorias Externas

Memorias Internas

Memorias EEPROM I2C

Memorias Internas

Page 27: Clase 14: Memoria EEPROM. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás

Memoria EEPROM internaMemoria EEPROM interna

Registro de la memoria PIC16F887. Tipo 24LC02, memoria de 256 Bytes. Dirección Inicial 0x2100 Dirección Final?

24LC

0224L

C02

A0

A1

A2

GND

VDD

WP

SCL

SDA

0V

5V

0V

Page 28: Clase 14: Memoria EEPROM. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás

EscrituraEscritura

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

Page 29: Clase 14: Memoria EEPROM. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás

LecturaLectura

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

Page 30: Clase 14: Memoria EEPROM. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás

AlmacenamientoAlmacenamiento

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.

Page 31: Clase 14: Memoria EEPROM. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás

EjemplosEjemplos

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.

Page 32: Clase 14: Memoria EEPROM. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás

A continuación…A continuación…

Memorias Externas

Memorias Internas

Memorias EEPROM I2C

Memorias Externas

Page 33: Clase 14: Memoria EEPROM. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás

BibliotecaBiblioteca

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 …

Page 34: Clase 14: Memoria EEPROM. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás

ConfiguraciónConfiguració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.

Page 35: Clase 14: Memoria EEPROM. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás

EscrituraEscritura

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

Page 36: Clase 14: Memoria EEPROM. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás

LecturaLectura

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

Page 37: Clase 14: Memoria EEPROM. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás

EjemplosEjemplos

Desarrollar un programa que (1): Guardar y leer datos en las 10 primeras posiciones de

memoria de la EEPROM interna

Page 38: Clase 14: Memoria EEPROM. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III

Sistemas Digitales IIFin de la clase 14