0% encontró este documento útil (0 votos)
18 vistas13 páginas

Comunicación UART en STM32: Guía Laboratorio

Este documento proporciona una guía detallada sobre cómo configurar y utilizar la comunicación UART en un microcontrolador STM32. Explica los pasos para configurar el puerto UART, la velocidad de baudios y otros parámetros. Muestra cómo inicializar el periférico UART y cómo realizar operaciones de lectura y escritura. El objetivo es programar un STM32F103C8T6 para transmitir datos digitales de un puerto a una computadora a través de UART cuando se presiona la tecla "E" en el teclado, usando interrup
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)
18 vistas13 páginas

Comunicación UART en STM32: Guía Laboratorio

Este documento proporciona una guía detallada sobre cómo configurar y utilizar la comunicación UART en un microcontrolador STM32. Explica los pasos para configurar el puerto UART, la velocidad de baudios y otros parámetros. Muestra cómo inicializar el periférico UART y cómo realizar operaciones de lectura y escritura. El objetivo es programar un STM32F103C8T6 para transmitir datos digitales de un puerto a una computadora a través de UART cuando se presiona la tecla "E" en el teclado, usando interrup
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 (A)

INFORME DE LABORATORIO Nº4

COMUNICACIÓN MEDIANTE PUERTO SERIAL


UART
SEMESTRE II/2023
Estudiante:
Natalia Berrocal Gamez

La Paz 30 de octubre del 2023


Tabla de contenido
ÍNDICE DE FIGURAS................................................................................................................ 3
ÍNDICE DE TABLAS .................................................................................................................. 3
1. INTRODUCCIÓN ................................................................................................................ 4
2. OBJETIVOS ........................................................................................................................ 4
2.1. OBJETIVO GENERAL .................................................................................................. 4
2.2. OBJETIVOS ESPECÍFICOS............................................................................................ 4
3. FUNDAMENTO TEÓRICO ................................................................................................. 4
3.1. Comunicación UART (Universal Asynchronous Receiver/Transmitter) ........................ 4
3.2. Entorno de Desarrollo Integrado (IDE) ......................................................................... 5
3.3. Configuración UART en STM32 ................................................................................... 5
3.4. Depuración y pruebas .................................................................................................. 5
4. MATERIALES Y EQUIPOS ................................................................................................. 5
5. DISEÑO DEL CIRCUITO .................................................................................................... 5
5.1. CONFIGURACIÓN DEL PUERTO UART .................................................................... 6
5.2. CONFIGURACIÓN APLICACIÓN TERA TERM ........................................................... 8
5.3. CÓDIGO ....................................................................................................................... 8
6. RESULTADOS EN TERA TERM ...................................................................................... 12
7. CUESTIONARIO ............................................................................................................... 12
8. CONCLUSIONES ............................................................................................................. 13
9. BIBLIOGRAFÍA ................................................................................................................. 13
ÍNDICE DE FIGURAS
FIGURA 1. DIAGRAMA DE CONEXIONES ...................................................................................................................................... 6
FIGURA 2 CONFIGURACIÓN DEL CLOCK ....................................................................................................................................... 6
FIGURA 3 CONFIGURACIÓN DEL PUERTO UART .......................................................................................................................... 7
FIGURA 4 CONFIGURACIÓN DE PINES.......................................................................................................................................... 8
FIGURA 5. TERA TERM ................................................................................................................................................................. 8
FIGURA 6. RESULTADO EN TERA TERM ...................................................................................................................................... 12

ÍNDICE DE TABLAS
TABLA 1 MATERIALES Y EQUIPOS ................................................................................................................................................ 5
TABLA 2 ESPECIFICACIONES DE FORMATO EN LA FUNCIÓN SPRINTF ....................................................................................... 11
LABORATORIO 4
COMUNICACIÓN MEDIANTE PUERTO SERIAL UART

1. INTRODUCCIÓN
La comunicación mediante el puerto serial UART (Universal Asynchronous
Receiver/Transmitter) es una forma común y efectiva de intercambiar datos entre un
microcontrolador STM32 y otros dispositivos, como sensores, módulos de comunicación,
pantallas y otros microcontroladores. Este informe proporciona una guía detallada sobre
cómo configurar y utilizar la comunicación UART en un microcontrolador STM32.

2. OBJETIVOS
2.1. OBJETIVO GENERAL
• Proporcionar una guía completa y detallada sobre cómo configurar y utilizar la
comunicación mediante el puerto serial UART en un microcontrolador STM32.

2.2. OBJETIVOS ESPECÍFICOS


• Detallar los pasos para configurar y establecer la comunicación UART en un
microcontrolador STM32, incluyendo la configuración de pines, velocidad de baudios
y otros parámetros relevantes.
• Mostrar cómo inicializar el periférico UART y cómo realizar operaciones de lectura y
escritura en el microcontrolador.

3. FUNDAMENTO TEÓRICO
3.1. Comunicación UART (Universal Asynchronous Receiver/Transmitter)
La comunicación UART es un protocolo de comunicación serie que se utiliza comúnmente
en sistemas embebidos y electrónica para la transferencia de datos entre dispositivos.
Funciona mediante la transmisión y recepción de datos serie a través de dos líneas,
conocidas como TX (Transmit) y RX (Receive). La comunicación UART es asincrónica, lo
que significa que los datos se transmiten sin la necesidad de un reloj compartido entre el
transmisor y el receptor. Los parámetros clave de la comunicación UART incluyen la
velocidad de baudios, el número de bits de datos, los bits de parada y la paridad.
3.2. Entorno de Desarrollo Integrado (IDE)
El entorno de desarrollo integrado es una herramienta de software que se utiliza para
escribir, compilar, depurar y cargar programas en un microcontrolador. Ejemplos de IDE para
el desarrollo de aplicaciones STM32 incluyen STM32CubeIDE y Keil MDK.

3.3. Configuración UART en STM32


La configuración del puerto serial UART en un microcontrolador STM32 implica seleccionar
los pines adecuados para la transmisión y recepción, establecer la velocidad de baudios,
configurar el número de bits de datos, los bits de parada y la paridad según los requisitos
del sistema. Una vez configurado, el periférico UART se inicializa mediante funciones
proporcionadas por las bibliotecas de STM32, y se pueden utilizar funciones de lectura y
escritura para la comunicación UART.

3.4. Depuración y pruebas


La depuración de la comunicación UART se realiza utilizando herramientas de depuración
proporcionadas por el IDE, como puntos de ruptura y ventanas de visualización de variables.
Las pruebas implican la verificación de la comunicación con dispositivos o módulos externos
y la confirmación de que los datos se transmiten y reciben correctamente.

4. MATERIALES Y EQUIPOS
MATERIAL CANTIDAD
Stm32F103C8T6 1
ST-LINK/V2 1
Conversor TTL-USB 1
Protoboard 1
Resistencia 220 1
Dipswitch 8 1
Tabla 1 Materiales y equipos

5. DISEÑO DEL CIRCUITO


Programar el STM32F103C8T6 para que pueda transmitir muestras digitales provenientes
de un puerto hasta una computadora. En la computadora se debe poder visualizar el
equivalente en decimal del dato que recibió. La transmisión de un dato, desde el STM32 a
la computadora, debe empezar cada vez que se presione la tecla “E” en el teclado de la
computadora. Debe configurar el periférico UART del microcontrolador en modo
interrupción.

Figura 1. Diagrama de conexiones

5.1. CONFIGURACIÓN DEL PUERTO UART


PASO 1. Configuramos el clock:

Configuramos el clock a 72Mhz en la aplicación de escritorio stm32Cube-IDE

Figura 2 Configuración del clock

PASO 2. Configuración del puerto UART:


En este caso trabajaremos con el puerto UART 1, ahora hay que desplegar el menú de
configuración debajo de la selección de canales, y revisar que los valores estén idénticos
a la foto. El valor del Baud Rate debe ser de 9600 Bits y el modo debe ser asíncrono
para poder ver los datos mediante el st-link. Los pines habilitados serán PA9 y PA10,
que son los puertos RT, RX respectivamente.

Figura 3 Configuración del puerto UART

PASO 3. HABILITAR OTRO PINES:

Configuraremos los pines de PB0 a PB1 y OA2 a PA7 los cuales utilizaremos para el dipswitch.
Figura 4 Configuración de pines

5.2. CONFIGURACIÓN APLICACIÓN TERA TERM


Al abrir la aplicación debemos seleccionar la opción “Serial”, luego entrara a “Setup” y
seleccionar la opción “serial port” y debe verse así:

Figura 5. Tera Term

5.3. CÓDIGO
PASO 4. GENERAR CÓDIGO

En este caso después de configurar los puertos presionamos el botón “save all”. Donde se
generará un código automáticamente y ya podremos hacerle las modificaciones.

#include "main.h"
#include "usart.h"
#include "gpio.h"
#include <stdio.h>
void SystemClock_Config(void);

uint8_t charToTransmit[8];

int main(void)
{

HAL_Init();

SystemClock_Config();

MX_GPIO_Init();
MX_USART1_UART_Init();

while (1)
{

if (HAL_UART_Receive(&huart1, (uint8_t *)charToTransmit, 1, HAL_MAX_DELAY) ==


HAL_OK)
{
if (charToTransmit[0] == 'E')
{
uint8_t binaryData = 0;

binaryData |= HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_1);


binaryData |= HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_0) << 1;
binaryData |= HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_7) << 2;
binaryData |= HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_6) << 3;
binaryData |= HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_5) << 4;
binaryData |= HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_4) << 5;
binaryData |= HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_3) << 6;
binaryData |= HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_2) << 7;

char binaryString[10]; // Incrementamos el tamaño en 1 para el carácter


'\0'
for (int i = 7; i >= 0; i--)
{
binaryString[7 - i] = ((binaryData >> i) & 1) + '0';
}
binaryString[8] = "\r", "\n" ;
//binaryString[9] = '\n';

// Transmit the binary data


HAL_UART_Transmit(&huart1, (uint8_t *)binaryString, 10, HAL_MAX_DELAY);

// Convert binaryData to decimal and transmit it


char decimalString[5];
sprintf(decimalString, "%d\r\n", binaryData);
HAL_UART_Transmit(&huart1, (uint8_t *)decimalString, 5, HAL_MAX_DELAY);
}
}
}

/* USER CODE END 3 */


}
void SystemClock_Config(void)
{
RCC_OscInitTypeDef RCC_OscInitStruct = {0};
RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};

/** Initializes the RCC Oscillators according to the specified parameters


* in the RCC_OscInitTypeDef structure.
*/
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
RCC_OscInitStruct.HSEState = RCC_HSE_ON;
RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1;
RCC_OscInitStruct.HSIState = RCC_HSI_ON;
RCC_OscInitStruct.[Link] = RCC_PLL_ON;
RCC_OscInitStruct.[Link] = RCC_PLLSOURCE_HSE;
RCC_OscInitStruct.[Link] = RCC_PLL_MUL9;
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
{
Error_Handler();
}

/** Initializes the CPU, AHB and APB buses clocks


*/
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;

if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK)


{
Error_Handler();
}
}

/* USER CODE BEGIN 4 */

/* USER CODE END 4 */

/**
* @brief This function is executed in case of error occurrence.
* @retval None
*/
void Error_Handler(void)
{
/* USER CODE BEGIN Error_Handler_Debug */
/* User can add his own implementation to report the HAL error return state */
__disable_irq();
while (1)
{
}
/* USER CODE END Error_Handler_Debug */
}

#ifdef USE_FULL_ASSERT
/**
* @brief Reports the name of the source file and the source line number
* where the assert_param error has occurred.
* @param file: pointer to the source file name
* @param line: assert_param error line source number
* @retval None
*/
void assert_failed(uint8_t *file, uint32_t line)
{
/* USER CODE BEGIN 6 */
/* User can add his own implementation to report the file name and line number,
ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
/* USER CODE END 6 */
}
#endif /* USE_FULL_ASSERT */

• Utilizamos la siguiente tabla para ver las especificaciones que estamos utilizando.

Tabla 2 Especificaciones de formato en la función sprintf


6. RESULTADOS EN TERA TERM

Figura 6. Resultado en Tera Term

7. CUESTIONARIO
7.1. Explicar los algoritmos utilizados en los distintos programas de la práctica.
Se configuro el STM32 con interrupciones y con pines de entrada pull up en el puerto A0-
A7, también se configuro el USART3 para la comunicación serial con la computadora.
En el código se determinó una letra ‘E’, que es la que habilita la lectura del puerto A una vez
sea recibido por el STM, y se realizó la lectura del puerto con IDR, por último el dato fue
enviado a la computadora para su visualización.
6.2. Explicar las diferencias de la comunicación serial síncrona y la comunicación
serial asíncrona.
La comunicación es síncrona cuando siempre existe una coordinación temporal entre el TX y
RX y los caracteres se TX contiguamente sin ningún bit adicional de sincronización.
La comunicación es asíncrona cuando estos pueden transmitirse en cualquier instante
aisladamente o en grupos, y no hay ninguna coordinación temporal escrita entre TX y RX.
7.2. Explicar las diferencias de la comunicación serial en modo sondeo y modo
interrupción.
• Sondeo.
El microprocesador se mantiene en un ciclo revisando continuamente el dispositivo externo.
Los cambios en el dispositivo de entrada son ignorados hasta la siguiente lectura.
• Interrupción.
La interrupción es un proceso de transferencia de datos, donde un dispositivo externo indica
que está listo para comunicarse o requiere atención.
La comunicación se inicia por el dispositivo externo en forma asíncrona.

8. CONCLUSIONES
• La comunicación mediante el puerto serial UART es esencial en muchos proyectos de
electrónica y sistemas embebidos. Configurar y utilizar UART en microcontroladores
STM32 es un proceso fundamental para lograr una comunicación eficiente y confiable.
Con la configuración adecuada, es posible intercambiar datos con otros dispositivos y
crear aplicaciones de IoT, sistemas de control y mucho más.
• Este informe proporciona una visión general de los pasos clave para configurar la
comunicación UART en un microcontrolador STM32. La implementación específica
puede variar según el modelo de STM32 y el IDE utilizado. Se recomienda consultar la
documentación y ejemplos proporcionados por STMicroelectronics y la comunidad de
desarrollo de STM32 para obtener información detallada y actualizada sobre el uso de
UART en tu microcontrolador STM32 específico.
• Se logró el objetivo de proporcionar una guía detallada que cubre todos los pasos
necesarios para configurar y utilizar la comunicación UART en un microcontrolador
STM32. Los pasos incluyeron la configuración de pines, la velocidad de baudios, y otros
parámetros esenciales.
• Se destacó la importancia de configurar correctamente la velocidad de baudios, el
número de bits de datos, los bits de parada y la paridad para garantizar una comunicación
UART confiable. Estos parámetros deben coincidir en ambos extremos de la
comunicación para evitar errores de transmisión.
• Se proporcionaron pautas generales para la depuración y pruebas de la comunicación
UART en un proyecto STM32. La depuración es esencial para identificar y solucionar
problemas de comunicación, mientras que las pruebas son necesarias para verificar la
funcionalidad con dispositivos o módulos externos.

9. BIBLIOGRAFÍA
• [Link]
• [Link]
• [Link] › ~rmariela › micro › unidad61

También podría gustarte