ssp i2c practico

28
1 Comunicación Serie: Ejemplos-Interface I2C Microcontroladores PIC ©ATE-Universidad de Oviedo BUS I2C: IMPLEMENTACIÓN PRÁCTICA CON MICROCONTROLADORES PIC MEMORIAS EEPROM SERIE Fernando Nuño García

Upload: rpanchon9737

Post on 03-Aug-2015

83 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Ssp i2c Practico

1

Comunicación Serie: Ejemplos-Interface I2C

Microcontroladores PIC ©ATE-Universidad de Oviedo

BUS I2C:IMPLEMENTACIÓN PRÁCTICA CON MICROCONTROLADORES PIC

MEMORIAS EEPROM SERIE

Fernando Nuño García

Page 2: Ssp i2c Practico

2

Comunicación Serie: Ejemplos-Interface I2C

Microcontroladores PIC ©ATE-Universidad de Oviedo

Ventajas del BUS I2C

• Definido inicialmente a mediados de los 80 para trabajar a 100kbit/s y en 1995se definió un modo rápido de funcionamiento que permitía transferencias de hasta400kbit/s (algunos dispositivos gráficos llegan a 3,4MHz).

• Presenta una transferencia “lenta” en comparación con el modo SPI y mucho más con la lectura/escritura directa de los puertos de un microcontrolador

• Es útil y se emplea en muchas aplicaciones en las que la velocidad de transferenciaes mucho mayor de lo que el caso requiere (p.e. Medida de temperaturas con constantes de tiempo de segundos)

• Su principal ventaja, es que una vez disponible el microcontrolador con sus funcionesde interface con bus I2C, la inclusión de un dispositivo I2C adicional sólo necesitaríasu conexión a las dos líneas del bus (SDA y SCL que son las mismas para todos) yasignarle una dirección. Los intercambios se realizarían utilizando los mismos subprogramas para todos

• La tensión de funcionamiento va de 2,5V a 5,5V y no es necesaria la presencia de “drivers” de adaptación de tensión externos (integración en los propios dispositivos)

Page 3: Ssp i2c Practico

3

Comunicación Serie: Ejemplos-Interface I2C

Microcontroladores PIC ©ATE-Universidad de Oviedo

Comparativa de Comunicaciones Serie

Page 4: Ssp i2c Practico

4

Comunicación Serie: Ejemplos-Interface I2C

Microcontroladores PIC ©ATE-Universidad de Oviedo

• Convertidor D/A: MAX518 (DIP8 ó SO-8) de Maxim

• Convertidor A/D y D/A: PCF8591 (DIP16 ó SO-16) de Philips

• Sensor de Temperatura: LM75 (SO-8) de National Semiconductor

• EEPROM serie: 24Cxx ó 24LCxx (DIP8 ó SO-8) de Microchip

• Reloj/Calendario de tiempo real (RTC): X1288 (SOIC-14) de Xicor

• LCD con Driver: TTR6030 (PCB con 4 pines)

• Otros Microcontroladores: PCA8516 de Philips para LCDs

C.I. con bus I2C:

Al margen de su compatibilidad con el bus I2C, cada dispositivotiene su propia configuración, con sus registros internos, sus comandos,

sus estados, etc. que será preciso conocer en sus hojas de característicasfuncionales particulares

Page 5: Ssp i2c Practico

5

Comunicación Serie: Ejemplos-Interface I2C

Microcontroladores PIC ©ATE-Universidad de Oviedo

Conversor D/A (MAX 518)

• Convertidor D/A doble de 8 bits

• Será un esclavo en el bus I2C quesiempre recibirá datos (no enviará) • SDA y SCL siempre serán entradas

• Con las entradas AD1 y AD0 se puedenseleccionar 2 bits de la dirección, los 5primeros son fijos:

0-1-0-1-1-A1-A0

podrían conectarse hasta 4 MAX518al mismo bus I2C

Selección de Dirección

Bus

Page 6: Ssp i2c Practico

6

Comunicación Serie: Ejemplos-Interface I2C

Microcontroladores PIC ©ATE-Universidad de Oviedo

Conversor A/D y D/A (PCF8591)

BusSel. Dirección

Entradas A/DAnalógicas

Salida D/AAnalógica

• Será dispositivo Esclavo en el bus que puede enviar (A/D) o recibir (D/A): SDApuede ser entrada o salida

• Dirección asignada al integrado: 1-0-0-1-A2-A1-A0 (hasta 8 en el bus)

Page 7: Ssp i2c Practico

7

Comunicación Serie: Ejemplos-Interface I2C

Microcontroladores PIC ©ATE-Universidad de Oviedo

Sensor de Temperatura (LM75)

• Combinación de sensor de Tª, conversor A/D e interface I2C en un solo C.I.

• Siempre será dispositivo esclavo y estará emitiendo datos cuando se lo soliciteel Maestro del bus

• Dirección asignada: 1-0-1-0-A2-A1-A0

Sel. DirecciónBus I2C

Page 8: Ssp i2c Practico

8

Comunicación Serie: Ejemplos-Interface I2C

Microcontroladores PIC ©ATE-Universidad de Oviedo

Reloj/calendario de tiempo real con alarmas (X1288)

• Registra segundos, minutos, horas, día de la semana, día del mes, mes y año

• Será un esclavo en el bus con una dirección fija: 1-1-0-1-1-1-1

• Puede enviar (da la hora, fecha, etc) o recibir datos (puesta en hora)

Page 9: Ssp i2c Practico

9

Comunicación Serie: Ejemplos-Interface I2C

Microcontroladores PIC ©ATE-Universidad de Oviedo

LCD con DRIVER y bus I2C (TTR6030)

• Display de cuarzo líquido de 2 líneas y 8 caracteres por línea, caracteres de 5x7

• Es un LCD con su driver e interface I2C en una placa de circuito impreso pensado para ser Esclavo de un bus I2C con la dirección: 0-1-1-0-0-1-A0 (A0 es configurable internamente)

• Dispone de un microcontrolador PCF2103

Page 10: Ssp i2c Practico

10

Comunicación Serie: Ejemplos-Interface I2C

Microcontroladores PIC ©ATE-Universidad de Oviedo

Memorias serie EEPROM con interface I2C (24XXX de Microchip)

• Memorias no volátiles borrables y grabables eléctricamente (lectura/escritura)

• Organización matricial interna

• Dispositivos esclavos en bus I2C con dirección configurable: 1-0-1-0-A2-A1-A0con transferencia de datos bidireccional

Bus

Config.

Page 11: Ssp i2c Practico

11

Comunicación Serie: Ejemplos-Interface I2C

Microcontroladores PIC ©ATE-Universidad de Oviedo

Ejemplo: Memoria 24C65 (ó 24LC65) en detalle

• La diferencia entre ambas son los márgenes de tensión de funcionamiento: para la24C65 va de 4,5V a 5,5V y para 24LC65 de 2,5V a 6,0V

• Son memorias serie EEPROM de 8k posiciones x 8 bits/posición: 64kbits que se empleanpara guardar datos no volátiles

• Dispone de un bloque de 4kbits de “alta durabilidad y resistencia” a ciclos de borradoy escritura frecuente de datos (10.000.000 de ciclos de borrado/escritura), el resto (60kbits) garantizan un promedio de 1.000.000 de secuencias de borrado y escritura

• Dispone de una caché interna de 64bytes para escritura rápida y el tiempo de escritura se establece en torno a 2ms por byte y de 5ms por página de 8 bytes de caché

• La transferencia mediante bus I2C puede realizarse a 100kHz(2,5V) ó a 400kHz

Page 12: Ssp i2c Practico

12

Comunicación Serie: Ejemplos-Interface I2C

Microcontroladores PIC ©ATE-Universidad de Oviedo

Descripción funcional de 24LC65

• La memoria, a nivel interno está organizada en bytes, que es el tamaño de los datosque puede recibir o enviar en cada transferencia individual el bus I2C

• Para el acceso a cada byte interno, sea para lectura o para escritura, la memoria dispone de un puntero de direcciones que en el caso de la 24LC65 será de 13 bits (para 8kbytes = 213 bytes)

• Para acceder a un byte de la memoria, será preciso situar previamente el punteroapuntando a la dirección asignada a dicho byte

• En cada lectura/escritura de un byte el puntero de direcciones se incrementa demanera automática, permitiendo un acceso secuencial a las posiciones de la EEPROM.Si se desea un acceso aleatorio, será preciso cambiar antes el puntero.

Puntero (A12-A0) b7 b6 b5 b4 b3 ...b0

Matrizde 8kbytes

Page 13: Ssp i2c Practico

13

Comunicación Serie: Ejemplos-Interface I2C

Microcontroladores PIC ©ATE-Universidad de Oviedo

Operaciones de Escritura

1.- Escribir un byte:

• El Maestro del bus generará un START, luego colocará la dirección asignadaen el bus al dispositivo EEPROM (7bits) y el bit R/W=0 para indicar que el Maestro va a grabar un dato en la EEPROM Esclava. Tras el ACK que colocala EEPROM al detectar coincidencia con su dirección, el Maestro debe enviarla dirección de la posición que se desea grabar. Esto se hace en dos bytes, seenvía primero un byte con tres ceros y los 5 bits de la parte alta del puntero interno y luego los otros 8 bits.

• Tras los correspondientes ACK de la memoria (tras cada byte), el Maestro enviará el byte a escribir en la referida posición, la EEPROM responderá conun nuevo ACK y el Maestro finalizará enviando una condición de STOP.

• Tras esta secuencia, la memoria inicia el ciclo interno de escritura que duraentorno a 2ms. Durante ese tiempo, la EEPROM no generará bits ACK de reconocimiento si se intenta una transferencia

Page 14: Ssp i2c Practico

14

Comunicación Serie: Ejemplos-Interface I2C

Microcontroladores PIC ©ATE-Universidad de Oviedo

1.- Escribir un byte (sigue):

S 1 0 1 0 A2 A1 A0 0

Start Dirección de la EEPROMcomo Esclavo en I2C R/W

ACK 0 0 0 D12 D11 D10 D9 D8 ACK

D7 D6 D5 D4 D3 D2 D1 D0 ACK

5 bits altos de la dirección donde se va a escribir

Los 8 bits bajos de la dirección donde se va a escribir

b7 b6 b5 b4 b3 b2 b1 b0 ACK P

StopLos 8 bits del dato quese quiere escribir

SDA:

D12 D11 D10.....D0 b7 b6 b5 b4 b3 ...b0EEPROM de dir.

1010A2A1A0

Puntero interno SDA

EFECTOde la

ESCRITURA

Page 15: Ssp i2c Practico

15

Comunicación Serie: Ejemplos-Interface I2C

Microcontroladores PIC ©ATE-Universidad de Oviedo

Operaciones de Escritura

2.- Escribir páginas o escribir caché:

• La escritura de varios bytes según el procedimiento descrito puede resultarexcesivamente lento. Para solventar el inconveniente, se puede utilizar una zona de memoria caché de 64 bytes organizada en 8 páginas de 8 bytes cada una

• La transferencia se inicia del mismo modo que la escritura de un byte pero ahora, tras el envío de la dirección de grabación, se van enviando los datosde manera consecutiva (con ACK tras cada uno de ellos) que irán almacenándosetemporalmente en la caché interna. Hasta que no se reciba la condición de STOP,no se iniciará la grabación de la EEPROM desde la caché. El tiempo total de grabación de la EEPROM dependerá de cuántas páginas estén cargadas en la caché en el momento de recepción del STOP, el tiempo máximo por página es de 5ms

• Tras la recepción de cada byte, los 6 bits más bajos del puntero de direcciones(que forman el puntero de la caché) se irán incrementando de modo automático y los 7 más altos no cambiarán. Si el Maestro llegase a enviar más de 64 bytes antesde un STOP, el puntero de la caché se desbordaría y se sobreescribirían losprimeros bytes ya almacenados en la caché.

Page 16: Ssp i2c Practico

16

Comunicación Serie: Ejemplos-Interface I2C

Microcontroladores PIC ©ATE-Universidad de Oviedo

...

2.- Escribir páginas o caché (sigue):

Operaciones de Escritura

S 1 0 1 0 A2 A1 A0 0

Start Dirección de la EEPROMcomo Esclavo en I2C R/W

ACK 0 0 0 D12 D11 D10 D9 D8 ACK

5 bits altos de la dirección a partir de la cual se va a escribir

SDA:

D7 D6 D5 D4 D3 D2 D1 D0 ACK

Los 8 bits bajos de la dirección donde se va a escribir

a7 a6 a5 a4 a3 a2 a1 a0 ACK

P

Stop

1er byte de datos

b7 b6 b5 b4 b3 b2 b1 b0 ACK

2º byte de datos

z7 z6 z5 z4 z3 z2 z1 z0 ACK

Último byte de datos(bytes<65)

....

Másdatos...

Page 17: Ssp i2c Practico

17

Comunicación Serie: Ejemplos-Interface I2C

Microcontroladores PIC ©ATE-Universidad de Oviedo

Operaciones de Escritura: Memoria Caché

• La memoria caché es un buffer FIFO organizado en 8 páginas de 8 bytes cada una.En cuanto se inicia un comando de escritura, la caché empieza a cargarse con los bytes que se van recibiendo. Al aparecer un STOP se inicia la escritura real en EEPROM,pero sólo se escriben los bytes que se han recibido, NO TODA LA CACHÉ

byte 0 página 0byte 1 página 0

byte 7 página 0....

byte 0 página 1byte 1 página 1

byte 7 página 1....

byte 0 página 7byte 1 página 7

byte 7 página 7....

.....

CACHÉ (64 bytes) EEPROM (8kbytes)

Escritura de hasta 64 Bytes

STOP

La escritura final serealiza entre páginas

de 8 bytes:

de una página de cachéa una página de EEPROM

Si no se ha completado elenvío de los

8 bytes de una página de caché

sólo se transfieren a laEEPROM

los bytes cargados

NO todas las EEPROM 24xxx tienen caché 64 bytes: en 24LC64 de 32 bytes

Page 18: Ssp i2c Practico

18

Comunicación Serie: Ejemplos-Interface I2C

Microcontroladores PIC ©ATE-Universidad de Oviedo

• Los bytes que se reciben se van cargando a partir de la página 0 de la caché, y el primer byte que se carga de esa página 0 viene seleccionado por los 3 últimos bits(D2,D1,D0) de la dirección que va a ocupar finalmente en la EEPROM el primer byteenviado.

CACHÉ (64 bytes)

EEPROM (8kbytes)

Escritura de hasta 64 Bytes

Operaciones de Escritura: Memoria Caché (II)

0010001101 010

Dirección parael primer byte:

byte 0 página 0byte 1 página 0

byte 7 página 0

byte 2 página 0

byte 0 página 1byte 1 página 1

byte 7 página 1....

byte 0 página 7byte 1 página 7

byte 7 página 7....

.....

byte 3 página 0...

(2) O

rden

par

a lle

nar

la c

aché

(1)

byte 3 página 0

(3) A

l lle

gar

al “f

inal

” seg

uirí

a ar

riba

(4) Si se completan los 64bytes de la caché,los 2 últimos bytes enviados ocuparían los

posiciones 0 y 1 de la página 0 y al realizar laescritura de EEPROM pasarían a 2 posiciones

no deseadas al ser la escriturade página de caché a página de EEPROM

byte 1, pag.0 cachébyte 0, pag.0 caché (4)

Page 19: Ssp i2c Practico

19

Comunicación Serie: Ejemplos-Interface I2C

Microcontroladores PIC ©ATE-Universidad de Oviedo

Disponibilidad de la EEPROM

• Durante los ciclos internos de escritura de la EEPROM el dispositivo no se encuentraoperativo dentro del bus. En caso de que se inicie un ciclo de lectura o de escritura, la EEPROM respondería con un bit de “no reconocimiento”

• Para determinar si la EEPROM todavía está ocupada con el ciclo interno, se puedenenviar los bytes iniciales para lanzar escrituras hasta que haya una respuesta con un bit de reconocimiento desde la EEPROM

• Los ciclos de lectura no precisan de esperas ya que los datos están disponibles a medida que se van solicitando por parte del Maestro

Page 20: Ssp i2c Practico

20

Comunicación Serie: Ejemplos-Interface I2C

Microcontroladores PIC ©ATE-Universidad de Oviedo

Operaciones de Lectura

Existen 3 tipos de operaciones de lectura:

1.- Lectura en la dirección actual del puntero interno de la EEPROM

Se trata de leer el byte apuntado en ese momento por el puntero, éste seva incrementando automáticamente con cada operación de lectura

2.- Lectura aleatoria de un byte con una dirección dada Consiste en situar primero el puntero de direcciones de la EEPROM y realizarposteriormente una lectura

3.- Lectura secuencial

Similar a la lectura aleatoria pero se van leyendo de manera sucesiva losbytes que siguen mientras el dispositivo Maestro vaya introduciendo bitsde reconocimiento (ACK). Si el Maestro del bus decide finalizar las lecturasdebe introducir una secuencia de STOP

Page 21: Ssp i2c Practico

21

Comunicación Serie: Ejemplos-Interface I2C

Microcontroladores PIC ©ATE-Universidad de Oviedo

Operaciones de Lectura

1.- Lectura de la dirección actual

Se envía la dirección del dispositivo EEPROM como esclavo en el bus y se indica directamente que se desea realizar una lectura

S 1 0 1 0 A2 A1 A0 1

Start Dirección de la EEPROMcomo Esclavo en I2C R/W

ACK b7 b6 b5 b4 b3 b2 b1 b0 ACK

Byte contenido en ladirección actual

SDA:P

Stop

Sin reconocimiento

El puntero se incrementa de manera automática

D12 D11 D10.....D0 b7 b6 b5 b4 b3 ...b0EEPROM de dir.

1010A2A1A0

Puntero interno (antes) SDA

(D12 D11 D10.....D0)+1

Puntero interno (después)

Page 22: Ssp i2c Practico

22

Comunicación Serie: Ejemplos-Interface I2C

Microcontroladores PIC ©ATE-Universidad de Oviedo

Operaciones de Lectura

2.- Lectura de una dirección aleatoria

Se envía la dirección del dispositivo EEPROM en el bus y se indica con R/W que seva a escribir la dirección interna de la EEPROM a la que se quiere acceder, de estemodo se sitúa el puntero. A continuación se vuelve a direccionar el dispositivo peroindicando ahora que se desea realizar una lectura

S 1 0 1 0 A2 A1 A0 0

Start Dirección de EEPROMcomo Esclavo en I2C R/W=0

va aescribir dirección

ACK 0 0 0 D12 D11 D10 D9 D8 ACK

5 bits altos de dirección de la que se quiere leer

SDA:

D7 D6 D5 D4 D3 D2 D1 D0

Los 8 bits bajos de dirección donde se va a escribir

ACK S 1 0 1 0 A2 A1 A0 1

Nuevo Start(Restart)

Dirección de EEPROMcomo Esclavo en I2C

R/W=1va a leerel byte

ACK b7 b6 ... ACK P

byte leído

Sin ACKdel Maestro

Stop

b0

Page 23: Ssp i2c Practico

23

Comunicación Serie: Ejemplos-Interface I2C

Microcontroladores PIC ©ATE-Universidad de Oviedo

Operaciones de Lectura

3.- Lectura secuencial

Es idéntica a la lectura de una dirección aleatoria salvo que después de que la EEPROM envíe el primer dato, el Maestro genera un bit de reconocimiento (ACK) para que la EEPROM continúe enviando el byte siguiente y así sucesivamente hasta que el Maestrodetenga las lecturas mediante un “no ACK” y un bit de STOP

S 1 0 1 0 A2 A1 A0 0

Start Dirección de EEPROMcomo Esclavo en I2C R/W=0

ACK 0 0 0 D12 D11 D10 D9 D8 ACK

5 bits altos de dirección de la que se quiere leer

SDA:

D7 D6 D5 D4 D3 D2 D1 D0

Los 8 bits bajos de dirección donde se va a escribir

ACK S 1 0 1 0 A2 A1 A0 1

Dirección de EEPROMcomo Esclavo en I2C

ACK a7 a6 ... ACK

1er byte leído

a0

b7 b6 ... ACK

2º byte leído

b0 b6 ... ACK

último byte

b0.... ACK b7

R/W=1P

Stop

Page 24: Ssp i2c Practico

24

Comunicación Serie: Ejemplos-Interface I2C

Microcontroladores PIC ©ATE-Universidad de Oviedo

Configuración de la EEPROM 24(L)C65

A nivel interno de la EEPROM se pueden configurar dos aspectos:

• Zona de Seguridad: memoria protegida ante escritura (desde 0 hasta 15 bloques contiguos de tamaño 4kbits)

Se debe enviar a la EEPROM el número del bloque (0 a 15) a partir del cual se establece la protección y el número de bloques a proteger. Por defectode fábrica, el bloque a partir del cual se establece la protección es el 15 yel número de bloques protegidos 0.

Si se pretende escribir en una zona protegida, no se escribirán los datos perono se produce ningún error ni se aborta la secuencia

• Dónde se sitúa la zona de 4kbits (512 bytes) de alta duración y resistencia (10 millones de ciclos de borrado/escritura)

Por defecto está definido como tal el bloque más alto de la memoria

Tanto la zona de alta Durabilidad como la de Seguridadson configurables UNA SOLA VEZ en la EEPROM

Page 25: Ssp i2c Practico

25

Comunicación Serie: Ejemplos-Interface I2C

Microcontroladores PIC ©ATE-Universidad de Oviedo

Configuración de la EEPROM: Bloques Protegidos

• Para indicar los bloques protegidos, el Maestro debe generar un comando de escritura pero colocando un “1” en el bit más significativo de la parte alta de la dirección interna de la EEPROM y en los bits 4 a 1 se indica el número del bloque de 4kbits de partida

• Esto será reconocido por la EEPROM que generará un ACK, el 2º byte de direcciónno importa lo que contiene, finalmente en el 3er byte, el bit 7 debe estar a 1 (S/H) y el bit 6 a 0 (R: escribir Seguridad), los bits 3 a 0 indican el número de bloques a proteger. Tras este byte, el Maestro enviará un bit de STOP

Dir.Esclavo

Indicativo de acceso a seguridado alta durabilidad

Bloque departida

No importaNúmero debloques aproteger

Escribir seguridad

Acceso a Seguridad

Page 26: Ssp i2c Practico

26

Comunicación Serie: Ejemplos-Interface I2C

Microcontroladores PIC ©ATE-Universidad de Oviedo

Configuración de la EEPROM: Lectura de Bloques Protegidos

• También resulta posible conocer mediante un comando especial de lectura, québloques de la EEPROM se encuentran protegidos

• El formato es el indicado abajo, similar al de escritura salvo en el bit R, a partirde ese byte, la EEPROM envía el número del bloque inicial y número de bloques que tiene configurados como protegidos

Lectura de la Seguridad Configurada:

Leer seguridad

Por Maestro

Page 27: Ssp i2c Practico

27

Comunicación Serie: Ejemplos-Interface I2C

Microcontroladores PIC ©ATE-Universidad de Oviedo

Configuración de la EEPROM: Bloque de alta durabilidad

• Para indicar qué bloque será de alta durabilidad, se debe enviar un comando de escritura de configuración: bit más significativo de la dirección a 1, los bits 4 a 1indican el número de ese bloque, el siguiente byte es indiferente y en el tercerbyte se indica configuración de alta durabilidad (S/H=0) y escritura (R=0). El Maestro acaba con un bit de STOP

Dir.Esclavo

Indicativo de acceso a seguridado alta durabilidad

Bloque dealta

durabilidad

No importa

Acceso a altadurabilidad

Escribir

Page 28: Ssp i2c Practico

28

Comunicación Serie: Ejemplos-Interface I2C

Microcontroladores PIC ©ATE-Universidad de Oviedo

Configuración de la EEPROM: Lectura de Posición del Bloque de alta durabilidad

• También resulta posible leer de la EEPROM la ubicación del bloque de 4kbitsconfigurado como de alta durabilidad

• La transferencia en la línea SDA del bus I2C será la siguiente:

Por Maestro