clase 13: protocolo de comunicación i 2 c. 2009/1 circuitos digitales iii 2010/1 circuitos...

46
Sistemas Digitales Clase 13: Protocolo de Comunicación I 2 C

Upload: oscar-sandoval-fuentes

Post on 24-Jan-2016

233 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 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

Sistemas Digitales IIClase 13: Protocolo de Comunicación I2C

Page 2: 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

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

Antes de ComenzarAntes de Comenzar

Protocolo entre periféricos: conjunto de reglas o normas para el intercambio de información.

Protocolos Serial UART, SPI (Interfaz de periféricos serie), USB,

I2C, I2S, …

Objetivo de la Clase: Conocer un protocolo común y hacer el diseño del software encargado de gestionarlo.

Al finalizar el tema: Usted estará en capacidad de emplear el protocolo mediante el software, para comunicarse con periféricos que lo soporten.

Page 3: 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

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

Agenda para la claseAgenda para la clase

11Introducción al Protocolo I2C Conocer las características del protocolo

22Hardware y Términos Consideraciones sobre el protocolo

33Funcionamiento del Protocolo Entender como opera el protocolo para desarrollar el SW

44Manipulación del I2C Escritura y lectura datos mediante este módulo

Page 4: 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

2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIISistemas 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 5: 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

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

A continuación…A continuación…

Funcionamiento del Protocolo

Hardware y Términos Protocolo I2C

Introducción al Protocolo I2CIntroducción al Protocolo I2C

Manipulación del I2C

Page 6: 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

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

Inter-Integrated Circuit I2CInter-Integrated Circuit I2C

Protocolo diseñado para comunicar diferentes circuitos que trabajan a velocidades relativamente bajas.

Desarrollado por Phillips originalmente para la comunicación entre diferentes dispositivos dentro de los TV.

Es un bus de solo dos líneas, donde los dispositivos se comunican de manera serial y sincronizada (Bus Síncrono).

Page 7: 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

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

Inter-Integrated Circuit I2CInter-Integrated Circuit I2C

Líneas de Comunicación. SCL: Línea de reloj para sincronización. SDA: Línea por donde van los datos. Línea de referencia.

P1MCU, MPU,

DSP …

P2MCU, MPU, LCD, MEM,

RTC …

SCL o señal de Reloj

SDA o señal de Datos

Page 8: 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

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

Inter-Integrated Circuit I2CInter-Integrated Circuit I2C

Dispositivos El bus permite tener varios dispositivos conectados. Configuración Maestro/Esclavo. Maestro

• Genera señal de sincronismo.• Transferencia de datos: hacia/desde esclavo.

Esclavo• Comandado por el Maestro.• Envía o recibe datos cuando el Maestro lo solicita.

P1MAESTRO

P1MAESTRO

P2ESCLAVO

P2ESCLAVO

SCL o señal de Reloj

SDA o señal de Datos

Señal generada por el Maestro…

Señal generada por el Maestro…

Dirección de los datos dada por

el Maestro

Dirección de los datos dada por

el Maestro

Page 9: 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

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

P2MAESTROESCLAVO

P2MAESTROESCLAVO

P1MAESTROESCLAVO

P1MAESTROESCLAVO

P3SOLO

ESCLAVO

P3SOLO

ESCLAVO

P4SOLO

ESCLAVO

P4SOLO

ESCLAVO

Varios periféricos conectados al BUS. Algunos pueden ser Maestro/Esclavo, otros solo son esclavos.

SCL

SDA

Bus inactivo, ambas líneas a 5VBus inactivo, ambas líneas a 5V

Inter-Integrated Circuit I2CInter-Integrated Circuit I2C

Page 10: 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

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

P2MAESTROESCLAVO

P2MAESTROESCLAVO

P1MAESTROESCLAVO

P1MAESTROESCLAVO

P3SOLO

ESCLAVO

P3SOLO

ESCLAVO

P4SOLO

ESCLAVO

P4SOLO

ESCLAVO

El periférico P2 (Maestro) se apodera del Bus, desde ahora él es quien genera la señal de reloj. Los demás son Esclavos.

SCL

SDA

P2MAESTROESCLAVO

P2MAESTROESCLAVO

P1ESCLAVO

P1ESCLAVO

P3ESCLAVO

P3ESCLAVO

P4ESCLAVO

P4ESCLAVO

Inter-Integrated Circuit I2CInter-Integrated Circuit I2C

Page 11: 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

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

P2MAESTROESCLAVO

P2MAESTROESCLAVO

P1MAESTROESCLAVO

P1MAESTROESCLAVO

P3SOLO

ESCLAVO

P3SOLO

ESCLAVO

P4SOLO

ESCLAVO

P4SOLO

ESCLAVO

Caso 1: El periférico P2 (Maestro) establece comunicación con P4 (Esclavo) enviando n tramas.

SCL

SDA

P2MAESTROESCLAVO

P2MAESTROESCLAVO

P1ESCLAVO

P1ESCLAVO

P3ESCLAVO

P3ESCLAVO

P4ESCLAVO

P4ESCLAVO

P4ESCLAVO

P4ESCLAVO

Inter-Integrated Circuit I2CInter-Integrated Circuit I2C

Page 12: 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

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

P2MAESTROESCLAVO

P2MAESTROESCLAVO

P1MAESTROESCLAVO

P1MAESTROESCLAVO

P3SOLO

ESCLAVO

P3SOLO

ESCLAVO

P4SOLO

ESCLAVO

P4SOLO

ESCLAVO

Caso 2: El periférico P2 (Maestro) establece comunicación con P4 (Esclavo) recibiendo n tramas.

SCL

SDA

P2MAESTROESCLAVO

P2MAESTROESCLAVO

P1ESCLAVO

P1ESCLAVO

P3ESCLAVO

P3ESCLAVO

P4ESCLAVO

P4ESCLAVO

P4ESCLAVO

P4ESCLAVO

Inter-Integrated Circuit I2CInter-Integrated Circuit I2C

Page 13: 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

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

P2MAESTROESCLAVO

P2MAESTROESCLAVO

P1MAESTROESCLAVO

P1MAESTROESCLAVO

P3SOLO

ESCLAVO

P3SOLO

ESCLAVO

P4SOLO

ESCLAVO

P4SOLO

ESCLAVO

P2 Libera el Bus. P1 vuelve a ser un Maestro potencial. P3 y P4 esperan a que P1 o P2 los seleccionen.

SCL

SDA

P2MAESTROESCLAVO

P2MAESTROESCLAVO

P1ESCLAVO

P1ESCLAVO

P3ESCLAVO

P3ESCLAVO

P4ESCLAVO

P4ESCLAVO

Inter-Integrated Circuit I2CInter-Integrated Circuit I2C

Page 14: 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

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

Inter-Integrated Circuit I2CInter-Integrated Circuit I2C

Detección de Errores. El protocolo ofrece una forma sencilla de determinar

errores. Bit de Acknowledgment o Reconocimiento. Otras especificaciones del protocolo.

Velocidad de Transmisión: Modo Estándar: 100khz ó 100kbps. Modo Rápido: 400khz ó 400kbps. Modo de Alta Velocidad: 3.4MHz ó 3.4Mbps. Consideraciones!!!

Todos los dispositivos deben cumplir esta

velocidad.

Todos los dispositivos deben cumplir esta

velocidad.

Page 15: 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

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

¿Zona de Preguntas?¿Zona de Preguntas?

¿Un maestro puede llegar a convertirse en un esclavo?

¿Un dispositivo que actúa en determinado momento como esclavo jamás puede convertirse en maestro?

¿Todos los periféricos I2C pueden trabajar en el modo rápido?

¿Cómo se llaman las líneas del I2C? ¿Que ventajas y desventajas puede tener el hecho de

que solo se utilicen dos líneas?

Page 16: 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

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

A continuación…A continuación…

Funcionamiento del Protocolo

Hardware y Términos Protocolo I2C

Introducción al Protocolo I2C

Hardware y Términos Protocolo I2C

Manipulación del I2C

Page 17: 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

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

Hardware y TérminosHardware y Términos

Las líneas SDA y SCL son del tipo drenador abierto (Open-Drain).

Equivalente a Colector Abierto (Open-Colector).

Es necesario conectar sus Drenadores al voltaje positivo de la fuente.

Se requiere de resistencias de Pull-Up (10k) para garantizar nivel alto.

Para poner 5V, el transistor no conduce???

Para poner 5V, el transistor no conduce???

Para poner 0V, el transistor conduce...

Para poner 0V, el transistor conduce...

Los 5V son dados por la fuente Vcc, siempre que todos los Trans.

estén en corte…

Los 5V son dados por la fuente Vcc, siempre que todos los Trans.

estén en corte…

Page 18: 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

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

Periférico 1

SCL_RX

SDA_RX

SCL_TX

SDA_TX

SCL

SDA

VDD

Hardware y TérminosHardware y Términos

Nadie hace uso del bus: Los suiches permanece

abiertos. Si nadie usa el bus, cada

línea tendrá voltaje VDD. P1 toma el Bus y pone SDA

en 0V. Observe el Suiche. Lo mismo para SCL. Ahora, P1 pondrá 5V en SCL.

Observe el suiche. Si otro periférico pone 0V en

SCL, no hay corto.Si los pines no son

Open Drain, es bueno colocar una pequeña resistencia en serie…

Si los pines no son Open Drain, es bueno colocar una pequeña resistencia en serie…

Page 19: 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

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

Hardware y TérminosHardware y Términos

Conexión de Periféricos

DEVICE 1DEVICE 1 DEVICE 2DEVICE 2 DEVICE nDEVICE n…

VDD

SCLSDA

10k-47k

Page 20: 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

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

Hardware y TérminosHardware y Términos

Maestro (Master) Establece la señal de reloj SCL. Establece la dirección de los datos. Controla a los esclavos.

Esclavo (Slave) Incapaz de generar la señal de SCL. Recibe instrucciones y reloj del maestro.

Bus Desocupado (Bus Free) Las líneas SDA y SCL están inactivas (nivel alto).

Page 21: 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

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

Hardware y TérminosHardware y Términos

Dato Válido (Valid Data) El dato puesto en SDA debe ser estable mientras

SCL está en nivel lógico alto.

Comienzo (Start) Ocupación del bus por parte del maestro, haciendo

uso de SDA y SCL.

Parada (Stop) Liberación del bus por parte del maestro que lo está

utilizando.

Page 22: 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

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

Hardware y TérminosHardware y Términos

Formato de Datos (Data Format) Relacionado con la forma de enviar datos de

maestro a esclavo y viceversa.

Dirección (Address) Relacionado con la forma en que el maestro puede

dirigirse a un esclavo.

Lectura/Escritura (Bit de R/W) Es un bit dentro de la dirección usado para indicarle

al esclavo que el maestro va a escribir/leer datos en/de él.

Page 23: 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

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

¿Zona de Preguntas?¿Zona de Preguntas?

Explique que ocurre si un dispositivo I2C trata de establecer un ‘1’ en la línea SCL mientras otro está estableciendo un ‘0’ en la misma

El bus I2C está desocupado siempre que … ¿Qué ocurre si la línea SDA cambia de estado

mientras SCL está a ‘1’ lógico?

Page 24: 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

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

A continuación…A continuación…

Funcionamiento del Protocolo

Hardware y Términos Protocolo I2C

Introducción al Protocolo I2C

Funcionamiento del Protocolo

Manipulación del I2C

Page 25: 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

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

Funcionamiento del I2CFuncionamiento del I2C

Se utilizan las dos líneas SDA y SCL. Por SDA van los datos. Por SCL va el reloj de sincronización. La transmisión se hace en tramas de 8 Bits con

1 Bit adicional para el reconocimiento o Acknowledgment.

El protocolo define la forma en que el maestro inicia y finaliza la transmisión.

Page 26: 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

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

Funcionamiento del I2CFuncionamiento del I2C

Formato de Transmisión Trama de 8 bits para datos con un noveno bit de

ACK. • El ACK lo hace el Esclavo si el Maestro escribe los 8 bits.• El ACK lo hace el Maestro si el Esclavo escribe los 8 bits.

Dicha trama va sobre la línea SDA y podrá tenerse una transición siempre que SCL esté en ‘0’ lógico.

D7 D6 D5 D4 D3 D2 D1 D0 ACKSDA

SCL

MSB LSB

Page 27: 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

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

Funcionamiento del I2CFuncionamiento del I2C

Condiciones de START y STOP Propiamente son violaciones a la condición de Dato

Válido.• El START se hace en el momento en que el Maestro

selecciona un Esclavo.• El STOP se lleva a cabo cuando el Maestro va a liberar el

Bus.

SCL

SDA

Condición de START

SCL

SDA

Condición de STOP

Page 28: 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

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

Funcionamiento del I2CFuncionamiento del I2C

Seleccionando un periférico: Cada periférico tiene una dirección de 7 ó 10 bits. Estando el bus libre, el maestro genera un START. A continuación envía la dirección junto con el bit

R/W. • R/W = 0, Maestro va a escribir datos en Esclavo.• R/W = 1, Maestro va a leer datos desde el Esclavo.

A6 A5 A4 A3 A2 A1 A0 R/W ACKSDA

SCL

MSB LSB

Page 29: 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

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

Funcionamiento del I2CFuncionamiento del I2C

Seleccionando un periférico: Si el periférico está en el bus debe responder con un

ACK en ‘0’.

Causas de no respuesta: El periférico no está en el Bus. El periférico está ocupado (EEPROM escribiendo). El periférico tiene problemas.

Si no hay respuesta, el Maestro finaliza con condición de STOP.

Page 30: 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

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

Funcionamiento del I2CFuncionamiento del I2C

Si el Esclavo respondió con ACK = ‘0’ y el Maestro va a escribir en el Esclavo (R/W = ‘0’) Se escriben n tramas de 8 bits, esperando en cada

una, reconocimiento del esclavo ACK = ‘0’. Cuando se quiera finalizar, el Maestro envía

condición de STOP. El Maestro puede generar una nueva condición de

START sin condición de STOP: • Escoger otro periférico.• Cambiar R/W sobre el periférico.

Page 31: 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

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

Funcionamiento del I2CFuncionamiento del I2C

Selección y Escritura (Un solo dato)

SDA

SCL

A6 A5 A4 A3 A2 A1 A0 0 ACK

Generado porEsclavo

MSB LSB

Generado por Maestro

SDA

SCL

D7 D6 D5 D4 D3 D2 D1 D0 ACK

START

STOP

Generado porEsclavo

MSB LSB

Generado por Maestro

Si el esclavo envía ACK = ‘0’, entonces pueden enviarse n tramas de 8 bits…

Si el esclavo envía ACK = ‘0’, entonces pueden enviarse n tramas de 8 bits…

Page 32: 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

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

Funcionamiento del I2CFuncionamiento del I2C

Si el Esclavo respondió con ACK = ‘0’ y el Maestro va a leer desde el Esclavo (R/W = ‘1’) Se leen n tramas de 8 bits, generando en cada una

el bit de reconocimiento ACK = ‘0’. Cuando se quiera finalizar, el Maestro envía

condición de STOP con el ACK previo en ‘1’. El Maestro puede generar una nueva condición de

START sin condición de STOP: • Escoger otro periférico.• Cambiar R/W sobre el periférico.

Page 33: 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

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

Funcionamiento del I2CFuncionamiento del I2C

Selección y Lectura (Un solo dato)

SDA

SCL

A6 A5 A4 A3 A2 A1 A0 1 ACK

Generado porEsclavo

MSB LSB

Generado por Maestro

SDA

SCL

D7 D6 D5 D4 D3 D2 D1 D0 ACK

START

STOP

Generado porMaestro

MSB LSB

Generado por Esclavo

Si el esclavo envía ACK = ‘0’, entonces

pueden leerse n tramas de 8 bits…

Si el esclavo envía ACK = ‘0’, entonces

pueden leerse n tramas de 8 bits…

Page 34: 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

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

Funcionamiento del I2CFuncionamiento del I2C

¿Cómo se realiza la escritura de múltiples datos?

¿Cómo se realiza la lectura de múltiples datos? ¿Cómo se pasa de escritura a lectura sin

condición de STOP? ¿Cómo se selecciona otro periférico desde el

mismo Maestro sin utilizar STOP?

Page 35: 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

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

¿Zona de Preguntas?¿Zona de Preguntas?

¿Cómo se genera la condición de START y de STOP?

Una comunicación entre periféricos: P1, P2 y P3. P2 envía condición de START junto con la trama de datos $A1. P1 tiene la dirección $50 y P3 la dirección $73. ¿Con quién se comunica P2? ¿La transmisión es para escritura o para lectura de

datos?

Page 36: 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

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

A continuación…A continuación…

Funcionamiento del Protocolo

Hardware y Términos Protocolo I2C

Introducción al Protocolo I2C

Manipulación del I2CManipulación del I2C

Page 37: 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

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

Módulo I2C de un PICMódulo I2C de un PIC

El nombre genérico de los pines de E/S es: SDA (Línea de Datos). SCL (Línea de Reloj).

Las líneas de E/S están compartidas con pines de los puertos: RC3/SCL (PIC16F887) RC4/SDA (PIC16F887)

Al habilitar la Tx/Rx, los pines TxD/RxD se convierten en pines del módulo I2C.

Page 38: 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

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

Manipulación del I2CManipulación del I2C

Configuración genérica del I2C:

#USE I2C (opciones)

Esta directiva permite configurar varios parámetros del I2C: Modo Pines utilizados Dirección Velocidad

Page 39: 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

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

Manipulación del I2CManipulación del I2C

Ejemplos: #use I2C (master, scl=PIN_C3, sda=PIN_C4) #use I2C (slave, scl=PIN_C3, sda=PIN_C4, address=0xA0) #use I2C (master, scl=PIN_C3, sda=PIN_C4, fast=450000)

OPCIÓN DESCRIPCIÓN

MULTI_MASTER Establece modo Multimaestro

MASTER Establece modo maestro

SLAVE Establece modo esclavo

RESTART_WDT Borra el WDT mientras espera lectura

SCL = pin Especifica el pin SCL

SDA = pin Especifica el pin SDA

ADDRESS = n Especifica la dirección en modo esclavo

FAST Utiliza velocidad alta

SLOW Utiliza velocidad baja

Page 40: 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

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

EstablecimientoEstablecimiento

Las funciones asociadas al comienzo y finalización de la comunicación I2C:

I2C_START();• En modo master, esta función inicializa la transmisión. El reloj

es puesto a nivel bajo hasta que se escribe.

I2C_STOP();• Finaliza la transmisión

Page 41: 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

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

EscrituraEscritura

Escritura de datos Master↔Slave

I2C_WRITE (dato); dato es un entero de 8 bits que envía por el bus.

Modo maestro: genera la señal de reloj que marca la velocidad de transmisión del dato.

Modo esclavo: espera la señal de reloj del maestro. ACK: Devuelve el bit de reconocimiento (0 indica

ACK, 1 indica un NO ACK y 2 indica una colisión en modo multimaster)

LSB: El bit de menor peso del primer dato transmitido tras un START indica el sentido de la comunicación.

Page 42: 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

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

LecturaLectura

Lectura de datos Master ↔ Slave

dato=I2C_READ(ACK);

dato es un entero de 8 bits leído del bus. Modo maestro: genera la señal de reloj que marca la

velocidad de transmisión del dato. Modo esclavo: espera la señal de reloj del maestro. ACK: Elemento opcional de reconocimiento (1 indica

ACK 1 y 0 indica NO ACK)

Page 43: 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

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

DirecciónDirección

Dirección del dispositivo modo Slave

I2C_SlaveAddr();

Función que especifica la dirección del dispositivo cuando se ha configurado como esclavo.

Page 44: 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

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

EjemplosEjemplos

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

memoria de un EEPROM Siguiente clase: se darán más detalles.

Page 45: 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

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

Fin de la Clase!!!Fin de la Clase!!!

Lecturas propuestas próxima clase Lectura sobre memorias EEPROM.

Motivación para la próxima clase. Conocer como trabaja un protocolo de datos y

emplearlo para establecer comunicación entre CPU y periféricos.

¿Preguntas por parte de ustedes?

Page 46: 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

Sistemas Digitales IIFin de la clase 13