Está en la página 1de 16

UNIVERSIDAD TÉCNICA DE AMBATO

FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL

CARRERA DE INGENIERÍA EN ELECTRÓNICA Y COMUNICACIONES

MICROCONTROLADORES

SÉPTIMO ELECTRÓNICA “A”

Consulta N° 5
COMUNICACION I2C Y SPI

Integrantes
Alex Acosta
Pamela Morales

Fecha de Envío
04-052-2019

Fecha de Entrega
13-05-2019

Docente: Ing. Edgar Patricio Córdova Córdova

MARZO 2019 / AGOSTO 2019

AMBATO - ECUADOR
I. TEMA
COMUNICACION I2C Y SPI
II. OBJETIVOS

a. Objetivo General

Investigar las características que intervienen en el protocolo de comunicación I2C Y SPI


b. Objetivos Específicos

 Consultar la estructura de la comunicación I2C Y SPI entre 2 microcontroladores


 Investigar el funcionamiento de los Puertos, la trama y protocolos que utilizan.
 Diseñar tablas, gráficos y comparaciones de la investigación e identificar los medios
de comunicación físicos.

III. FUNDAMENTACIÓN TEÓRICA

Definición comunicación I2C

 Según Michael Morales El protocolo I2C toma e integra lo mejor de los protocolos
SPI y UART. Con el protocolo I2C podemos tener a varios maestros controlando
uno o múltiples esclavos. Esto puede ser de gran ayuda cuando se van a utilizar
varios microcontroladores para almacenar un registro de datos hacia una sola
memoria o cuando se va a mostrar información en una sola pantalla. [1]

 Según Jecres Pom I2C es un protocolo síncrono. I2C usa solo 2 cables, uno para
el reloj (SCL) y otro para el dato (SDA). Esto significa que el maestro y el esclavo
envían datos por el mismo cable, el cual es controlado por el maestro, que crea la
señal de reloj. I2C no utiliza selección de esclavo, sino direccionamiento. [2]

 Según Luis llamas El bus I2C requiere únicamente dos cables para su
funcionamiento, uno para la señal de reloj (CLK) y otro para el envío de datos
(SDA), lo cual es una ventaja frente al bus SPI. Por contra, su funcionamiento es un
poco más complejo, así como la electrónica necesaria para implementarla. Además
el protocolo permite conectar hasta 127 dispositivos esclavos con esas dos líneas,
[3]

Definición grupal

 I2C es protocolo de comunicación serial, define la trama de datos y las conexiones físicas
para transferir bits entre 2 dispositivos digitales. incluye dos cables de comunicación, SDA
y SCL.

COMUNICACIÓN I2C

Se conoce además que I2C es un bus de comunicaciones en serie. Su nombre viene de Inter-
Integrated Circuit (Inter-Circuitos Integrados). La velocidad es de 100 kbit/s en el modo
estándar, aunque también permite velocidades de 3.4 Mbit/s. La principal característica de
I2C es que utiliza dos líneas para transmitir la información: una para los datos y otra para
la señal de reloj. También es necesaria una tercera línea, pero esta sólo es la referencia
(masa).

LAS LÍNEAS SE LLAMAN:

SCL (System Clock) es la línea de los pulsos de reloj que sincronizan el sistema.

SDA (System Data) es la línea por la que se mueven los datos entre los dispositivos.

GND (Masa) común de la interconexión entre todos los dispositivos «enganchados» al bus.

CARACTERISTICAS PRINCIPALES
El protocolo I2C es uno de los más utilizados para comunicarse con sensores digitales, ya
que a diferencia del puerto Serial, su arquitectura permite tener una confirmación de los datos
recibidos, dentro de la misma trama, entre otras ventajas.

La conexión de tantos dispositivos al mismo bus, es una de las principales ventajas. Además
si comparamos a I2C con otro protocolo serial, como Serial TTL, este incluye más bits en su
trama de comunicación que permite enviar mensajes más completos y detallados.
Los mensajes que se envían mediante un puerto I2C, incluye además del byte de información,
una dirección tanto del registro como del sensor. Para la información que se envía siempre
existe una confirmación de recepción por parte del dispositivo. Por esta razón es bueno
diferenciar a los distintos elementos involucrados en este tipo de comunicación. [4]

ESQUEMA DE COMUNICACIÓN Y ELEMENTOS

En el caso de I2C se diferencian dos elementos básicos, un MAESTRO y un ESCLAVO. La


Figura que sigue , muestra una conexión típica de tres dispositivos, el bus consiste de dos líneas
llamadas, Serial DAta – SDA y Serial CLock – SCL. Es decir, Datos Seriales y Reloj Serial.
En particular al bus se le conectan dos resistencias en arreglo pull-up, de entre 4.7K y 4.7K.

Fig. 1 protocolo de comunicación I2C

El MAESTRO I2C se encarga de controlar al cable de reloj, por sus siglas en inglés
llamada SCL – Serial CLock. Además el MAESTRO se encarga de iniciar y parar la
comunicación. La información binaria serial se envía sólo por la línea o cable de datos
seriales, en inglés se llama SDA – Serial DAta. Dos Maestros no pueden hacer uso de un
mismo puerto I2C. Puede funcionar de dos maneras, como maestro-transmisor o maestro-
receptor. Sus funciones principales son:

 Iniciar la comunicación – S
 Enviar 7 bits de dirección – ADDR
 Generar 1 bit de Lectura ó Escritura – R/W
 Enviar 8 bits de dirección de memoria
 Transmitir 8 bits de datos –
 Confirmar la recepción de datos – ACK – ACKnowledged
 Generar confirmación de No-recepción, NACK – No-ACKnowledged
 Finalizar la comunicación

El ESCLAVO I2C, generalmente suele ser un sensor. Este elemento suministra de la


información de interés al MAESTRO. Puede actuar de dos formas: esclavo-transmisor ó
esclavo-receptor. Un dispositivo I2C esclavo, no puede generar a la señal SCL. Sus funciones
principales son:

 Enviar información en paquetes de 8 bits.


 Enviar confirmaciones de recepción, llamadas ACK

ESTADOS DEL BUS I2C:


El bus I2C puede encontrarse en distintos estados, que la norma define como los siguientes:

 Libre: Este estado se caracteriza por encontrase las líneas SDA y SCL a 1, sin que se esté
realizando ningún tipo de transferencia.

FIG 2 .Condición de Bus libre Fuente [1]

 Inicio: Se produce una condición de inicio cuando un maestro inicia una transacción. En
concreto, consiste en un cambio de alta a baja en la línea SDA mientras SCL permanece a
alta. A partir de que se dé una condición de inicio se considerará que el bus está ocupado y
ningún otro maestro deberá intentar generar su condición de inicio

FIG3. Condición de inicio Fuente [1]


 Cambio: Se produce una condición de cambio cuando, estando a baja la línea SCL, la línea
SDA pueden cambiar de estado. En la transferencia de datos por un bus I2C éste es el único
instante en el que el sistema emisor (que podrá ser tanto un maestro como un esclavo) podrá
poner en la línea SDA cada bit del carácter a transmitir.

 Dato: Este estado es el que, una vez iniciada una transacción, queda definido por la fase alta
de la señal de sincronía SCL. En este estado se considera que el dato emitido es válido, y no se
admite que pueda cambiar. Recuérdese que, ya iniciada una transferencia, el único instante en
que la línea de datos puede cambiar es en el estado de cambio.
 Parada: Se produce una condición de fin o parada cuando, estando la línea SCL a alta, se
produce un cambio de baja a alta en la línea SDA. Obsérvese que esto es una violación de la
condición de dato, y es precisamente por esto por lo que se utiliza para que un maestro pueda
indicar al esclavo que se finaliza la transferencia. Tras la condición de parada se entra
automáticamente en el estado de bus libre. [5]

TRAMA I2C ESTÁ COMPRENDIDA POR LOS SIGUIENTES CAMPOS.

 Bit de start: Este es un bit especial ya que como hemos dicho antes la línea SDA no puede
cambiar a menos que SCL este a 0. Este bit rompe dicha norma y provoca un cambio de 1
a 0 cuando SCL está a nivel alto.[3]
 Address: El primer byte enviado empieza con 7 bits de dirección, el cual indica a quien
enviamos o solicitamos el dato.
 R/W (Read/Write): El siguiente bit indica si vamos a realizar una operación de lectura o
escritura.
 ACK: Este bit está presente al final de cada byte que enviamos y nos permite asegurarnos
que el byte ha llegado a su destino. De este modo el que envía deja el bit a 1 y si alguien
ha recibido el mensaje fuerza ese bit a 0. De esta manera confirma que le ha llegado el byte
y la transmisión puede continuar.
 1º Byte de datos: Este es el primer byte de datos propiamente dicho ya que lo anterior no
lo podemos elegir nosotros y nos viene impuesto por el protocolo. Aquí podemos poner el
dato que queramos en caso de comunicación con sensores remotos un uso habitual es
poner el número de registro al que queremos escribir o leer. Después del byte de datos se
espera otro ACK del receptor.
 Se repite el paso 5 tantas veces como sea necesario.
 Bit de Stop. En este caso ocurre lo contrario al bit de Start, se pasa de 0 a 1 cuando la línea
SCL se encuentra en alto. Esto termina la transmisión y deja el bus libre para que otro
puede empezar a transmitir.[4].

COMUNICACIÓN SPI

DEFINICIONES DE SPI

 Según David Kalinsky: Bus SPI es un estándar de comunicaciones, usado principalmente para la
transferencia de información entre circuitos integrados en equipos electrónicos. El bus de interfaz de
periféricos serie o bus SPI es un estándar para controlar casi cualquier dispositivo electrónico digital
que acepte un flujo de bits serie regulado por un reloj (comunicación sincrónica). [6]

 Según Tomi Engdahl: El bus SPI es una interfaz de comunicaciones en serie de 4 hilos utilizada por
muchos chips periféricos de microprocesador. El circuito de Interfaz Periférica Serial (SPI) es un enlace
de datos en serie síncrono que es estándar en muchos microprocesadores Motorola y otros chips
periféricos. Proporciona soporte para una conexión de red de ancho de banda bajo / medio (1
megabaudio) entre las CPU y otros dispositivos compatibles con SPI. [7]

 Según Fernando Valdés: La comunicación SPI utiliza dos señales de transmisión de datos lo que le da
mayor velocidad de comunicación debido a que hay poca deformación de la señal. Con la comunicación
SPI el intercambio de datos ocurre siempre en ambas direcciones. En decir, cuando existe intercambio
de un bit entre el maestro y algún esclavo seguidamente vendrá un intercambio de un bit del esclavo
para el maestro. De esta forma, definimos que la comunicación es siempre full-duplex. [4]

Definición Grupal

 Se define a la comunicación SPI como una comunicación en serie con un enlace de datos en serie
síncrono, utilizado para transferencia, de información entre circuitos integrados, con el intercambio
de datos ocurre siempre en ambas direcciones trabajando entre el maestro y el esclavo por lo tanto
es una comunicación full dúplex.

Esquema físico de conexión SPI

El SPI es un protocolo síncrono que trabaja en modo full duplex para recibir y transmitir información,
permitiendo que dos dispositivos pueden comunicarse entre sí al mismo tiempo utilizando canales diferentes o
líneas diferentes en el mismo cable. Al ser un protocolo síncrono el sistema cuenta con una línea adicional a la
de datos encarga de llevar el proceso de sincronismo. [8]
Fig4. SPI

Existen cuatro líneas lógicas encargadas de realizar todo el proceso:

 MOSI (Master Out Slave In):. Línea utilizada para llevar los bits que provienen del maestro hacia
el esclavo.
 MISO (Master In Slave Out):. Línea utilizada para llevar los bits que provienen del esclavo hacia
el maestro.
 CLK (Clock):. Línea proviniente del maestro encarga de enviar la señal de reloj para sincronizar
los dispositivos.
 SS (Slave Select):. Línea encargada de seleccionar y a su vez, habilitar un esclavo.

Para tener un mejor entendimiento de estas conexiones, se presenta una imagen ilustrativa:

Fig5. Tipo Encadenado


Fig6. Tipo paralelo.

La transmisión de información puede darse de muchas maneras dependiendo del fabricante, en muchos casos
la línea SS habilita un esclavo cuando ésta se pone en estado lógico cero, pero eso puede cambiar. La transmisión
de bits se puede dar comenzando con el LSB o con MSB dependiendo también del fabricante, es muchos casos
se comienza por el bit más significativo. Un bit es transmitido cada ciclo de reloj.

Pines SPI 16F887 y 18F4550

Fig7. SPI entre 2 pics.


Conexiones entre PIC 16F887

Fig8. Comunicación SPI Esquema Físico 16F887

Conexiones entre PIC 18F4550

Fig9.Comunicación SPI Esquema Físico 18F4550


Forma de la trama SPI

Todas estas líneas con sus respectivos registros de desplazamiento y su dirección de flujo:

Fig10. Registros de desplazamiento

Fig11. Comunicación SPI

Son importantes las frecuencias de reloj permitidas y el tipo de transiciones válidas.

No hay reglas generales para las transiciones donde los datos deben ser bloqueados. Aunque no está
especificado por Motorola, en la práctica se utilizan cuatro modos. Estos cuatro modos son las combinaciones
de CPOL y CPHA. En la tabla 1, se enumeran los cuatro modos. [9]
Modo SPI CPOL CPHA

0 0 0
1 0 1
2 1 0
3 1 1

Fig12. Modos SPI

Si la fase del reloj es cero, es decir, CPHA = 0, los datos se bloquean en el flanco ascendente del reloj con
CPOL = 0, y en el borde descendente del reloj con CPOL = 1. Si CPHA = 1, las polaridades son
invertido CPOL = 0 significa flanco descendente, CPOL = 1 flanco ascendente.

La interfaz de periféricos en serie se utiliza principalmente para una comunicación en serie síncrona del
procesador host y los periféricos. Sin embargo, una conexión de dos procesadores a través de SPI es igualmente
posible.

se utilizan dos líneas de control y dos de datos. La salida de datos SDO sirve, por un lado, para la lectura de
datos, pero también ofrece la posibilidad de conectar varios dispositivos en cascada. La salida de datos del
dispositivo anterior luego forma la entrada de datos para el siguiente IC.
En un registro de desplazamiento, con cada clock del reloj, un nuevo bit entra en el registro y desplaza a todos
los bits una posición. El último bit sale del registro. Los registros de desplazamiento son la base de las
conversiones paralelo/serie y viceversa.

Supongamos que nuestro registro tiene 16 bits y al ser circular, el bit que entra “empujando” a los demás es
justo el que acaba de salir por el otro lado. Ahora pensar que este registro se parte en dos, cada uno de 8 bits,
pero formando conceptualmente un único registro de 16 bits [10]:
IV. DIAGRAMAS Y ESQUEMAS

COMUNICACIÓN I2C

FIG14 .Diagrama de conexión comunicación i2c

COMUNICACIÓN SPI

FIG15. Comunicación SPI Esquema Físico 18F4550


V. CONCLUSIONES

 la comunicación I2C es un protocolo que utiliza dos líneas para transmitir la información:
una para los datos y otra para la señal de reloj. También es necesaria una tercera línea, pero
esta sólo es la referencia (masa).

 El protocolo I2C permite manejar una comunicación segura entre dos dispositivos digitales.
Pero notando que solo un esclavo puede comunicar con el maestro a la vez.

 la comunicación SPI como una comunicación en serie con un enlace de datos en serie síncrono,
utilizado para transferencia, de información entre circuitos integrados, con el intercambio de datos
ocurre siempre en ambas direcciones trabajando entre el maestro y el esclavo por lo tanto es una
comunicación full dúplex.

VI. BIBLIOGRAFÍA

[1] m. morales, «Fundamentos del Protocolo I2C – Aprende.,» [En línea]. Available:
https://teslabem.com/nivel-intermedio/fundamentos-del-protocolo-i2c-aprende/.

[2] J. pom, «aprendiendo arduino,» [En línea]. Available:


https://aprendiendoarduino.wordpress.com/2017/07/09/i2c/.

[3] L. llamas, «EL BUS I2C EN ARDUINO,» [En línea]. Available: https://www.luisllamas.es/arduino-
i2c/.

[4] HETPRO-TUTORIALS, 22 2018. [En línea]. Available: https://hetpro-store.com/TUTORIALES/i2c/.

[5] E. P. Municio, «Microcontrolador PIC16F84. Desarrollo de proyectos. 3a edición,» RA-MA S.A.


Editorial y Publicaciones, 2009.

[6] S. Barreno, «Areatecnologia,» Tecnologic S.A., 28 Noviembre 2016. [En línea]. Available:
http://www.areatecnologia.com/electronica/optoacoplador.html. [Último acceso: 15 Mayo 2018].
[7] G. Factory, «Grek Factory,» [En línea]. Available: https://www.geekfactory.mx/tutoriales/tutoriales-
pic/teclado-matricial-con-pic/. [Último acceso: 24 04 2019].

[8] E. PereZ, «SPI,» [En línea]. Available: http://www.i-micro.com/pdf/articulos/spi.pdf. [Último acceso:


12 MAYO 2019].

[9] C. Sergio, «Comunicacion SPI con PIC,» 2014. [En línea]. Available:
https://controlautomaticoeducacion.com/microcontroladores-pic/comunicacion-
spi/#Comunicacion_SPI_con_PIC. [Último acceso: 11 mayo 2019].

[10] N. Kiara, «PANAMAHITEK,» 2014. [En línea]. Available: http://panamahitek.com/como-funciona-el-


protocolo-spi/. [Último acceso: 12 mayo 2019].

[11] electrotecperu, 26 09 2015. [En línea]. Available: https://elecstore.pe/blog/PICLCD. [Último acceso: 24


04 2019].

[12] R. Didácticos, «Robótica, Automatización, control industrial, microcontroladores, electrónica digital,»


[En línea]. Available: http://robots-argentina.com.ar/didactica/descripcion-y-funcionamiento-del-bus-
i2c/. [Último acceso: 12 05 2019].

[13] E. L. Pérez, « Ingeniería en Microcontroladores,» [En línea]. Available: http://www.i-


micro.com/pdf/articulos/spi.pdf.

También podría gustarte