0% encontró este documento útil (0 votos)
26 vistas8 páginas

Infome Micros 6

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
26 vistas8 páginas

Infome Micros 6

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

MICROPROCESADORES II

COMUNICACIÓN MEDIANTE INTERFAZ I2C

Grupo “B”

ESTUDIANTE:
SAMUEL EDGAR GOMEZ GERONIMO

Docente: ING. Gerson Perez Villarroel

Cochabamba 30 octubre del 2024


Gestión Il – 2024
1. Objetivos:
a. Comprender los conceptos básicos del protocolo I2C en el STM32
b. Configurar el STM32 para maneje el protocolo I2C tanto como maestro como
esclavo
2. Marco teórico:

a. Protocolo I2C:

I2C es un sistema de comunicación serial de dos cables utilizado entre circuitos

integrados que fue creado originalmente por Philips Semiconductors en 1982.

El I2C es un bus de comunicación serial multimaestro, multiesclavo, síncrono,

bidireccional y semidúplex. (stm32mcu, 2020)

• SDA (Serial Data) es la línea en la que el maestro y el esclavo envían o

reciben la información (secuencia de bits).

• SCL (Serial Clock) es la línea dedicada al reloj para la sincronización del

flujo de datos.

Figura 1. Protocolo I2C(stm32mcu, 2020)

• Modos de operación:

Modo estándar (Sm) con una tasa de bits de hasta 100 kbit/s

Modo rápido (Fm) con una tasa de bits de hasta 400 kbit/s

Fast-Mode Plus (Fm+) con una tasa de bits de hasta 1 Mbit/s


Figura 2. Operación del protocolo I2C (stm32mcu, 2020)

b. Funciones del I2C:

Basado en las funciones HAL de STM32Cube, la transferencia de datos I2C se

puede realizar en 3 modos: modo de bloqueo, modo de interrupción o modo

DMA.

• Modo de bloqueo:

La comunicación se realiza en modo de sondeo. El estado de todo el

procesamiento de datos lo devuelve la misma función una vez finalizada la

transferencia.

o Transmisión maestra HAL_I2C()

o Recepción maestra HAL_I2C()

o Transmisión esclava HAL_I2C()

o Recepción de esclavos HAL_I2C()

o Escritura de memoria HAL_I2C()

o Lectura de memoria HAL_I2C_Mem()

• Modos sin bloqueo

La comunicación se realiza mediante interrupciones o DMA. Estas funciones

devuelven el estado de inicio de la transferencia.


o Modo de interrupción:

▪ HAL_I2C_Master_Transmite_IT()

▪ HAL_I2C_Master_Recibir_IT()

▪ Transmisión esclava HAL_I2C_IT()

▪ HAL_I2C_Esclavo_Recibir_IT()

▪ Escritura de memoria HAL_I2C_IT()

▪ Lectura de memoria HAL_I2C_IT()

o Modo DMA:

▪ Transmisión maestra HAL_I2C_DMA()

▪ HAL_I2C_Master_Recepción_DMA()

▪ Transmisión DMA esclava HAL_I2C()

▪ HAL_I2C_Esclavo_Recibir_DMA()

▪ Escritura de memoria HAL_I2C_DMA()

▪ Lectura de memoria HAL_I2C_DMA()

3. Diseño del circuito:


3.1. Diseñar un programa aplicando la interfaz I2C e implementar el circuito que cumpla
la siguiente función: Se debe programar un Micro STM32F103C8T6 como maestro I2C
para controlar dos dispositivos esclavos I2C: Sensor de temperatura-I2C (DS1621) y un
LCD-I2C. El maestro debe recuperar la lectura de la temperatura ambiente del
dispositivo esclavo y reenviarlo a un LC-I2C para su visualización en tiempo real
Código :
#include "main.h"
#include "string.h"
#define DIR_ESCLAVO_LCD 0x27
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_I2C2_Init(void);
/* USER CODE BEGIN PFP */
float vtemp;
uint8_t dato1=0x0E;
uint8_t dato2=0x20;
uint8_t temperatura[2];
uint8_t leer =0x11;
char men[16];
void lcd_enviar_com(char cmd);
void lcd_enviar_dato(char dato);
void lcd_init(void);
void lcd_enviar_string(char*str);
void lcd_enviar_in_t(int dato);
void lcd_a_xy(uint8_t x,uint8_t y);
int main(void)
{

HAL_Init();
MX_GPIO_Init();
MX_I2C2_Init();
lcd_init();
lcd_enviar_com(0x01);
HAL_Delay(5);
lcd_enviar_com(0x80);

lcd_enviar_string("Temperatura: ");
while (1)
{
/* USER CODE END WHILE */
HAL_I2C_Master_Transmit(&hi2c2,0xD0,&dato1,1,HAL_MAX_DELAY);
HAL_Delay(100);
HAL_I2C_Master_Transmit(&hi2c2,0xD0,&dato2,1,HAL_MAX_DELAY);
HAL_Delay(100);
HAL_I2C_Master_Transmit(&hi2c2,0xD0,&leer,1,HAL_MAX_DELAY);
HAL_Delay(100);
HAL_I2C_Master_Receive(&hi2c2,0xD0,temperatura,2,HAL_MAX_DELAY);
HAL_Delay(100);
vtemp=(((temperatura[0])+(temperatura[1]>>6))/4.0);
lcd_a_xy(1,2);
sprintf(men,"%.2f C",vtemp);
lcd_enviar_string(men);
HAL_Delay(100);
}
}
El código trabaja mediante el protocolo I2C el donde el maestro es el STM32 y los
esclavos son el sensor de temperatura y la pantalla lcd con I2C incorporado
El cogigo consisten en cuando se de un cambio de temperatura el esclavo mandara
información que el maestro recibe para que luego se transmita esa informacion al
segundo esclavo el cual es la pantalla lcd con el modulo I2C.

4. Layout del circuito:


• Experiencia 1:
Figura 3. Layout del circuito
5. Resultados:
Figura 4. Pruebas realizadas en el laboratorio

6. Cuestionario:

a. Mencionar el criterio del algoritmo que se eligió para realizar la aplicación

designada.

R: lp primero que se hace es transmitir información al sensor y al lcd con I2c

para cada transmisión denemos que tener la dirección del integrado usado un

ejemplo del lcd era 0x27 asi igual con el sensor de temperatura y cada vez que

este tenga un valor de temperatura los datos se actualizaran en el lcd de manera

casi instantánea.

b. ¿Cuáles son las ventajas y desventajas de la interfaz I2C respecto a la interface

SPI?

R: serian:

o Ventajas de I2C:

o Utiliza solo dos pines (SDA y SCL) para la comunicación.

o Permite conectar varios dispositivos en el mismo bus.

o Cada dispositivo tiene una dirección única, lo que simplifica la

comunicación.
o Desventajas de I2C:

o Opera a velocidades más lentas (hasta 400 kHz en modo

estándar) en comparación con SPI.

o La gestión de direcciones y el protocolo de comunicación pueden

ser más complejos.

o Reducir la eficiencia en la transmisión de datos.

o Ventajas de SPI:

o Permite tasas de transferencia más altas.

o Funciona sin la necesidad de ingresar una dirección, lo que

facilita la implementación.

o Permite enviar y recibir datos simultáneamente.

o Desventajas de SPI:

o Requiere más pines para cada dispositivo (MOSI, MISO, SCK, y

CS).

o limitada cantidad de dispositivos conectables sin lógica adicional.

7. Conclusiones:

Al finalizar el laboratorio podemos ver como realmente trabaja el protocolo I2C en el

STM32 lo cual es muy simple al tener funciones especificas para iniciar el protocolo y

transmitir y recibir información pero la verificación del código es simplemente que el

código compile ya que no se puede simular correctamente usando proteus por lo que

únicamente sabremos que esta bien si implementamos el circuito. En el laboratorio el

código que realizamos si opera de manera adecuada pero nos trabamos un rato por el

sensor que no operaba de forma adecuada.

8. Bibliografía:

stm32mcu. (2020). https://wiki.st.com/stm32mcu/wiki/Getting_started_with_I2C

También podría gustarte