Está en la página 1de 15

UNIVERSIDAD POLITÉCNICA SALESIANA SISTEMAS

FECHA: 17/06/2019 MICROPROCESADOS 2

COMUNICACIÓN I2C – 1 MAESTRO 2 ESCLAVOS


Contero Román Katherine Mishelle
e-mail: kcontero@est.ups.edu.ec
De la Torre Trujillo Israel Sebastián
e-mail: idel2@est.ups.edu.ec
Ortiz Guerra Karolain Mishell
e-mail: kortizg1@est.ups.edu.ec

RESUMEN: el siguiente informe presenta el control de dos “esclavos” y un “maestro” mediante la


comunicación I2c para una aplicación de

PALABRAS CLAVE: Microcontrolador, Master Clear, Ocsilador, Display, LCD, interrupciones, conversión

1. OBJETIVOS
1.1. OBJETIVO GENERAL
 Desarrollar un circuito y software en el que permita la comunicación I2C en el cual se apliquen el envío y
recepción de datos elaborados con los conocimientos adquiridos en clases mediante el uso el Pic 18f4550.

1.2. OBJETIVO ESPECÍFICO


 Establecer una comunicación mediante los registros de I2C establecidos para él envió de datos y
recepción de los mismos.
 Conocer cómo funciona la comunicación I2C por medio de una aplicación con otros dispositivos tanto
analógicos como digitales.
 Identificar las diferentes funciones para que la comunicación I2C se pueda dar para cuatro pic´s 18F4550.

2. MARCO TEÓRICO
1.1. MODO I2C

El modo I2C (Bus de circuito inter-integrado) es adecuado para ser utilizado cuando el microcontrolador
debe intercambiar los datos con un circuito integrado dentro de un mismo dispositivo.

Éstos son con frecuencia otros microcontroladores, o los circuitos integrados especializados y baratos que
pertenecen a la nueva generación de así llamados "periféricos inteligentes" (memorias, sensores de
temperatura, relojes de tiempo real etc.)

Similar a la comunicación serie en modo SPI, la transmisión de datos en modo I2C es síncrona y
bidireccional. Esta vez sólo dos pines se utilizan para transmisión de datos. Éstos son los pines de SDA
(Datos seriales) y SCL (Reloj serial).

El usuario debe configurar estos pines como entradas o salidas por los bits TRISC. Al observar las reglas
particulares (protocolos), este modo habilita conectar simultáneamente de una manera simple hasta 112
diferentes componentes al utilizar sólo dos valiosos pines de E/S.

Funcionamiento del sistema: El reloj, necesario para sincronizar el funcionamiento de ambos dispositivos,
siempre es generado por un dispositivo maestro (un microcontrolador) y su frecuencia directamente afecta a la
velocidad de transmisión de datos.

Aunque hay un protocolo que permite como máximo una frecuencia de reloj de 3,4 MHz (así llamado bus
I2C de alta velocidad), este libro cubre sólo el protocolo utilizado con más frecuencia, con una frecuencia de
reloj limitada a 100 KHz.

1
UNIVERSIDAD POLITÉCNICA SALESIANA SISTEMAS
FECHA: 17/06/2019 MICROPROCESADOS 2

La frecuencia mínima no está limitada. Cuando los componentes maestro y esclavo están sincronizados
por el reloj, el maestro siempre inicia cada intercambio de datos. Una vez que el módulo MSSP se ha
habilitado, espera que ocurra una condición de arranque (Start condition).

El dispositivo maestro primero envía el bit de arranque (está a cero) por el pin SDA, luego la dirección de 7
bits del dispositivo esclavo seleccionado, y, por último, el bit que requiere al dispositivo escribir (0) o leer (1) el
dato enviado. En otras palabras, los ocho bits se desplazan al registro SSPSR después de ocurrir una
condición de arranque.

Todos los dispositivos esclavos que comparten la misma línea de transmisión recibirán simultáneamente el
primer byte, pero sólo el que contiene la dirección coincidente recibirá el dato entero.

Revisar: [Anexo1]

Una vez que el primer byte se ha enviado (sólo se transmiten datos de 8 bits), el maestro se pone en
modo de recepción y espera el reconocimiento del dispositivo receptor acerca de la dirección coincidente. Si
el dispositivo esclavo envía un bit de reconocimiento (1) la transmisión de datos continuará hasta que el
dispositivo maestro (microcontrolador) envíe el bit de parada (Stop).

Revisar: [Anexo2]

Esto es una explicación simple de cómo se comunican dos componentes. Este microcontrolador es capaz
de controlar las situaciones más complicadas cuando están conectados 1024 diferentes componentes
(dirección de 10 bits), compartidos por varios dispositivos maestros diferentes. Por supuesto, estos
dispositivos se utilizan pocas veces en la práctica por lo que no es necesario hablar de ellos detalladamente.
La siguiente figura muestra el diagrama de bloques del módulo MDSSP en modo I2C.

Revisar: [Anexo3]

En una operación I2C con el módulo MSSP intervienen seis registros. Algunos de ellos se muestran en la
Figura anterior.

 SSPCON
 SSPCON2
 SSPSTAT
 SSPBUF
 SSPSR
 SSPADD [ CITATION Mik19 \l 3082 ]

1.2. I2C EN MODO MAESTRO

El caso más común es que un microcontrolador funciona como maestro y un periférico como esclavo.

Es la razón por la que esta libreria sólo trata este modo. Se da por entendido que la dirección consiste en
7 bits y el dispositivo contiene un solo microcontrolador (dispositivo con maestro único).

Para habilitar el módulo MSSP en este modo, siga las siguientes instrucciones:

Revisar: [Anexo4]

Ajuste la velocidad de transmisión (registro SSPADD), desactive el control de velocidad de rotación (al
poner a uno el bit SMP del registro SSPSTAT) y seleccione el modo maestro (registro SSPCON).

Después de finalizar todos los ajustes y habilitar el módulo (registro SSPCON: bit SSPEN), es necesario
esperar a que los circuitos de control internos indiquen con una señal que todo esté preparado para
transmisión de datos: o sea, que el bit SSPIF del registro PIR1 se haya puesto a uno.

Después de poner este bit a cero por software, el microcontrolador está listo para intercambiar los datos
con los periféricos.

2
UNIVERSIDAD POLITÉCNICA SALESIANA SISTEMAS
FECHA: 17/06/2019 MICROPROCESADOS 2

Fig1. I2C en modo Maestro ajustes de bits [ CITATION Ele18 \l 3082 ]


1.2.1. TRANSMISIÓN DE DATOS EN MODO MAESTRO I²C

La transmisión de datos en el pin SDA se inicia con un cero lógico (0) que aparece al poner a uno el bit
SPEN del registro SSPCON2. Sin embargo, aunque está habilitado, el microcontrolador tiene que esperar
cierto tiempo antes de iniciar la comunicación.

Se le denomina 'Condición de Inicio' durante la que se realizan las preparaciones y verificaciones internas.
Si se cumplen con todas las condiciones, el bit SSPIF del registro PIR1 se pone a uno y la transmisión de
datos se inicia en cuanto se cargue el registro SSPBUF.

Fig2. Secuencia de Transmisión de Datos en Modo Maestro [ CITATION Mik19 \l 3082 ]


Como máximo 112 circuitos integrados (dispositivos esclavos) pueden compartir simultáneamente la
misma línea de transmisión.

El primer byte de datos enviado por el dispositivo maestro contiene la dirección que coincide con una sola
dirección del dispositivo esclavo.

Todas las direcciones se enumeran en las hojas de datos respectivas. El octavo bit del primer byte de
datos especifica la dirección de transmisión de datos, o sea si el microcontrolador va a enviar o recibir los
datos. En este caso, como se trata de transmisión de datos, el octavo bit se pone a cero (0).

Revisar: [Anexo5]

Cuando ocurre la coincidencia de direcciones, el microcontrolador tiene que esperar a que el dispositivo
esclavo envíe el bit de reconocimiento, o sea que se ponga a cero el bit ASKSTAT del registro SSPCON2.
Una vez que la coincidencia de direcciones ha ocurrido apropiadamente, todos los bytes de datos se
transmiten de la misma manera.

La transmisión de datos termina al poner a uno el bit SEN del registro SSPCON2. Ocurre la condición de
parada (STOP), lo que habilita que el pin SDA reciba una secuencia de pulsos: Inicio - Dirección -
Reconocimiento - Dato - Reconocimiento .... ¡Dato - Reconocimiento - Parada!

1.2.2. RECEPCIÓN DE DATOS EN MODO MAESTRO I²C

Las preparaciones para recibir los datos son similares a las de transmitir los datos, con excepción de que
el último bit del primer byte enviado (el que contiene la dirección) se ponga a uno lógico (1).

Eso especifica que el dispositivo maestro espera recibir los datos del dispositivo esclavo direccionado.

3
UNIVERSIDAD POLITÉCNICA SALESIANA SISTEMAS
FECHA: 17/06/2019 MICROPROCESADOS 2

Con respecto al microcontrolador, ocurre lo siguiente: Después de hacer las pruebas internas y poner a
uno el bit de arranque (START), el dispositivo esclavo envía byte por byte. Estos bytes se almacenan en el
registro serial SSPSR.

Después de recibir el último - octavo bit, cada dato se carga en el registro SSPBUF del que se puede leer.

Al leer este registro, se envía automáticamente el bit de reconocimiento, lo que significa que el dispositivo
maestro está listo para recibir los nuevos datos. Al igual que en el caso de la transmisión, la recepción de
datos termina al poner a uno el bit de parada (STOP):

Revisar: [Anexo6]

Inicio - Dirección - Reconocimiento - Dato - Reconocimiento .... Dato - Reconocimiento - ¡Parada!

En esta secuencia de pulsos, el bit de reconocimiento se envía al dispositivo esclavo.

1.2.3. I2C ES UN PROTOCOLO SÍNCRONO.

Al igual el protocolo SPI, el protocolo I2C trabaja de forma síncrona. Esto quiere decir que el envío de bits
por la vía de comunicación SDA está sincronizado por una señal de reloj que comparten tanto el maestro
como el esclavo a través de la vía SCL.

Tabla1. Ficha técnica del protocolo I2C.

NÚMERO DE VÍAS O CABLES 2


Modo Estándar (Sm) = 100 kbps
Modo Rápido (Fm) = 400 kbps
VELOCIDAD MÁXIMA
Modo High Speed (Fm+) = 3.4 Mbps
Modo Ultra Fast (Hs-Mode) = 5 Mbps
SÍNCRONO O ASÍNCRONO Síncrono
PARALELO O SERIAL Serial
NÚMERO MÁXIMO DE MAESTROS Ilimitado
NÚMERO MÁXIMO DE ESCLAVOS 1008

Con el protocolo I2C la información viaja en mensajes.

Los mensajes van divididos en tramas de datos. Cada mensaje lleva una trama con una dirección la cuál
transporta la dirección binaria del esclavo al que va dirigido el mensaje, y una o más tramas que llevan la
información del mensaje. También el mensaje contiene condiciones de inicio y paro, lectura y escritura de bits,
y los bits ACK y NACK. Todo esto va entre cada sección de datos.

Para que pueda quedar más claro aquí se ilustra un mensaje enviado a través del protocolo I2C.
[ CITATION MrE19 \l 3082 ]

3. MATERIALES Y EQUPOS
 Fuente de alimentación 5VDC
 Protoboard
 3 microcontrolador PIC18F4550
 4 cristales de 4MHz
 resistencias
 1 módulo de resistencias de 100 Ω
 1 potenciómetro 1 kΩ
 1 multímetro
 1 módulo GLCD 128x64
 1 tarjeta programadora para microcontroladores
 Cables de conexión

4
UNIVERSIDAD POLITÉCNICA SALESIANA SISTEMAS
FECHA: 17/06/2019 MICROPROCESADOS 2

 Elementos electrónicos varios

4. DESARROLLO Y PROCEDIMIENTO
4.1. PASOS DEL PROTOCOLO I2C EN LA EJECUCIÓN.
La comunicación I2C se realizó de la siguiente manera:

 La señal del pin SDA del maestro pasó de un alto a un bajo mientras la señal de  pin SCL estuvo en un
alto, esto es el inicio de la comunicación I2C, al iniciar la comunicación se generó una señal de reloj por el
pin SCL del maestro y se empezó a enviar los datos por el pin SDA en grupos de 8 bits o un byte, que es
lo mismo.
 El maestro envió primero la dirección de identificación del esclavo con el que se quiera comunicar junto
con el bit de escritura lectura, si el maestro quiere enviar o escribir un dato este bit será 0, si el maestro
quiere leer o recibir un dato este bit será 1, la dirección del esclavo normalmente fue de 7 bits aunque
también hay direcciones de 10bits.
 Cada vez que el esclavo recibió un byte el esclavo respondió enviando un bit en bajo o 0 al maestro para
indicar que se ha establecido la comunicación, este es un bit de confirmación de que hay comunicación y
se le llama ACK, si la comunicación no se establece el valor del bit ACK fue un 1.
 Luego el maestro envió el dato si lo que se quiere es enviar o escribir un dato en el registro del esclavo, el
esclavo respondió enviando al maestro el bit de confirmación ACK; pero si lo que se quiere es que el
maestro recibirá o lea algún dato desde algún registro del esclavo, ocurrirá que si la recepción es correcta
es maestro enviará al esclavo el bit de confirmación ACK.
 Luego el maestro envió el dato si lo que se quiere es enviar o escribir un dato en el registro del esclavo, el
esclavo respondió enviando al maestro el bit de confirmación ACK; o de lo contrario se recibiriá algún dato
si se quiere leer o recibir un dato del registro del esclavo, si la recepción es correcta es maestro enviará al
esclavo el bit de confirmación ACK.
 Por último y para finalizar la comunicación la señal del pin SDA pasó de un bajo a un alto mientras la señal
de reloj en el pin SCL estuvo en un alto, en ese momento se dejó de generar la señal de reloj y la
comunicación terminó.
 Las conexiones se hicieron de tal manera que los nombres de los pines coincidan, al ser utilizado el PIC
como maestro, con otros otros dos pics capaces de comunicarse con el protocolo I2C.

4.2. DESARROLLO DEL EJERCICIO


I. Se diseñó el diagrama de flujo para tener facilidad de la programación y entendimiento del enunciado
planteado acerca del sistema de control vehicular para un parqueadero.

Revisar: [Anexo4], [Anexo5], [Anexo6]

II. Se implementó del circuito en el software Proteus y verificar que su conexión cumpla con las condiciones
iniciales.

Revisar: [Anexo7], [Anexo8], [Anexo9]

III. Se desarrolló la programación mediante MikroC y cargarla al microcontrolador del simulador Proteus y
hacer sus respectivas configuraciones para cumplir con el paso.

IV. Para realizar el parte del armado en software se tomó en consideración los materiales.

V. Se identificó la configuración de los canales para la conexión del GLCD Touch para su respectiva
activación.

VI. Se comprobó el funcionamiento y se procedió armar el circuito en Hardware correspondiente a protoborad


y se guardó la programación al respectivo microcontrolador mediante el PICkit 2 v2.61.

VII. Se polarizó con una fuente DC pura y regulable para su funcionamiento exacto ya que por tratarse de
canales analógicos necesita de una fuente exacta.

5. ANÁLISIS Y RESULTADOS

5
UNIVERSIDAD POLITÉCNICA SALESIANA SISTEMAS
FECHA: 17/06/2019 MICROPROCESADOS 2

6. CONCLUSIONES
 Pines SDA y SCL - Cuando el módulo SSP está habilitado, estos pines se vuelven a las salidas de Drenaje
Abierto. Esto significa que deben estar conectados a resistencias conectados a la otra punta al polo
positivo de la fuente de alimentación. Sin estas resistencias no hay valores lógicos porque no cierra el
circuito.

 Cuando el microcontrolador se comunica con un periférico, puede ocurrir un fallo en la transmisión de


datos por alguna razón. En este caso, es recomendable comprobar el estado de algunos bits que pueden
aclarar el problema. En la práctica, el estado de estos bits se comprueba al ejecutar una pequeña
subrutina después de transmisión y recepción de cada byte (por si acaso). WCOL (SPCON,7) - Si intenta
escribir un dato nuevo al registro SSPBUF mientras que otra transmisión/recepción de datos está en
progreso, el bit WCOL se pone a uno y el contenido del registro SSBUF se queda sin cambios. No hay
escritura. Luego, el bit WCOL debe ser borrado por el software. BF (SSPSTAT,0) - Al transmitir los datos,
este bit se pone a uno durante la escritura en el registro SSPBUF y se queda puesto a uno hasta que el
byte en formato serial se desplace del registro SSPRS. En modo de recepción, este bit se pone a uno al
cargar un dato o una dirección al registro SSPBUF. Se pone a cero después de leer el registro SSPBUF.

7. RECOMENDACIONES
 Para la práctica se debe verificar el suministro de energía al sistema, las malas conexiones en el
Protoboard, en los conectores de batería o en los terminales de entrada de tensión, la inversión de
polaridad al conectar la fuente de alimentación, todo esto puede llevarnos a perder mucho tiempo hasta
descubrir el problema.
 Para evitar cualquier tipo de errores en el montaje del circuito, se recomienda usar diferentes colores de
cables en las interconexiones.

8. REFERENCIAS

[1] MikroElektronika, «MikroElektronika,» MikroElektronika d.o.o., 2019. [En línea]. Available:


https://www.mikroe.com/ebooks/microcontroladores-pic-programacion-en-c-con-ejemplos/modulos-de-
comunicacion-serie. [Último acceso: 06 01 2019].

[2] ElectronicWins, «ElectronicWins,» ElectronicWins, 2019. [En línea]. Available:


https://www.electronicwings.com/pic/pic18f4550-i2c. [Último acceso: 17 06 2019].

[3] MrElberni, «MICROCONTROLADORES,» 2019. [En línea]. Available: http://microcontroladores-


mrelberni.com/i2c-pic-comunicacion-serial/. [Último acceso: 15 06 2019].

6
UNIVERSIDAD POLITÉCNICA SALESIANA SISTEMAS
FECHA: 17/06/2019 MICROPROCESADOS 2

7
UNIVERSIDAD POLITÉCNICA SALESIANA SISTEMAS
FECHA: 17/06/2019 MICROPROCESADOS 2

9. ANEXOS
9.1. IMÁGENES MARCO TEÓRICO

Anexo1. Direccionamiento y control de Maestro – Esclavos con Protocolo I2C. [ CITATION Mik19 \l 3082 ]

8
UNIVERSIDAD POLITÉCNICA SALESIANA SISTEMAS
FECHA: 17/06/2019 MICROPROCESADOS 2

Anexo2. Protocolo I2C – Transferencia de Datos [ CITATION Mik19 \l 3082 ]

9
UNIVERSIDAD POLITÉCNICA SALESIANA SISTEMAS
FECHA: 17/06/2019 MICROPROCESADOS 2

Anexo3. Diagrama de funcionamiento Protocolo I2C [ CITATION Mik19 \l 3082 ]

Anexo4. Protocolo I2C registros a Utilizar para comunicación [ CITATION Mik19 \l 3082 ]

10
UNIVERSIDAD POLITÉCNICA SALESIANA SISTEMAS
FECHA: 17/06/2019 MICROPROCESADOS 2

Anexo5. Direccionamiento de datos comunicación I2C [ CITATION Mik19 \l 3082 ]

11
UNIVERSIDAD POLITÉCNICA SALESIANA SISTEMAS
FECHA: 17/06/2019 MICROPROCESADOS 2

Anexo6. Recepción de datos en Modo Maestro I²C [ CITATION Mik19 \l 3082 ]

9.2. SIMULACIÓN

12
UNIVERSIDAD POLITÉCNICA SALESIANA SISTEMAS
FECHA: 17/06/2019 MICROPROCESADOS 2

Anexo. Circuito de Comunicación I2C 1 MAESTRO - 2 ESCLAVOS Primera Parte [De la Torre Israel]

13
UNIVERSIDAD POLITÉCNICA SALESIANA SISTEMAS
FECHA: 17/06/2019 MICROPROCESADOS 2

Anexo. Circuito de Comunicación I2C 1 MAESTRO - 2 ESCLAVOS Segunda Parte [De la Torre Israel]

9.3. CIRCUITO IMPLEMENTADO

14
UNIVERSIDAD POLITÉCNICA SALESIANA SISTEMAS
FECHA: 17/06/2019 MICROPROCESADOS 2

Anexo. Circuito Implementado [Ortiz Karolain]

15

También podría gustarte