Docsity
Docsity

Prepare for your exams
Prepare for your exams

Study with the several resources on Docsity


Earn points to download
Earn points to download

Earn points by helping other students or get them with a premium plan


Guidelines and tips
Guidelines and tips

YA NO SE QUE SUBIRNJNADWD, Lecture notes of Electrical and Electronics Engineering

FWFEEFEFEFAEFEFAFFFEEFSEFFEFEFEF

Typology: Lecture notes

2023/2024

Uploaded on 05/20/2025

bfssb-dvsvdsvds
bfssb-dvsvdsvds 🇺🇸

1 document

1 / 13

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
UNIVERSIDAD DE LAS FUERZAS
ARMADAS “ESPE”
DEPARTAMENTO DE CIENCIAS DE LA
ENERGÍA Y MECÁNICA
SISTEMAS EMBEBIDOS
PRÁCTICA 2.3 I2C
NRC: 4061
INTEGRANTES:
CAIZA ANGELO
GOMEZ SAHID
FECHA DE ENTREGA:
14 de Febrero de 2025
pf3
pf4
pf5
pf8
pf9
pfa
pfd

Partial preview of the text

Download YA NO SE QUE SUBIRNJNADWD and more Lecture notes Electrical and Electronics Engineering in PDF only on Docsity!

UNIVERSIDAD DE LAS FUERZAS

ARMADAS “ESPE”

DEPARTAMENTO DE CIENCIAS DE LA

ENERGÍA Y MECÁNICA

SISTEMAS EMBEBIDOS

PRÁCTICA 2.3 – I2C

NRC: 4061

INTEGRANTES:

CAIZA ANGELO

GOMEZ SAHID

FECHA DE ENTREGA:

14 de Febrero de 2025

GUIA PARA PRÁCTICAS EN EL LABORATORIO DE:

Mecatrónica y Sistemas Dinámicos. Fecha: 2024 - octubre- 20 Página: 1 de 12 Código de documento: DCEM-GUI- 2024 - V1- 002 Rev. UPDI: 2024 - Sep- 20

DEPARTAMEN

TO:

Ciencias de la Energía y Mecánica

CARRER

A:

Mecatrónica AREA: Mecatrónica ASIGNATURA: Sistemas Embebidos MCT NRC: 4060, 4061, 4062, 4063 NIVEL: 5 DOCENTE: Daniel Mideros Mora

PERÍOD

O

LECTIV

O:

PRÁCTIC

A N°:

TEMA DE LA

PRÁCTICA:

Comunicación serial – MSSP (SPI e I2C) Numero Estudiantes:

INTRODUCCIÓN:

La comunicación serial en los microcontroladores permite el intercambio de datos entre dispositivos mediante protocolos estándar que facilitan la conexión y sincronización de múltiples componentes. Los protocolos SPI (Serial Peripheral Interface) e I2C (Inter- Integrated Circuit) son dos de los métodos de comunicación serial más comunes, utilizados en aplicaciones donde la transferencia rápida y precisa de información es esencial. En esta práctica de laboratorio, los estudiantes configurarán el puerto MSSP (Master Synchronous Serial Port) de microcontroladores PIC para implementar comunicación serial tanto con el protocolo SPI como con el protocolo I2C, logrando la interacción entre sensores y dispositivos de visualización. El objetivo de la práctica es que los estudiantes comprendan los principios y configuraciones de los protocolos SPI e I2C, así como las aplicaciones prácticas de la comunicación serial en sistemas embebidos. Esta experiencia práctica permitirá a los estudiantes familiarizarse con la configuración de puertos de comunicación y el envío y recepción de datos entre dispositivos. OBJETIVOS: General: Implementar circuitos con comunicación serial. Específicos:

  • Comprender el principio de funcionamiento del protocolo SPI.
  • Implementar circuitos electrónicos con comunicación serial (SPI).
  • Comprender el principio de funcionamiento del protocolo I2C.
  • Implementar circuitos electrónicos con comunicación serial (I2C). EQUIPOS / MATERIALES / INSUMOS: EQUIPOS: Software
  • MPLAB
  • XC
  • PIC Kit

MATERIALES / INSUMOS:

  • 2 microcontroladores PIC16f877A.
  • Tablero de prototipado.
  • Resistores.
  • LCD.
  • Potenciómetro.
  • Sensor BMP280.
  • PCF8574.

FUNDAMENTO TEORICO: Para abordar esta práctica, es fundamental comprender algunos conceptos teóricos clave:

GUIA PARA PRÁCTICAS EN EL LABORATORIO DE:

Mecatrónica y Sistemas Dinámicos. Fecha: 2024 - octubre- 20 Página: 3 de 12 Código de documento: DCEM-GUI- 2024 - V1- 002 Rev. UPDI: 2024 - Sep- 20 − SSPCON: Registro de control del módulo MSSP. − SSPADD: Registro de dirección del esclavo I2C. − SSPBUF: Registro de buffer de datos del módulo MSSP.

**2. Realice una tabla comparativa para los protocolos I2C y SPI.

  1. Consulte las arquitecturas para comunicación serial entre dispositivos embebidos.**
  • UART (Universal Asynchronous Receiver/Transmitter): Es una arquitectura de comunicación serial asíncrona punto a punto, donde los datos se transmiten en serie uno tras otro sin la necesidad de un reloj compartido entre el transmisor y el receptor. Es comúnmente utilizada para la comunicación entre microcontroladores y otros dispositivos periféricos, como módulos GPS o módems.
  • SPI (Serial Peripheral Interface): Es una arquitectura de comunicación síncrona de punto a punto o de bus, que utiliza un reloj compartido entre un maestro y uno o más esclavos para sincronizar la transmisión de datos. Se caracteriza por su alta velocidad y flexibilidad, lo que lo hace adecuado para la comunicación con una amplia variedad de dispositivos periféricos, como sensores, pantallas LCD y memorias flash.
  • I2C (Inter-Integrated Circuit): Es una arquitectura de bus multi-maestro y multi-esclavo que utiliza dos líneas de comunicación (SDA y SCL) para la transmisión de datos. Permite la comunicación entre varios dispositivos utilizando solo dos cables y es ideal para aplicaciones donde se requiere conectar múltiples dispositivos a un microcontrolador, como sensores, EEPROMs y pantallas LCD.
  • USART (Universal Synchronous Asynchronous Receiver/Transmitter): Es una arquitectura de comunicación serie que combina las características de UART y SPI. Puede operar tanto en modo síncrono como asíncrono, lo que lo hace versátil para una variedad de aplicaciones de comunicación serial entre dispositivos embebidos.
  • USB (Universal Serial Bus): Es una arquitectura de comunicación serial de alta velocidad que se utiliza comúnmente para la conexión de dispositivos periféricos a computadoras y otros dispositivos host. Ofrece una alta velocidad de transferencia de datos y soporte para la conexión en caliente, lo que lo hace adecuado para una amplia gama de aplicaciones.
  • CAN (Controller Area Network): Es un protocolo de comunicación serie diseñado principalmente para aplicaciones en automoción y sistemas embebidos industriales. Se caracteriza por su robustez, tolerancia al ruido y capacidad para operar en entornos hostiles, lo que lo hace adecuado para aplicaciones que requieren comunicación confiable entre diferentes dispositivos en un sistema distribuido.
  • Ethernet: Es una arquitectura de comunicación que utiliza cables de red para la transmisión de datos en forma de paquetes. Es ampliamente utilizado en redes de área local (LAN) e Internet para la comunicación entre dispositivos embebidos, como sistemas de automatización industrial, dispositivos IoT y sistemas embebidos conectados a la red.

GUIA PARA PRÁCTICAS EN EL LABORATORIO DE:

Mecatrónica y Sistemas Dinámicos. Fecha: 2024 - octubre- 20 Página: 4 de 12 Código de documento: DCEM-GUI- 2024 - V1- 002 Rev. UPDI: 2024 - Sep- 20

  • RS-232/RS-485: Son estándares de comunicación serie utilizados para la transmisión de datos serie entre dispositivos embebidos y periféricos. RS-232 es comúnmente utilizado para la comunicación punto a punto a corta distancia, mientras que RS-485 se utiliza para la comunicación en red en entornos industriales donde se requiere una mayor distancia de transmisión y una mayor resistencia al ruido eléctrico. 4. Consulte las características del sensor BMP280. El sensor BMP280 es un sensor de presión y temperatura de alta precisión. Sus características principales incluyen:
  • Medición de presión atmosférica con una precisión de ±1 hPa.
  • Medición de temperatura con una precisión de ±1°C.
  • Interfaz de comunicación I2C y SPI.
  • Bajo consumo de energía.
  • Amplio rango de operación de temperatura.
  • Pequeño tamaño y bajo costo. 5. Consulte las características del sensor PCF8574. El PCF8574 es un expansor de puertos I/O (Input/Output) que proporciona 8 puertos de E/S bidireccionales controlados a través del bus I2C. Sus características son:
  • 8 puertos de E/S bidireccionales.
  • Interfaz de comunicación I2C.
  • Capacidad de expansión de puertos para microcontroladores.
  • Bajo consumo de energía.
  • Bajo costo y fácil de usar.
  • Ampliamente utilizado para expandir la capacidad de E/S de microcontroladores con recursos limitados. **ACTIVIDADES POR DESARROLLAR:
  1. Configure el puerto MSSP para comunicación I2C. a. Conecte al puerto MSSP del microcontrolador el sensor BMP280 y el LCD (con el módulo PCF8574)** Conectamos a los mismos puertos tanto el módulo de comunicación I2C para la LCD y el sensor BMP Figura 1: Conexión sensor BMP 280 al PIC b. Lea los valores de temperatura y presión del sensor. Obtenemos los valores mediante la configuración de lectura de la comunicación I2C implementada en la librería I2C

GUIA PARA PRÁCTICAS EN EL LABORATORIO DE:

Mecatrónica y Sistemas Dinámicos. Fecha: 2024 - octubre- 20 Página: 6 de 12 Código de documento: DCEM-GUI- 2024 - V1- 002 Rev. UPDI: 2024 - Sep- 20

ESQUEMA ELECTRICO DE CONEXION

Figura 6 : Esquema electrónico simulado por Proteus – I2C. PROGRAMACION

Librería I2C:

#include <xc.h>

#include "LCD_I2C.h"

unsigned char RS, i2c_add, BackLight_State = LCD_BACKLIGHT;

//---------------[ I2C Routines ]-------------------

void I2C_Master_Init()

SSPCON = 0x28;

SSPCON2 = 0x00;

SSPSTAT = 0x00;

SSPADD = ((_XTAL_FREQ/4)/I2C_BaudRate) - 1;

SCL_D = 1;

SDA_D = 1;

void I2C_Master_Wait()

while ((SSPSTAT & 0x04) || (SSPCON2 & 0x1F));

void I2C_Master_Start()

I2C_Master_Wait();

GUIA PARA PRÁCTICAS EN EL LABORATORIO DE:

Mecatrónica y Sistemas Dinámicos. Fecha: 2024 - octubre- 20 Página: 7 de 12 Código de documento: DCEM-GUI- 2024 - V1- 002 Rev. UPDI: 2024 - Sep- 20

SEN = 1;

void I2C_Master_RepeatedStart()

I2C_Master_Wait();

RSEN = 1;

void I2C_Master_Stop()

I2C_Master_Wait();

PEN = 1;

void I2C_ACK(void)

ACKDT = 0; // 0 - > ACK

I2C_Master_Wait();

ACKEN = 1; // Send ACK

void I2C_NACK(void)

ACKDT = 1; // 1 - > NACK

I2C_Master_Wait();

ACKEN = 1; // Send NACK

unsigned char I2C_Master_Write(unsigned char data)

I2C_Master_Wait();

SSPBUF = data;

while(!SSPIF); // Wait Until Completion

SSPIF = 0;

return ACKSTAT;

unsigned char I2C_Read_Byte(void)

//---[ Receive & Return A Byte ]---

I2C_Master_Wait();

RCEN = 1; // Enable & Start Reception

while(!SSPIF); // Wait Until Completion

SSPIF = 0; // Clear The Interrupt Flag Bit

I2C_Master_Wait();

return SSPBUF; // Return The Received Byte

//---------------[ LCD Routines ]----------------

void LCD_Init(unsigned char I2C_Add)

i2c_add = I2C_Add;

GUIA PARA PRÁCTICAS EN EL LABORATORIO DE:

Mecatrónica y Sistemas Dinámicos. Fecha: 2024 - octubre- 20 Página: 9 de 12 Código de documento: DCEM-GUI- 2024 - V1- 002 Rev. UPDI: 2024 - Sep- 20

for(int i=0; Str[i]!='\0'; i++)

LCD_Write_Char(Str[i]);

void LCD_Set_Cursor(unsigned char ROW, unsigned char COL)

switch(ROW)

case 2:

LCD_CMD(0xC0 + COL-1);

break;

case 3:

LCD_CMD(0x94 + COL-1);

break;

case 4:

LCD_CMD(0xD4 + COL-1);

break;

// Case 1

default:

LCD_CMD(0x80 + COL-1);

void Backlight()

BackLight_State = LCD_BACKLIGHT;

IO_Expander_Write(0);

void noBacklight()

BackLight_State = LCD_NOBACKLIGHT;

IO_Expander_Write(0);

void LCD_SL()

LCD_CMD(0x18);

__delay_us(40);

void LCD_SR()

LCD_CMD(0x1C);

__delay_us(40);

void LCD_Clear()

LCD_CMD(0x01);

__delay_us(40);

Programa Principal:

#include <xc.h>

GUIA PARA PRÁCTICAS EN EL LABORATORIO DE:

Mecatrónica y Sistemas Dinámicos. Fecha: 2024 - octubre- 20 Página: 10 de 12 Código de documento: DCEM-GUI- 2024 - V1- 002 Rev. UPDI: 2024 - Sep- 20

#include<stdio.h>

#include "config_pic.h"

#include "LCD_I2C.h"

int r;

char buffer [20];

void main()

TRISC2 = 0; // Setting the "No_Dev_LED" (OUTPUT) Pin

RC2 = 0;

I2C_Master_Init();

LCD_Init(0x4E);

while(1)

/*I2C_Master_RepeatedStart() // Initiating the communication with the start bit

LCD_Init(0x4E); // SLAVE ADDRESS = 1001 1010 | Last bit is '0' - Write

I2C_Master_RepeatedStart(); // Again initiating the communication due to change in R/W bit

__delay_ms(200);*/

SSPBUF = 0x9B; // Slave ADDRESS = 1001 1011 | Last bit is '1' - Read

I2C_Master_Wait();

__delay_ms(200);

r = I2C_Read_Byte(); // Recieving the temp value in 8 bit format

__delay_ms(300);

//i2c_wait();

I2C_NACK(); // After reception, Master sends the NACK bit

__delay_ms(200);

I2C_Master_Stop(); // Stopping the communication

I2C_Master_Init();

LCD_Init(0x4E);

LCD_Set_Cursor(1, 1);

LCD_Write_String("Temp:");

sprintf(buffer, "%u", r);

LCD_Write_String(buffer);

GUIA PARA PRÁCTICAS EN EL LABORATORIO DE:

Mecatrónica y Sistemas Dinámicos. Fecha: 2024 - octubre- 20 Página: 12 de 12 Código de documento: DCEM-GUI- 2024 - V1- 002 Rev. UPDI: 2024 - Sep- 20

  • ¿Cómo puedo aplicar los conocimientos adquiridos con la práctica?
    • Los conocimientos adquiridos en esta práctica se podrían utilizar para dispositivos como sistemas de control monitoreo o automatización los cuales necesitan comunicación serial. (Caiza A.)
    • La experiencia adquirida tiene aplicaciones directas en el desarrollo de sistemas embebidos escalables, donde se requiere la interconexión de múltiples dispositivos en un bus común. Esto es especialmente útil en entornos industriales y de automatización, donde diferentes microcontroladores y sensores deben intercambiar información sin necesidad de múltiples líneas de comunicación. Además, permite la integración de distintas familias de microcontroladores en un solo sistema, optimizando recursos y facilitando la interoperabilidad entre dispositivos de diferentes arquitecturas. (Gomez S.) CONCLUSIONES Y RECOMENDACIONES CONCLUSIONES − La configuración adecuada de los puertos MSSP en ambos microcontroladores es esencial para establecer una comunicación serial sincrónica (SPI) confiable y eficiente. − La función de cambio lineal desarrollada para el potenciómetro permite convertir los valores analógicos obtenidos en el microcontrolador 1 en un rango de voltaje deseado entre 1 y 4 voltios, facilitando su interpretación. − La conexión del LCD al puerto D del microcontrolador 2 proporciona una interfaz de visualización para presentar los datos recibidos del microcontrolador 1 de manera clara y comprensible. − Se ha logrado un entendimiento sólido de los principios de funcionamiento de los protocolos de comunicación serial SPI, lo cual es crucial para la implementación y diagnóstico de sistemas electrónicos avanzados. − La implementación exitosa de circuitos electrónicos con comunicación serial utilizando los protocolos SPI demuestra la capacidad de aplicar conocimientos teóricos en escenarios prácticos y reales. − La habilidad para interconectar múltiples dispositivos electrónicos a través de estos protocolos fortalece las competencias en el diseño y desarrollo de sistemas integrados de comunicación. RECOMENDACIONES
  • Es recomendable profundizar en la documentación técnica oficial de los protocolos SPI e I2C para mantenerse actualizado sobre nuevas versiones y mejoras, lo cual facilitará la resolución de problemas y la optimización de los circuitos.
  • Involucrarse en proyectos que involucren la comunicación serial con SPI e I2C en contextos industriales o de investigación para ganar experiencia práctica y conocer los desafíos del mundo real.
  • Invertir en herramientas de diagnóstico y análisis, como osciloscopios y analizadores lógicos, permitirá una mejor comprensión y resolución de problemas en la implementación de circuitos de comunicación serial. BIBLIOGRAFIA [1] «SPI vs I2C: Qué protocolo elegir para chips de memoria», Altium. Accedido: 14 de febrero de 2024. [En línea]. Disponible en: https://resources.altium.com/es/p/spi-versus-i2c-how-choose-best-protocol-your-memory-chips [2] «Módulo adaptador IIC/I2C PCF8574», CREATEC4 S.C.A. Accedido: 14 de febrero de 2024. [En línea]. Disponible en: https://createc3d.com/es/inicio/1263-modulo-adaptador-iici2c-pcf8574.html FIRMAS DOCENTE: ………………………………………… …………. Daniel Mideros Mora

JEFE DE LABORATORIO:

Johanna Tobar Quevedo

ANALISTA DE LABORATORIO

Viky Armijos Mijas