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