0% encontró este documento útil (0 votos)
386 vistas7 páginas

Comunicación SPI en Microcontroladores

Este documento describe un experimento de laboratorio para configurar la comunicación SPI entre un microcontrolador STM32F103C8T6 maestro y dos dispositivos esclavos SPI. El objetivo es programar el microcontrolador maestro para controlar un convertidor analógico-digital y un termostato esclavos SPI, y mostrar la temperatura detectada por el termostato en un LCD. Se proporcionan códigos de programación C para configurar la comunicación SPI, inicializar el LCD e implementar la funcionalidad del termostato.

Cargado por

Mijhael Jancko
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 DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
386 vistas7 páginas

Comunicación SPI en Microcontroladores

Este documento describe un experimento de laboratorio para configurar la comunicación SPI entre un microcontrolador STM32F103C8T6 maestro y dos dispositivos esclavos SPI. El objetivo es programar el microcontrolador maestro para controlar un convertidor analógico-digital y un termostato esclavos SPI, y mostrar la temperatura detectada por el termostato en un LCD. Se proporcionan códigos de programación C para configurar la comunicación SPI, inicializar el LCD e implementar la funcionalidad del termostato.

Cargado por

Mijhael Jancko
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 DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 7

UNIVERSIDAD PRIVADA DEL VALLE

FACULTAD DE TECNOLOGIA
ING. MECANICA Y AUTOMATIZACION Evaluación
INDUSTRIAL
CAMPUS TIQUIPAYA

DISEÑO DE SISTEMAS DIGITALES

Informe de Práctica de Laboratorio Nº 6

COMUNICACIÓN MEDIANTE
INTERFACE SPI

Grupo “B”

Estudiante: Jancko Pereyra Mijhael

Docente: Gerson A. Pérez Villarroel

Cochabamba 29 de noviembre del 2019

Gestión II – 2019
COMUNICACIÓN MEDIANTE INTERFACE SPI

1. OBJETIVO GENERAL
El estudiante será capaz de manejar y configurar un microcontrolador
STM32F103C8T6.

a. Objetivos Específicos
Sera capaz de configurar la interface SPI en un microcontrolador
STM32 de formas: Maestro y esclavo para el envio y recepción de
datos, ya sea simultanea o solo para enviar y recibir datos.

2. INTEGRANTES DEL GRUPO –


Jancko Pereyra Mijhael
Morato Montero Leonardo
Rodriguez Perez Victor

3. MARCO TEÓRICO –
El Bus SPI (del inglés Serial Peripheral Interface) 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).
Incluye una línea de reloj, dato entrante, dato saliente y un pin de chip select,
que conecta o desconecta la operación del dispositivo con el que uno desea
comunicarse. De esta forma, este estándar permite multiplexar las líneas de
reloj.
Muchos sistemas digitales no necesitan una conexión rápida con sus
periféricos. La ventajas de un bus serie es que minimiza el número de
conductores, pines y el tamaño del circuito integrado. Esto reduce el coste de
fabricar, montar y probar la electrónica. Un bus de periféricos serie es la
opción más flexible cuando se tiene tipos diferentes de periféricos serie. El
hardware consiste en señales de reloj, data in, data out y chip select para
cada circuito integrado que tiene que ser controlado. Casi cualquier
dispositivo digital puede ser controlado con esta combinación de señales. Los
dispositivos se diferencian en un número predecible de formas. Unos leen el
dato cuando el reloj sube, otros cuando el reloj baja. Algunos lo leen en el
flanco de subida del reloj y otros en el flanco de bajada. Escribir es casi
siempre en la dirección opuesta de la dirección de movimiento del reloj.
Algunos dispositivos tienen dos relojes. Uno para capturar o mostrar los datos
y el otro para el dispositivo interno.

4. DISEÑO
a. Enunciados de las experiencias del laboratorio
Parte 4.1
Diseñar un programa aplicando la interface SPI e implementar el
circuito que cumpla la siguiente función: Se debe programar un Micro
STM32F103C8T6 como maestro SPI para controlar dos dispositivos
esclavos SPI: Convertidor analógico digital SPI (MCP3204) y
termostato-SPI (DS1620). Se deberá programar el maestro para que
mediante la utilización de los esclavos, haga que todo el sistema
funcione como un termostato, se tiene dos leds (Tlow y Thigh) que
indicaran que los rangos máximos y mínimos de operación en el LCD
se desplegará la temperatura ambiente que detecta el termostato, y
con el potenciómetro de calibrara el punto e operación.

b. Códigos

#include "main.h"
#include "stm32f1xx.h"
#include "stdio.h"
#include "stdlib.h"
#include "string.h"''
#define LCD_ADDR 0x4E

I2C_HandleTypeDef hi2c1;
SPI_HandleTypeDef hspi1;

void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_SPI1_Init(void);
static void MX_I2C1_Init(void);

void lcd_enviar_cmd (char cmd)


{
char nibb_h, nibb_l;
uint8_t dato_t[4];
nibb_h = (cmd&0xf0);
nibb_l = ((cmd<<4)&0xf0);
dato_t[0]= nibb_h|0x0c;
dato_t[1]= nibb_h|0x08;
dato_t[2]= nibb_l|0x0c;
dato_t[3]= nibb_l|0x08;
HAL_I2C_Master_Transmit(&hi2c1, LCD_ADDR, (uint8_t *) dato_t, 4, 100);
}

void lcd_a_xy(uint8_t x, uint8_t y)


{
uint8_t direccion[] = {0x80, 0xC0, 0x94, 0xD4};
lcd_enviar_cmd(direccion[y-1] + (x-1));
HAL_Delay(1);
}

void lcd_enviar_dato (char dato)


{
char nibb_h, nibb_l;
uint8_t dato_t[4];
nibb_h = (dato&0xf0);
nibb_l = ((dato<<4)&0xf0);
dato_t[0]= nibb_h|0x0d;
dato_t[1]= nibb_h|0x09;
dato_t[2]= nibb_l|0x0d;
dato_t[3]= nibb_l|0x09;
HAL_I2C_Master_Transmit(&hi2c1, LCD_ADDR, (uint8_t *) dato_t, 4, 100);
}

void lcd_init (void)


{
lcd_enviar_cmd(0x02);
lcd_enviar_cmd(0x28);
lcd_enviar_cmd(0x0c);
lcd_enviar_cmd(0x80);
}

void lcd_enviar_float (float dato, int numerodedigitos)


{
char flotante[10];
sprintf (flotante,"%f", dato);
for (int i=0; i< numerodedigitos; i++)
{
lcd_enviar_dato (flotante[i]);
}
}

void lcd_enviar_string (char* str)


{
while(*str)lcd_enviar_dato(*str++);
}

void lcd_enviar_int (int dato)


{
char numero[12];
sprintf (numero,"%d", dato);
lcd_enviar_string (numero);
}
char texto1 [15];
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_SPI1_Init();
MX_I2C1_Init();
HAL_SPI_Init(&hspi1);
lcd_init();

while (1)
{
HAL_SPI_Receive(&hspi1, texto1, sizeof(texto1), 100);
lcd_enviar_string(texto1);
HAL_Delay(500);
lcd_a_xy(0,0);
}
}

c. Simulación
5. CUESTIONARIO
a. Mencionar el criterio del algoritmo que se eligió para realizar la experiencia
4.1.
Se desarrolló la programación con una serie de configuración de puertos habilitando
y deshabilitando cada vez que se tenía que leer algo del periférico en este caso el
esclavo y también se hizo la comunicación entre microprocesadores para leer el adc
del segundo esclavo y así modificar el termostato que es el esclavo uno.

b. Dibujar un diagrama que muestre como puede configurarse un


STM32F103C8T6 como maestro solo para que reciba datos provenientes del
esclavo.
6. CONCLUSIONES
Se demostró en la práctica que la comunicación SPI, es más lenta, pero a la vez
más eficiente porque está desarrollada para comunicación entre microcontroladores
en su mismo entorno.

7. BIBLIOGRAFÍA
[Link]

También podría gustarte