Вы находитесь на странице: 1из 30

Sistemas Electrnicos Digitales II

Tema 3: Expansin de recursos


El bus I2C

Protocolo de comunicacin I2C

Protocolo de Comunicacin I2C


ndice de la Leccin

Introduccin
Caractersticas del bus I2C
Conexin de dispositivos al bus: nivel fsico
Intercambio de informacin: nivel de enlace
Generacin del protocolo desde un microcontrolador
Ejemplos de dispositivos que utiliza el bus I2C
Conclusiones
Bibliografa

Protocolo de comunicacin I2C

Protocolo de Comunicacin I2C


ndice de la Leccin

Introduccin
Caractersticas del bus I2C
Conexin de dispositivos al bus: nivel fsico
Intercambio de informacin: nivel de enlace
Generacin del protocolo desde un microcontrolador
Ejemplos de dispositivos que utiliza el bus I2C
Conclusiones
Bibliografa

Protocolo de comunicacin I2C

Introduccin
En las lecciones anteriores se ha visto:
Interaccin con el entorno
Puertos de entrada/salida
Expansin de memoria externa

Comunicacin serie
Asncrona
Sencillo interfaz sncrono

En esta leccin vamos a ver:

Expansin de recursos utilizando un bus serie


Protocolo de comunicacin
Generacin del protocolo
Ejemplos de dispositivos

Protocolo de comunicacin I2C

Introduccin
Interconexin de dispositivos mediante bus serie
Ventajas

Pocos cables de interconexin


Componentes con encapsulado reducido
Tarjetas reducidas
Conexin de dispositivos a distancia

Inconvenientes
Velocidad inferior a un bus paralelo
Disponibilidad de circuitos que soporten el bus

Parmetros generales

Nmero de hilos de conexin


Velocidad (bits/segundo)
Distancia mxima y nmero de dispositivos
Protocolo de acceso al medio compartido
Poltica de direccionamiento
Protocolo de comunicacin I2C

Introduccin
Origen del bus I2C (Inter Integrated Circuits Bus)
Desarrollado por Philips a principios de los 80 como medio de
interconexin entre una CPU y dispositivos perifricos dentro de la
electrnica de consumo.
Simplificar las conexiones entre los perifricos (pistas, decodificadores, ..)
Aumentar de la inmunidad al ruido
Control de sistemas de audio y vdeo (baja velocidad)

Actualmente disean dispositivos basados en I2C muchos fabricantes


Xicor, SGS-Thomson, Siemens, Intel, TI, Maxim, Atmel, Analog Devices

Aplicaciones

Bus de interconexin entre dispositivos en una tarjeta o equipo


Sistema de configuracin y supervisin en ordenadores servidores
Sistemas de gestin de alimentacin
Conexin en serie de dispositivos externos a un ordenador
Tarjetas chip
Protocolo de comunicacin I2C

Protocolo de Comunicacin I2C


ndice de la Leccin

Introduccin
Caractersticas del bus I2C
Conexin de dispositivos al bus: nivel fsico
Intercambio de informacin: nivel de enlace
Generacin del protocolo desde un microcontrolador
Ejemplos de dispositivos que utiliza el bus I2C
Conclusiones
Bibliografa

Protocolo de comunicacin I2C

Caractersticas del bus I2C


Caractersticas del bus I2C
Bus de comunicacin sncrono
La comunicacin es controlada por una seal de reloj comn

Bus formado por 2 hilos


SDA (Serial DAta Line): datos
SCL (Serial CLock line): reloj
Tambin es necesaria una referencia comn de masa

Velocidad de transmisin
Standard: hasta 100 Kbits/s
Fast: hasta 400 Kbits/s
High-speed: hasta 3,4 Mbits/s

Cada dispositivo del bus tiene una direccin nica


Distancia y nmero de dispositivos
Limitado por la capacidad del bus (inferior a 400pF). Normalmente 2 o 3 metros

Protocolo de acceso al bus:


Maestro esclavo
I2C soporta protocolo multimaestro

Protocolo de comunicacin I2C

Protocolo de Comunicacin I2C


ndice de la Leccin

Introduccin
Caractersticas del bus I2C
Conexin de dispositivos al bus: nivel fsico
Intercambio de informacin: nivel de enlace
Generacin del protocolo desde un microcontrolador
Ejemplos de dispositivos que utiliza el bus I2C
Conclusiones
Bibliografa

Protocolo de comunicacin I2C

Conexin de dispositivos al bus: nivel fsico


Conexin en bus

Dispositivos

Todos los dispositivos conectados a las


mismas lneas
Las salidas deben ser en colector o
drenador abierto

Microcontrolador
Protocolo de comunicacin I2C

Conexin de dispositivos al bus: nivel fsico


Caractersticas de una conexin en colector abierto
Permite conectar varias fuentes de datos a un mismo hilo
Nivel alto en el bus
Si ningn dispositivo accede al bus
Si ningn dispositivo transmite un cero
Nivel bajo en el bus
Si un dispositivo pone un nivel bajo

VDD
Nivel alto

Si dos dispositivos escriben a la vez siempre prevalecen los ceros


AND cableada

Si un dispositivo escribe un nivel alto pero lee un cero indica que


otro dispositivo est tambin accediendo al bus

VDD
Nivel bajo

Protocolo de comunicacin I2C

Conexin de dispositivos al bus: nivel fsico


Inconvenientes de la conexin en colector abierto
Las capacidades de la lnea se cargan a travs del pull-up
Se puede solucionar utilizando una carga activa en lugar de un resistor
VDD
SDA
SCL

VDD

SDA
SCL

Carga activa
t

Protocolo de comunicacin I2C

Protocolo de Comunicacin I2C


ndice de la Leccin
Introduccin a la comunicacin entre dispositivos mediante un
bus serie
Caractersticas del bus I2C
Conexin de dispositivos al bus: nivel fsico
Intercambio de informacin: nivel de enlace
Generacin del protocolo desde un microcontrolador
Ejemplos de dispositivos que utiliza el bus I2C
Conclusiones
Bibliografa

Protocolo de comunicacin I2C

Intercambio de informacin: nivel de enlace


Protocolo de acceso al medio: maestro - esclavo
El maestro controla la comunicacin

Genera la seal de reloj del bus (SCL)


Inicia y termina la comunicacin
Direcciona a los esclavos
Establece el sentido de la comunicacin

El protocolo requiere que cada byte de informacin sea confirmado


por el destinatario

Nomenclatura
Emisor: Dispositivo que enva datos al bus
Receptor: Dispositivo que recibe datos del bus
Maestro: Dispositivo que inicia una transferencia, genera las seales
de reloj y termina la transferencia
Esclavo: Dispositivo direccionado por un maestro
Protocolo de comunicacin I2C

Intercambio de informacin: nivel de enlace


Transmisin de bits
Los bits de datos van por SDA
Por cada bit de informacin es necesario un pulso de SCL
Los datos slo pueden cambiar cuando SCL est a nivel bajo

SDA

SCL
Dato
vlido

Dato
vlido

Protocolo de comunicacin I2C

Intercambio de informacin: nivel de enlace


Transmisin de datos
La unidad bsica de transmisin en el byte
Las transferencias de datos son de 8 bits
Cada byte enviado requiere una respuesta de confirmacin

SDA
Emisor

ACK: el destinatario (maestro o esclavo) mantiene SDA a nivel bajo durante un


tiempo de bit (si no lo hace NACK)
El maestro genera un pulso de SCL
D7

D6

D5

D4

D3

D2

D1

D0

Receptor
Bus

ACK
D7

D6

D5

D4

D3

D2

D1

D0

ACK

Maestro

SCL

D a t o

Protocolo de comunicacin I2C

Intercambio de informacin: nivel de enlace


Inicio de transmisin
La transmisin la inicia el maestro
Flanco de bajada en SDA con SCL a nivel alto
Cuando nadie accede al bus hay un nivel alto en SCL y SDA

SCL
(maestro)
SDA
(maestro)
Bus
inactivo

Condicin
de inicio
START

Primer bit

Protocolo de comunicacin I2C

Intercambio de informacin: nivel de enlace


Finalizacin de transmisin
La transmisin la finaliza el maestro
Flanco de subida en SDA con SCL a nivel alto

SCL
(maestro)
SDA
(maestro)
ltimo bit
ACK o NACK

Condicin
de fin
STOP

Bus
inactivo

Protocolo de comunicacin I2C

Intercambio de informacin: nivel de enlace


Intercambio de datos
Direccionamiento
Tras la condicin de inicio el maestro enva:
Direccin del esclavo (7 bits)
Comando de lectura o escritura (R=1 W=0)
SDA
A6

Maestro

A5

A4

A3

A2

A1

A0

R/W

Esclavo

ACK
A6

Bus

A5

A4

A3

A2

A1

A0

R/W

ACK

R/W

Maestro

SCL

Direccin
Protocolo de comunicacin I2C

Intercambio de informacin: nivel de enlace


Maestro enva datos a un esclavo
Maestro inicia la comunicacin

M
A
E
S
T
R
O

Maestro sita direccin en el bus


Orden de escritura
Esclavo direccionado responde con
seal de conformidad (ACK)
El maestro enva datos
El esclavo devuelve conformidad de
todos los datos (ACK)

E
S
C
L
A
V
O

El maestro termina la comunicacin

Protocolo de comunicacin I2C

10

Intercambio de informacin: nivel de enlace


Intercambio de datos
Maestro enva un dato a un esclavo
S

Direccin

W A

Maestro

Dato

Esclavo

A P

Maestro

Esclavo Maestro

Maestro enva varios datos a un esclavo


S

Dir

Dato

Dato

Dato

A P

Protocolo de comunicacin I2C

Intercambio de informacin: nivel de enlace


Maestro lee datos de un esclavo
Maestro inicia la comunicacin

M
A
E
S
T
R
O

Maestro sita la direccin en el bus


Orden de lectura
Esclavo direccionado responde con
seal de conformidad (ACK)
El esclavo enva datos
El maestro responde con seal de conformidad a los
datos enviados por esclavo salvo al ltimo

E
S
C
L
A
V
O

El maestro termina la comunicacin

Protocolo de comunicacin I2C

11

Intercambio de informacin: nivel de enlace


Intercambio de datos
Maestro lee un dato de un esclavo
S

Direccin

R A

Maestro

Esclavo

Dato

N P

Esclavo

Maestro

Maestro lee varios datos de un esclavo


S

Dir

Dato

Dato

Dato

N P

Protocolo de comunicacin I2C

Intercambio de informacin: nivel de enlace


Intercambio de datos
Maestro escribe y lee cambiando de direccin
S

Direccin

Maestro

Dato

Esclavo

Maestro

A S

Esclavo

Direccin

R A

Maestro Esclavo

Dato
Esclavo

NP
Maestro

Protocolo de comunicacin I2C

12

Intercambio de informacin: nivel de enlace


Casos particulares de respuesta
Esclavo ocupado y no responde al ACK de direccin
Maestro genera condicin de STOP

El esclavo quiere interrumpir una recepcin peridica de datos


El esclavo no responde a un dato con ACK
El maestro genera la condicin de STOP

El maestro quiere interrumpir una recepcin de datos de un esclavo


El maestro no responde con ACK
El esclavo deja de transmitir
El maestro genera condicin de STOP

Protocolo de comunicacin I2C

Intercambio de informacin: nivel de enlace


Protocolo multimaestro
Con dos maestros en el bus existe posibilidad de conflicto
Arbitracin: procedimiento para asegurar que slo un maestro tiene el
control del bus en un instante
Si un maestro est utilizando el bus no puede ser interrumpido por otro.
Desde START hasta STOP

Si dos maestros intentan comenzar a utilizar el bus a la vez:


Conexin del bus en colector abierto prevalecen los ceros
A la vez que ponen datos en el bus, escuchan la lnea.
Si un maestro est intentando enviar un nivel alto y lee un nivel bajo
Existe otro maestro utilizando el bus
Deja de transmitir esperando que la lnea quede libre (condicin de STOP)

Protocolo de comunicacin I2C

13

Intercambio de informacin: nivel de enlace


Transmisin de bits: Temporizacin
SCL

SDA

Dato
vlido

tSU:DAT 0,25 s
tr < 1 s
tHIGH > 4 s
tf < 0,3 s

T 10 s

tHD:DAT 0 s
tLOW 4,7 s

F 100 Kbits/s
Protocolo de comunicacin I2C

Intercambio de informacin: nivel de enlace


Temporizacin en START y en STOP

SDA
(maestro)
SCL
(maestro)

tSU:STA 4,7s
tHD:STA 4s

SDA
(maestro)
SCL
(maestro)

tLOW 4,7s
tSU:STA 4s
tHD:STA 4,7s
Protocolo de comunicacin I2C

14

Protocolo de Comunicacin I2C


ndice de la Leccin
Introduccin a la comunicacin entre dispositivos mediante un
bus serie
Caractersticas del bus I2C
Conexin de dispositivos al bus: nivel fsico
Intercambio de informacin: nivel de enlace
Generacin del protocolo desde un microcontrolador
Ejemplos de dispositivos que utiliza el bus I2C
Conclusiones
Bibliografa

Protocolo de comunicacin I2C

Generacin del protocolo desde un C


Control del bus I2C desde un microcontrolador
Sin una unidad hardware especfica
El protocolo I2C se puede controlar utilizando puertos de entrada y salida
El maestro controla la velocidad del bus
No debe generar seales demasiado rpidas
Puede ralentizar el bus cuando quiera

Complicado utilizarlo como esclavo.


Debera cumplir la norma de tiempos
Slo procesadores muy rpidos o dedicados.

No se permite multimaestro

Con una unidad hardware especfica


El procesador no debe preocuparse de gestionar el protocolo
Se puede aprovechar toda la funcionalidad del bus

Protocolo de comunicacin I2C

15

Generacin del protocolo desde un C


Control del bus I2C utilizando puertos de E/S
Eventos a programar

Generacin de START
Generacin de STOP
Enviar direccin o dato y recibir ACK
Recibir dato y enviar ACK o NACK

Consideraciones temporales
Velocidad del procesador
Un 8051 a 12 MHz ejecuta un ciclo mquina cada microsegundo.
Las instrucciones de acceso a los puertos consumen un ciclo mquina.

Protocolo de comunicacin I2C

Generacin del protocolo desde un C


Control del bus I2C utilizando puertos de E/S
I2C_TXBIT
SDA
(maestro)

Pseudocdigo

SCL
(maestro)

SDA = BIT
SCL = 1
delay(4s )
SCL = 0
delay(4,7s )

tSU:DAT 0,25s
tHIGH 4s
tHD:DAT 0s
tLOW 4,7s

Protocolo de comunicacin I2C

16

Protocolo de Comunicacin I2C


ndice de la Leccin
Introduccin a la comunicacin entre dispositivos mediante un
bus serie
Caractersticas del bus I2C
Conexin de dispositivos al bus: nivel fsico
Intercambio de informacin: nivel de enlace
Generacin del protocolo desde un microcontrolador
Ejemplos de dispositivos que utiliza el bus I2C
Conclusiones
Bibliografa

Protocolo de comunicacin I2C

Ejemplos de dispositivos que utilizan I2C


Factores a tener en cuenta
Los dispositivos tendrn dos partes.
Bloque funcional del dispositivo
Interfaz I2C

Interfaz I2C
Direccionamiento
Acceso a la funcionalidad del dispositivo
En dispositivos sencillos lectura y escritura de datos.
En dispositivos complejos
Configuracin de modo de funcionamiento
Comando + dato

Ejemplos de dispositivo
puerto de E/S de 8 bits
Memoria serie
Sensor de temperatura - termostato
Protocolo de comunicacin I2C

17

Ejemplos de dispositivos que utilizan I2C


Puerto de 8 bits de entrada/salida PCF8574
Puerto de entrada y salida
Los pines de entrada/salida se comportan de forma similar a los puertos del
8051 (pseudoentradas).
Las salidas implementan un colector abierto con pull up interno
Si en un puerto se escribe un cero, la salida pasa a nivel bajo
Para configurarlo como entrada se debe escribir un nivel alto
Al leer se consulta el nivel del pin del puerto

Despus de la inicializacin
Configurado como entrada (todas las salidas a nivel alto)

Si se modifica una entrada se activa una salida de interrupcin que se


desactiva cuando se lee el dispositivo (a travs del I2C)

Protocolo de comunicacin I2C

Ejemplos de dispositivos que utilizan I2C


Puerto de 8 bits de entrada/salida PCF8574

Protocolo de comunicacin I2C

18

Ejemplos de dispositivos que utilizan I2C


Puerto de 8 bits de entrada/salida PCF8574
Direccionamiento
Parte de la direccin es fija. Depende del dispositivo
Los tres bits de menor peso se configuran con pines del dispositivo

Protocolo de comunicacin I2C

Ejemplos de dispositivos que utilizan I2C


Puerto de 8 bits de entrada/salida PCF8574
Escritura en el puerto

Inicio de escritura

Dato disponible

Protocolo de comunicacin I2C

19

Ejemplos de dispositivos que utilizan I2C


Puerto de 8 bits de entrada/salida PCF8574
Lectura del puerto
Si se modifica una entrada se activa una interrupcin
La lnea de interrupcin tiene salida en colector abierto.

Cambia la entrada

Protocolo de comunicacin I2C

Ejemplos de dispositivos que utilizan I2C


Memoria serie

Protocolo de comunicacin I2C

20

Ejemplos de dispositivos que utilizan I2C


Memoria serie - Comando
Memoria de 16K bits (2KBytes)
Organizada en 8 bloques de 256 bytes
Direccin de bloque (3 bits)
Direccin de byte (8 bits)
Lectura / escritura

Protocolo de comunicacin I2C

Ejemplos de dispositivos que utilizan I2C


Memoria serie - Escritura

Protocolo de comunicacin I2C

21

Ejemplos de dispositivos que utilizan I2C


Memoria serie - lectura

Con cada lectura se autoincrementa un puntero interno

Protocolo de comunicacin I2C

Ejemplos de dispositivos que utilizan I2C


Memoria serie - lectura

Protocolo de comunicacin I2C

22

Ejemplos de dispositivos que utilizan I2C


Termmetro / Termostato
DS1621

Margen de temperatura: -55 a +125C


Resolucin: 0.5C
T almacenada en 9 bits (2 bytes)
Rango de alimentacin: 2.7-5.5V
Tiempo de conversin: 1 seg.
Parmetros del termostato (TH y TL)
almacenados en memoria no voltil (eeprom)
No requiere circuitera externa.

Protocolo de comunicacin I2C

Ejemplos de dispositivos que utilizan I2C


Termmetro / Termostato

Protocolo de comunicacin I2C

23

Ejemplos de dispositivos que utilizan I2C


Termmetro / Termostato

Protocolo de comunicacin I2C

Ejemplos de dispositivos que utilizan I2C

Termmetro / Termostato
Registro de Configuracin

Comandos (1 byte):
Lectura de la temperatura [AAh]
Acceso a TH [A1h]

Acceso a TL [A2h]

DONE.Flag de fin de conversin.


Acceso al Reg. de Config. [Ach]
THF. Flag (T > TH).
TLF. Flag (T < TL).
Inicio de conversin [EEh]
NVB. Flag indicador de que la grabacin en
eeprom est en proceso.
Parar la conversin [22h]
POL. Polaridad de la salida Tout.
1SHOT. Seleccin del modo de conversin nica o continua. En el modo de conversin continua,
el termostato puede funcionar de forma autnoma, sin necesidad de uC, una vez
configurados TH y TL.

Protocolo de comunicacin I2C

24

Ejemplos de dispositivos que utilizan I2C


DS1621. Protocolo de acceso
Comando Inicio/Stop de conversin

Protocolo de comunicacin I2C

Ejemplos de dispositivos que utilizan I2C


DS1621. Protocolo de acceso
Escritura de un dato en un registro ( 1byte)
( Reg. De Config.)

Protocolo de comunicacin I2C

25

Ejemplos de dispositivos que utilizan I2C


DS1621. Protocolo de acceso
Escritura de un dato en un registro ( 2bytes)
( TH, TL)

Protocolo de comunicacin I2C

Ejemplos de dispositivos que utilizan I2C


DS1621. Protocolo de acceso
Lectura de un dato ( 1byte) de un registro
( Reg. De Config.)

Protocolo de comunicacin I2C

26

Ejemplos de dispositivos que utilizan I2C


DS1621. Protocolo de acceso
Lectura de un dato ( 2 bytes) de un registro
( T, TH, TL)

Protocolo de comunicacin I2C

Ejemplos de dispositivos que utilizan I2C


DS1621. Protocolo de acceso
Configuracin del dispositivo (modo de conversin continua).
Configurar valores de TH y TL (si opcin termostato).
Comando de Inicio de conversin (1 vez)
Llamada a rutina de lectura de la T:

Protocolo de comunicacin I2C

27

Protocolo de Comunicacin I2C


ndice de la Leccin
Introduccin a la comunicacin entre dispositivos mediante un
bus serie
Caractersticas del bus I2C
Conexin de dispositivos al bus: nivel fsico
Intercambio de informacin: nivel de enlace
Generacin del protocolo desde un microcontrolador
Ejemplos de dispositivos que utiliza el bus I2C
Conclusiones
Bibliografa

Protocolo de comunicacin I2C

Conclusiones
Conclusiones
Un bus serie permite reducir el tamao general del circuito
El protocolo del bus I2C contempla
Conexin de nivel fsico
Intercambio de datos

El protocolo se puede implementar


Utilizando puertos de entrada/salida maestro
Unidad especfica

Gran cantidad de dispositivos compatibles con I2C

Protocolo de comunicacin I2C

28

Protocolo de Comunicacin I2C


ndice de la Leccin
Introduccin a la comunicacin entre dispositivos mediante un
bus serie
Caractersticas del bus I2C
Conexin de dispositivos al bus: nivel fsico
Intercambio de informacin: nivel de enlace
Generacin del protocolo desde un microcontrolador
Ejemplos de dispositivos que utiliza el bus I2C
Conclusiones
Bibliografa

Protocolo de comunicacin I2C

Protocolo de Comunicacin I2C


Referencias

Bibliografa
El bus I2C. De la teora a la prctica
Dominique Paret Ed. Paraninfo. 1995. (ISBN: 84-283-2167-1)

The I2C-BUS Specification Versin 2.1 Enero 2000


Hojas de caractersticas de los componentes explicados

Protocolo de comunicacin I2C

29

Protocolo de Comunicacin I2C


Referencias

Enlaces de Internet
The I2C FAQ
http://www.ping.be/~ping0751/i2cfaq/i2cindex.htm

Single Master I2C driver routines


http://www.specs.de/users/danni/appl/hard/i2c/

I2C Bus Technical Overview and Frequently Asked Questions (FAQ)


by Axel Wolf, ESAcademy based on the I2C FAQ by Vince Himpe
Embedded Systems Academy:
http://www.esacademy.com/faq/i2c/index.htm

Protocolo de comunicacin I2C

30

Вам также может понравиться