Microcontrolador STM32F407: características, especificaciones, proyecto de desarrollo

En el campo de los sistemas integrados, los microcontroladores, como componentes clave, desempeñan un papel importante en escenarios como el control automático, el Internet de las cosas y las aplicaciones industriales. El STM32F407 lanzado por ST Company es un microcontrolador de 32 bits de alto rendimiento y bajo consumo que ha atraído la atención del mercado debido a sus excelentes funciones y facilidad de uso. En este artículo, profundizaremos en las características, especificaciones, áreas de aplicación y entorno de desarrollo del STM32F407.

Acerca de STM32F407

La serie de chips STM32F407 es un microcontrolador de alto rendimiento lanzado por STMicroelectronics basado en el núcleo ARM Cortex™-M4. Utiliza un proceso NVM de 90 nanómetros y ART (Adaptive Real-Time Memory Accelerator™).

Características del STM32F407

El STM32F407 se basa en el núcleo ARM Cortex-M4, tiene instrucciones DSP y una unidad de punto flotante (FPU), y tiene una frecuencia de reloj de hasta 168 MHz. Estas son sus principales características:

  • Alto rendimiento

Equipado con un núcleo Cortex-M4 de 32 bits, que admite operaciones de punto flotante y baja latencia de ciclo de reloj, puede proporcionar capacidades de computación de alta velocidad.

  • Bajo consumo

Se utiliza tecnología de ajuste dinámico de voltaje para cambiar entre diferentes modos de consumo de energía y reducir el consumo energético del sistema.

  • Múltiples configuraciones de almacenamiento

Hasta 1 MB de memoria flash y 192 KB de RAM para satisfacer los requisitos de espacio de almacenamiento de diversas aplicaciones.

  • Potente compatibilidad con periféricos

El STM32F407 cuenta con numerosas interfaces de comunicación, como SPI, I2C, UART, etc.; admite hasta 3 convertidores ADC de 12 bits, 2 convertidores DAC y temporizadores de alta resolución.

  • Seguridad y fiabilidad

El módulo CRC de hardware integrado proporciona una función de detección de errores de suma de comprobación en tiempo real; el temporizador Watchdog puede supervisar el estado de funcionamiento del sistema y evitar bloqueos de software.

Especificaciones del STM32F407

SpecificationDetails
MCU ModelSTM32F407ZGT6
Flash Memory1MB
Clock FrequencyUp to 168MHz
ADCThree 12-bit
DACTwo 12-bit
DMATwo DMA controllers
TimersUp to 17 timers
GPIOUp to 120 configurable GPIO pins
InterfacesBuilt-in I2C, SPI, USART, I2S, CAN, and SDIO communication interfaces

Aplicación del STM32F407

Gracias a su flexibilidad y fácil escalabilidad, el STM32F407 se utiliza ampliamente en diversos escenarios inteligentes, entre los que se incluyen, entre otros:

  • Dispositivos del Internet de las cosas (IoT)

El bajo consumo energético del STM32F407 lo hace adecuado como unidad central de procesamiento de dispositivos IoT, como sensores y controladores.

  • Automatización industrial

En campos como las máquinas herramienta CNC y los robots industriales, el STM32F407 puede encargarse del control del sistema, la adquisición y el procesamiento de datos y la comunicación con dispositivos periféricos.

  • Electrónica de consumo

El STM32F407 se puede utilizar en campos de la electrónica de consumo, como hogares inteligentes y dispositivos portátiles, para satisfacer las necesidades de los consumidores en cuanto a rendimiento y consumo de energía.

Recursos de desarrollo STM32F407

Para facilitar el trabajo de los desarrolladores, ST proporciona una gran cantidad de recursos de desarrollo y herramientas de apoyo, entre los que se incluyen:

  • Placas de desarrollo de las series Discovery y Nucleo
  • Entornos de desarrollo integrados (IDE) como Keil uVision e IAR
  • Depuradores JLINK, CMSIS-DAP, ULINK o STLINK
  • Kit de desarrollo de software STM32CubeF4 basado en la biblioteca HAL/HLL

Estos recursos ayudan a simplificar el proceso de desarrollo, acortar el ciclo de desarrollo y permiten a los desarrolladores obtener asistencia técnica, compartir experiencias y aprender recursos.

Biblioteca HAL

La biblioteca HAL (Hardware Abstraction Layer, capa de abstracción de hardware) es, en realidad, el paquete de controladores periféricos de STM32F407. El archivo de código se encuentra en la ruta:\Drivers\STM32F4xx_HAL_Driver.

An Example of STM32F4xx HAL Library
An Example of STM32F4xx HAL Library

CMSIS

CMSIS (Cortex Microcontroller Software Interface Standard) es un paquete de controladores diseñado oficialmente por ARM. El diagrama de bloques es el siguiente:

Overview
Estructura CMSIS (Crédito de la imagen: Keil)

Con este paquete de software CMSIS, se espera que ARM unifique los controladores periféricos, el procesamiento de señales digitales DSP, los descargadores y las API de varios sistemas operativos en tiempo real (RTOS) convencionales de diversos fabricantes de chips.

STM32CubeMX es un software de desarrollo gráfico lanzado por ST en 2014 para facilitar a los usuarios la configuración de relojes, periféricos, pines, RTOS y diversos middleware. El diagrama de bloques es el siguiente:

Open the STM32CubeMX

A través de este software gráfico, puede generar fácilmente código de ingeniería y compilers compatibles como MDK, IAR y TrueSTUDIO.

Proyecto de placa de desarrollo STM32F407

En este experimento de desarrollo, utilizamos la biblioteca HAL para encender un LED o hacer que un LED se encienda de forma intermitente.

Paso 1: Abra STM32CubeMX, busque el pin correspondiente al LED y configúrelo como salida GPIO.

Configure LED's pin as GPIO output in STM32CubeMX
Configure LED's pin as GPIO output in STM32CubeMX

Paso 2: Seleccione Serial Wire en SYS. Solo si está seleccionado, los proyectos posteriores se podrán grabar normalmente utilizando st-link.

Select Serial Wire Debug in SYS Mode and Configuration
Select Serial Wire Debug in SYS Mode and Configuration

Paso 3: Encienda el reloj externo y habilítelo para que alcance la frecuencia máxima de 407 168 MHz.

Select High Speed Clock (HSE) in RCC Mode and Configuration
Select High Speed Clock (HSE) in RCC Mode and Configuration

Paso 4: Generar código de ingeniería.

Generate Code for STM32F407 Project in STM32CubeMX
Generate Code for STM32F407 Project in STM32CubeMX

El código generado es el que se muestra a continuación, y las configuraciones de los pines y el reloj están todas configuradas.

				
					void MX_GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct= {0}:

/*GPIO Ports Clock Enable */
_ _HAL_RCC_GPIOF_CLK_ENABLE():
_ _HAL_RCC GPIOH_CLK_ENABLE():
_ _HAL RCC GPIOA CLK_ENABLE():

/*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(GPIOF, GPIO_PIN_9, GPIO_PIN_SET):
HAL_GPIO_WritePin(GPIOF, GPIO_PIN_10, GPIO_PIN_RESET):

/*Configure GPIO pins:PF9 PF10 */
GPIO_InitStruct.Pin = GPIO_PIN_9|GPIO_PIN_10:
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP:
GPIO_InitStruct.Pul1 =GPIO_NOPULL:
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW:
HAL_GPIO_Init(GPIOF, &GPIO_InitStruct):

/*EXTI interrupt init*/
HAL_NVIC_SetPriority(EXTI2_IRQn, 0, 0):
HAL NVIC_EnableIRQ(EXTI2_IRQn):
HAL_NVIC_SetPriority(EXTI3_IRQn, 0, 0):
HAL_NVIC_EnableIRQ(EXTI3_IRQn):
HAL_NVIC_SetPriority(EXTI4_IRQn, 0, 0):
HAL_NVIC_EnableIRQ(EXTI4_IRQn):

}
				
			

A continuación, escribe el programa para controlar la luz LED en while(1) de la función principal.

				
					while (1)
{
/* USER CODE END WHILE */

//Light up the LED
//HAL_GPIO_WritePin(GPIOF, GPIO_PIN_10|GPIO_PIN_9, GPIO_PIN_RESET);

{
//LED flashes
HAL_GPIO_TogglePin(GPIOF, GPIO_PIN_9|GPIO_PIN_10);
HAL_Delay(1000);
}
/* USER CODE BEGIN 3 */
}
				
			

Compartir en:

Scroll al inicio

Cotización