Você está na página 1de 28

Comunicacin Serie: Ejemplos-Interface I2C

BUS I2C: IMPLEMENTACIN PRCTICA CON MICROCONTROLADORES PIC MEMORIAS EEPROM SERIE

Microcontroladores PIC

ATE-Universidad de Oviedo

Fernando Nuo Garca

Comunicacin Serie: Ejemplos-Interface I2C

Ventajas del BUS I2C


Definido inicialmente a mediados de los 80 para trabajar a 100kbit/s y en 1995 se defini un modo rpido de funcionamiento que permita transferencias de hasta 400kbit/s (algunos dispositivos grficos llegan a 3,4MHz). Presenta una transferencia lenta en comparacin con el modo SPI y mucho ms 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 transferencia es 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 funciones de interface con bus I2C, la inclusin de un dispositivo I2C adicional slo necesitara su conexin a las dos lneas del bus (SDA y SCL que son las mismas para todos) y asignarle una direccin. Los intercambios se realizaran utilizando los mismos subprogramas para todos La tensin de funcionamiento va de 2,5V a 5,5V y no es necesaria la presencia de drivers de adaptacin de tensin externos (integracin en los propios dispositivos)
Microcontroladores PIC
ATE-Universidad de Oviedo

Comunicacin Serie: Ejemplos-Interface I2C

Comparativa de Comunicaciones Serie

Microcontroladores PIC

ATE-Universidad de Oviedo

Comunicacin Serie: Ejemplos-Interface I2C

C.I. con bus I2C:


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 Al margen de su compatibilidad con el bus I2C, cada dispositivo tiene su propia configuracin, con sus registros internos, sus comandos, sus estados, etc. que ser preciso conocer en sus hojas de caractersticas funcionales particulares
Microcontroladores PIC
ATE-Universidad de Oviedo

Comunicacin Serie: Ejemplos-Interface I2C

Conversor D/A (MAX 518) Convertidor D/A doble de 8 bits Ser un esclavo en el bus I2C que siempre recibir datos (no enviar) SDA y SCL siempre sern entradas Con las entradas AD1 y AD0 se pueden seleccionar 2 bits de la direccin, los 5 primeros son fijos: Bus 0-1-0-1-1-A1-A0 podran conectarse hasta 4 MAX518 al mismo bus I2C Seleccin de Direccin
Microcontroladores PIC
ATE-Universidad de Oviedo

Comunicacin Serie: Ejemplos-Interface I2C

Conversor A/D y D/A (PCF8591) Ser dispositivo Esclavo en el bus que puede enviar (A/D) o recibir (D/A): SDA puede ser entrada o salida Direccin asignada al integrado: 1-0-0-1-A2-A1-A0 (hasta 8 en el bus) Bus Sel. Direccin

Entradas A/D Analgicas Salida D/A Analgica


6

Microcontroladores PIC

ATE-Universidad de Oviedo

Comunicacin Serie: Ejemplos-Interface I2C

Sensor de Temperatura (LM75) Combinacin 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 solicite el Maestro del bus Direccin asignada: 1-0-1-0-A2-A1-A0

Sel. Direccin

Bus I2C

Microcontroladores PIC

ATE-Universidad de Oviedo

Comunicacin Serie: Ejemplos-Interface I2C

Reloj/calendario de tiempo real con alarmas (X1288) Registra segundos, minutos, horas, da de la semana, da del mes, mes y ao Ser un esclavo en el bus con una direccin fija: 1-1-0-1-1-1-1 Puede enviar (da la hora, fecha, etc) o recibir datos (puesta en hora)

Microcontroladores PIC

ATE-Universidad de Oviedo

Comunicacin Serie: Ejemplos-Interface I2C

LCD con DRIVER y bus I2C (TTR6030) Display de cuarzo lquido de 2 lneas y 8 caracteres por lnea, 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 direccin: 0-1-1-0-0-1-A0 (A0 es configurable internamente) Dispone de un microcontrolador PCF2103

Microcontroladores PIC

ATE-Universidad de Oviedo

Comunicacin Serie: Ejemplos-Interface I2C

Memorias serie EEPROM con interface I2C (24XXX de Microchip) Memorias no voltiles borrables y grabables elctricamente (lectura/escritura) Organizacin matricial interna Dispositivos esclavos en bus I2C con direccin configurable: 1-0-1-0-A2-A1-A0 con transferencia de datos bidireccional Config.

Bus

Microcontroladores PIC

ATE-Universidad de Oviedo

10

Comunicacin Serie: Ejemplos-Interface I2C

Ejemplo: Memoria 24C65 ( 24LC65) en detalle La diferencia entre ambas son los mrgenes de tensin de funcionamiento: para la 24C65 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/posicin: 64kbits que se emplean para guardar datos no voltiles Dispone de un bloque de 4kbits de alta durabilidad y resistencia a ciclos de borrado y 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 rpida y el tiempo de escritura se establece en torno a 2ms por byte y de 5ms por pgina de 8 bytes de cach La transferencia mediante bus I2C puede realizarse a 100kHz(2,5V) a 400kHz

Microcontroladores PIC

ATE-Universidad de Oviedo

11

Comunicacin Serie: Ejemplos-Interface I2C

Descripcin funcional de 24LC65 La memoria, a nivel interno est organizada en bytes, que es el tamao de los datos que 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 puntero apuntando a la direccin asignada a dicho byte En cada lectura/escritura de un byte el puntero de direcciones se incrementa de manera automtica, permitiendo un acceso secuencial a las posiciones de la EEPROM. Si se desea un acceso aleatorio, ser preciso cambiar antes el puntero. Matriz de 8kbytes Puntero (A12-A0) b7 b6 b5 b4 b3 ...b0

Microcontroladores PIC

ATE-Universidad de Oviedo

12

Comunicacin Serie: Ejemplos-Interface I2C

Operaciones de Escritura 1.- Escribir un byte: El Maestro del bus generar un START, luego colocar la direccin asignada en 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 coloca la EEPROM al detectar coincidencia con su direccin, el Maestro debe enviar la direccin de la posicin que se desea grabar. Esto se hace en dos bytes, se enva 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 posicin, la EEPROM responder con un nuevo ACK y el Maestro finalizar enviando una condicin de STOP. Tras esta secuencia, la memoria inicia el ciclo interno de escritura que dura entorno a 2ms. Durante ese tiempo, la EEPROM no generar bits ACK de reconocimiento si se intenta una transferencia

Microcontroladores PIC

ATE-Universidad de Oviedo

13

Comunicacin Serie: Ejemplos-Interface I2C

1.- Escribir un byte (sigue): SDA: Start S 1 0 1 0 A2 A1 A0 0 ACK 0 0 0 D12 D11 D10 D9 D8 ACK Direccin de la EEPROM como Esclavo en I2C R/W 5 bits altos de la direccin donde se va a escribir

D7 D6 D5 D4 D3 D2 D1

D0 ACK b7 b6 b5 b4 b3 b2 b1 b0 ACK P Los 8 bits del dato que se quiere escribir Stop

Los 8 bits bajos de la direccin donde se va a escribir

Puntero interno D12 D11 D10.....D0

b7 b6 b5 b4 b3 ...b0 EEPROM de dir. 1010A2A1A0

SDA

EFECTO de la ESCRITURA

Microcontroladores PIC

ATE-Universidad de Oviedo

14

Comunicacin Serie: Ejemplos-Interface I2C

Operaciones de Escritura 2.- Escribir pginas o escribir cach: La escritura de varios bytes segn el procedimiento descrito puede resultar excesivamente lento. Para solventar el inconveniente, se puede utilizar una zona de memoria cach de 64 bytes organizada en 8 pginas de 8 bytes cada una La transferencia se inicia del mismo modo que la escritura de un byte pero ahora, tras el envo de la direccin de grabacin, se van enviando los datos de manera consecutiva (con ACK tras cada uno de ellos) que irn almacenndose temporalmente en la cach interna. Hasta que no se reciba la condicin de STOP, no se iniciar la grabacin de la EEPROM desde la cach. El tiempo total de grabacin de la EEPROM depender de cuntas pginas estn cargadas en la cach en el momento de recepcin del STOP, el tiempo mximo por pgina es de 5ms Tras la recepcin de cada byte, los 6 bits ms bajos del puntero de direcciones (que forman el puntero de la cach) se irn incrementando de modo automtico y los 7 ms altos no cambiarn. Si el Maestro llegase a enviar ms de 64 bytes antes de un STOP, el puntero de la cach se desbordara y se sobreescribiran los primeros bytes ya almacenados en la cach.
Microcontroladores PIC
ATE-Universidad de Oviedo

15

Comunicacin Serie: Ejemplos-Interface I2C

Operaciones de Escritura 2.- Escribir pginas o cach (sigue): SDA: Start S 1 0 1 0 A2 A1 A0 0 ACK 0 0 0 D12 D11 D10 D9 D8 ACK Direccin de la EEPROM como Esclavo en I2C R/W 5 bits altos de la direccin a partir de la cual se va a escribir

D7 D6 D5 D4 D3 D2 D1

D0 ACK a7 a6 a5 a4 a3 a2 a1 a0 ACK 1er byte de datos

Los 8 bits bajos de la direccin donde se va a escribir

b7 b6 b5 b4 b3 b2 b1 b0 ACK .... ... z7 z6 z5 z4 z3 z2 z1 z0 ACK P 2 byte de datos


Microcontroladores PIC

Ms datos...

ltimo byte de datos (bytes<65)

Stop
16

ATE-Universidad de Oviedo

Comunicacin Serie: Ejemplos-Interface I2C

Operaciones de Escritura: Memoria Cach La memoria cach es un buffer FIFO organizado en 8 pginas 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 slo se escriben los bytes que se han recibido, NO TODA LA CACH
byte 0 pgina 0 byte 1 pgina 0 .... byte 7 pgina 0 byte 0 pgina 1 byte 1 pgina 1 .... byte 7 pgina 1 byte 0 pgina 7 byte 1 pgina 7 .... byte 7 pgina 7

La escritura final se realiza entre pginas de 8 bytes: STOP Escritura de hasta 64 Bytes de una pgina de cach a una pgina de EEPROM Si no se ha completado el envo de los 8 bytes de una pgina de cach slo se transfieren a la EEPROM los bytes cargados
17

.....

CACH (64 bytes) NO todas las EEPROM Microcontroladores PIC

EEPROM (8kbytes)

24xxx tienen cach 64 bytes: en 24LC64 de 32 bytes ATE-Universidad de Oviedo

Comunicacin Serie: Ejemplos-Interface I2C

Operaciones de Escritura: Memoria Cach (II) Los bytes que se reciben se van cargando a partir de la pgina 0 de la cach, y el primer byte que se carga de esa pgina 0 viene seleccionado por los 3 ltimos bits (D2,D1,D0) de la direccin que va a ocupar finalmente en la EEPROM el primer byte enviado. (1) Direccin para el primer byte: 0010001101 010
byte 0, pag.0 cach byte 1, pag.0 cach

(4)
(2) Orden para llenar la cach

Escritura de hasta 64 Bytes

EEPROM (8kbytes)
(4) Si se completan los 64bytes de la cach, los 2 ltimos bytes enviados ocuparan los posiciones 0 y 1 de la pgina 0 y al realizar la escritura de EEPROM pasaran a 2 posiciones no deseadas al ser la escritura de pgina de cach a pgina de EEPROM

byte 0 pgina 0 byte 1 pgina 0 byte 2 pgina 0 byte 3 pgina 0 ... byte 7 pgina 0 byte 0 pgina 1 byte 1 pgina 1 .... byte 7 pgina 1 byte 0 pgina 7 byte 1 pgina 7 .... byte 7 pgina 7

.....

CACH (64 bytes)


18

Microcontroladores PIC

ATE-Universidad de Oviedo

(3) Al llegar al final seguira arriba

Comunicacin Serie: Ejemplos-Interface I2C

Disponibilidad de la EEPROM Durante los ciclos internos de escritura de la EEPROM el dispositivo no se encuentra operativo dentro del bus. En caso de que se inicie un ciclo de lectura o de escritura, la EEPROM respondera con un bit de no reconocimiento Para determinar si la EEPROM todava est ocupada con el ciclo interno, se pueden enviar 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 estn disponibles a medida que se van solicitando por parte del Maestro

Microcontroladores PIC

ATE-Universidad de Oviedo

19

Comunicacin Serie: Ejemplos-Interface I2C

Operaciones de Lectura Existen 3 tipos de operaciones de lectura: 1.- Lectura en la direccin actual del puntero interno de la EEPROM Se trata de leer el byte apuntado en ese momento por el puntero, ste se va incrementando automticamente con cada operacin de lectura 2.- Lectura aleatoria de un byte con una direccin dada Consiste en situar primero el puntero de direcciones de la EEPROM y realizar posteriormente una lectura 3.- Lectura secuencial Similar a la lectura aleatoria pero se van leyendo de manera sucesiva los bytes que siguen mientras el dispositivo Maestro vaya introduciendo bits de reconocimiento (ACK). Si el Maestro del bus decide finalizar las lecturas debe introducir una secuencia de STOP

Microcontroladores PIC

ATE-Universidad de Oviedo

20

Comunicacin Serie: Ejemplos-Interface I2C

Operaciones de Lectura 1.- Lectura de la direccin actual Se enva la direccin del dispositivo EEPROM como esclavo en el bus y se indica directamente que se desea realizar una lectura SDA: Start Direccin de la EEPROM como Esclavo en I2C Sin reconocimiento S 1 0 1 0 A2 A1 A0 1 ACK b7 b6 b5 b4 b3 b2 b1 b0 ACK P R/W Byte contenido en la direccin actual Stop

El puntero se incrementa de manera automtica

Puntero interno (antes) D12 D11 D10.....D0 (D12 D11 D10.....D0)+1


ATE-Universidad de Oviedo

b7 b6 b5 b4 b3 ...b0 EEPROM de dir. 1010A2A1A0

SDA

Microcontroladores PIC

Puntero interno (despus)

21

Comunicacin Serie: Ejemplos-Interface I2C

Operaciones de Lectura 2.- Lectura de una direccin aleatoria Se enva la direccin del dispositivo EEPROM en el bus y se indica con R/W que se va a escribir la direccin interna de la EEPROM a la que se quiere acceder, de este modo se sita el puntero. A continuacin se vuelve a direccionar el dispositivo pero indicando ahora que se desea realizar una lectura SDA: Start
S 1 0 1 0 A2 A1 A0 0 ACK 0 0 0 D12 D11 D10 D9 D8 ACK

Direccin de EEPROM como Esclavo en I2C

R/W=0 va a escribir direccin


0 A2 A1 A0

5 bits altos de direccin de la que se quiere leer

D7

D6 D5

D4 D3 D2 D1 D0

ACK

1 0 1

ACK

b7 b6

...

b0 ACK

Los 8 bits bajos de direccin donde se va a escribir

Direccin de EEPROM como Esclavo en I2C

byte ledo

Stop

Nuevo Start (Restart)


Microcontroladores PIC
ATE-Universidad de Oviedo

R/W=1 va a leer el byte

Sin ACK del Maestro


22

Comunicacin Serie: Ejemplos-Interface I2C

Operaciones de Lectura 3.- Lectura secuencial Es idntica a la lectura de una direccin aleatoria salvo que despus de que la EEPROM enve el primer dato, el Maestro genera un bit de reconocimiento (ACK) para que la EEPROM contine enviando el byte siguiente y as sucesivamente hasta que el Maestro detenga las lecturas mediante un no ACK y un bit de STOP SDA: Start
S 1 0 1 0 A2 A1 A0 0 ACK 0 0 0 D12 D11 D10 D9 D8 ACK

Direccin de EEPROM como Esclavo en I2C

R/W=0

5 bits altos de direccin de la que se quiere leer

D7

D6 D5

D4 D3 D2 D1 D0

ACK

1 0 1

0 A2 A1

A0

ACK

a7 a6

...

a0 ACK

Los 8 bits bajos de direccin donde se va a escribir


b7 b6 ... b0 ACK .... ACK

Direccin de EEPROM como Esclavo en I2C


b7 b6 ... b0 ACK P

1er byte ledo R/W=1

2 byte ledo
Microcontroladores PIC

ltimo byte
ATE-Universidad de Oviedo

Stop
23

Comunicacin Serie: Ejemplos-Interface I2C

Configuracin 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 tamao 4kbits) Se debe enviar a la EEPROM el nmero del bloque (0 a 15) a partir del cual se establece la proteccin y el nmero de bloques a proteger. Por defecto de fbrica, el bloque a partir del cual se establece la proteccin es el 15 y el nmero de bloques protegidos 0. Si se pretende escribir en una zona protegida, no se escribirn los datos pero no se produce ningn error ni se aborta la secuencia Dnde se sita la zona de 4kbits (512 bytes) de alta duracin y resistencia (10 millones de ciclos de borrado/escritura) Por defecto est definido como tal el bloque ms alto de la memoria Tanto la zona de alta Durabilidad como la de Seguridad son configurables UNA SOLA VEZ en la EEPROM
Microcontroladores PIC
ATE-Universidad de Oviedo

24

Comunicacin Serie: Ejemplos-Interface I2C

Configuracin 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 ms significativo de la parte alta de la direccin interna de la EEPROM y en los bits 4 a 1 se indica el nmero del bloque de 4kbits de partida Esto ser reconocido por la EEPROM que generar un ACK, el 2 byte de direccin no 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 nmero de bloques a proteger. Tras este byte, el Maestro enviar un bit de STOP Escribir seguridad

No importa Bloque de partida Indicativo de acceso a seguridad Acceso a Seguridad o alta durabilidad Dir.Esclavo
Microcontroladores PIC
ATE-Universidad de Oviedo

Nmero de bloques a proteger


25

Comunicacin Serie: Ejemplos-Interface I2C

Configuracin de la EEPROM: Lectura de Bloques Protegidos Tambin 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 partir de ese byte, la EEPROM enva el nmero del bloque inicial y nmero de bloques que tiene configurados como protegidos

Lectura de la Seguridad Configurada:

Por Maestro Leer seguridad


Microcontroladores PIC
ATE-Universidad de Oviedo

26

Comunicacin Serie: Ejemplos-Interface I2C

Configuracin de la EEPROM: Bloque de alta durabilidad Para indicar qu bloque ser de alta durabilidad, se debe enviar un comando de escritura de configuracin: bit ms significativo de la direccin a 1, los bits 4 a 1 indican el nmero de ese bloque, el siguiente byte es indiferente y en el tercer byte se indica configuracin de alta durabilidad (S/H=0) y escritura (R=0). El Maestro acaba con un bit de STOP Escribir

Dir.Esclavo

Bloque de alta durabilidad

No importa Acceso a alta durabilidad

Indicativo de acceso a seguridad o alta durabilidad

Microcontroladores PIC

ATE-Universidad de Oviedo

27

Comunicacin Serie: Ejemplos-Interface I2C

Configuracin de la EEPROM: Lectura de Posicin del Bloque de alta durabilidad Tambin resulta posible leer de la EEPROM la ubicacin del bloque de 4kbits configurado como de alta durabilidad La transferencia en la lnea SDA del bus I2C ser la siguiente:

Por Maestro

Microcontroladores PIC

ATE-Universidad de Oviedo

28

Você também pode gostar