Микроконтроллер STM32F407: особенности, технические характеристики, проект разработки

В области встраиваемых систем микроконтроллеры, как ключевые компоненты, играют важную роль в таких сценариях, как автоматическое управление, Интернет вещей и промышленные приложения. STM32F407, выпущенный компанией ST, представляет собой высокопроизводительный 32-разрядный микроконтроллер с низким энергопотреблением, который привлек внимание рынка благодаря своим превосходным функциям и простоте использования. В этой статье мы подробно рассмотрим особенности, технические характеристики, области применения и среду разработки STM32F407.

О STM32F407

Серия микросхем STM32F407 — это высокопроизводительные микроконтроллеры, выпущенные компанией STMicroelectronics на базе ядра ARM Cortex™-M4. В них используется 90-нанометровый процесс NVM и технология ART (Adaptive Real-Time Memory Accelerator™).

Особенности STM32F407

STM32F407 основан на ядре ARM Cortex-M4, имеет инструкции DSP и блок с плавающей запятой (FPU), а также тактовую частоту до 168 МГц. Вот его основные характеристики:

  • Высокая производительность

Оснащен 32-разрядным ядром Cortex-M4, которое поддерживает операции с плавающей запятой и низкую задержку тактового цикла, что обеспечивает высокую скорость вычислений.

  • Низкое энергопотребление

Технология динамической регулировки напряжения используется для переключения между различными режимами энергопотребления и снижения энергопотребления системы.

  • Несколько конфигураций памяти

До 1 МБ флэш-памяти и 192 КБ ОЗУ для удовлетворения требований к объему памяти различных приложений.

  • Мощная поддержка периферийных устройств

STM32F407 имеет богатый набор интерфейсов связи, таких как SPI, I2C, UART и т. д.; он поддерживает до 3 12-разрядных АЦП, 2 ЦАП и таймеры высокого разрешения.

  • Безопасность и надежность

Встроенный аппаратный модуль CRC обеспечивает функцию обнаружения ошибок контрольной суммы в режиме реального времени; таймер Watchdog может контролировать состояние работы системы и предотвращать программные тупики.

Технические характеристики STM32F407

ПараметрОписание
Модель микроконтроллераSTM32F407ZGT6
Флеш-память1 МБ
Тактовая частотаДо 168 МГц
АЦПТри 12-разрядных АЦП
ЦАПДва 12-разрядных канала ЦАП
DMAДва контроллера DMA
ТаймерыДо 17 таймеров
GPIOДо 120 настраиваемых линий GPIO
ИнтерфейсыВстроенные интерфейсы I2C, SPI, USART, I2S, CAN и SDIO

Применение STM32F407

Благодаря своей гибкости и простой масштабируемости, STM32F407 широко используется в различных интеллектуальных сценариях, включая, но не ограничиваясь:

  • Устройства Интернета вещей (IoT)

Низкое энергопотребление STM32F407 делает его подходящим в качестве основного процессора для устройств IoT, таких как датчики и контроллеры.

  • Промышленная автоматизация

В таких областях, как станки с ЧПУ и промышленные роботы, STM32F407 может отвечать за управление системой, сбор и обработку данных, а также связь с периферийными устройствами.

  • Потребительская электроника

STM32F407 может использоваться в бытовой электронике, например в умных домах и носимых устройствах, для удовлетворения требований потребителей к производительности и энергопотреблению.

Ресурсы для разработки на базе STM32F407

Для облегчения работы разработчиков ST предоставляет богатый набор ресурсов для разработки и инструментальную поддержку, в том числе:

  • платы для разработки серий Discovery и Nucleo
  • Интегрированные среды разработки (IDE), такие как Keil uVision и IAR
  • JLINK, CMSIS-DAP, ULINK или отладчик STLINK
  • Комплект для разработки программного обеспечения STM32CubeF4 на основе библиотеки HAL/HLL

Эти ресурсы помогают упростить процесс разработки, сократить цикл разработки и позволяют разработчикам получать техническую поддержку, обмениваться опытом и изучать ресурсы.

Библиотека HAL

Библиотека HAL (Hardware Abstraction Layer) — это пакет драйверов периферийных устройств для STM32F407. Файл с кодом находится по пути:\Drivers\STM32F4xx_HAL_Driver.

An Example of STM32F4xx HAL Library
Пример библиотеки HAL STM32F4xx

CMSIS

CMSIS (Cortex Microcontroller Software Interface Standard) — это пакет драйверов, официально разработанный компанией ARM. Блок-схема выглядит следующим образом:

Overview
Структура CMSIS (Изображение предоставлено Keil)

С помощью этого пакета программного обеспечения CMSIS компания ARM планирует унифицировать периферийные драйверы, цифровую обработку сигналов DSP, загрузчики и API различных основных RTOS от разных производителей микросхем.

STM32CubeMX — это графическое программное обеспечение для разработки, выпущенное компанией ST в 2014 году, чтобы облегчить пользователям настройку тактовых генераторов, периферийных устройств, выводов, RTOS и различного промежуточного программного обеспечения. Блок-схема выглядит следующим образом:

Open the STM32CubeMX

С помощью этого графического программного обеспечения вы можете легко генерировать инженерный код и поддерживать компиляторы, такие как MDK, IAR и TrueSTUDIO.

Проект платы разработчика STM32F407

В этом эксперименте по разработке мы используем библиотеку HAL для зажигания светодиода или создания светодиодной подсветки.

Шаг 1: Откройте STM32CubeMX, найдите вывод, соответствующий светодиоду, и настройте его как вывод GPIO.

Configure LED's pin as GPIO output in STM32CubeMX
Настройка вывода светодиода как выхода GPIO в STM32CubeMX

Шаг 2: Выберите Serial Wire в SYS. Только если он выбран, последующие проекты могут быть нормально записаны с помощью st-link.

Select Serial Wire Debug in SYS Mode and Configuration
Выбор Serial Wire Debug в разделе SYS → Mode and Configuration

Шаг 3: Включите внешний тактовый генератор и настройте его на максимальную частоту 407 168 МГц.

Select High Speed Clock (HSE) in RCC Mode and Configuration
Выбор High Speed Clock (HSE) в разделе RCC → Mode and Configuration

Шаг 4: Сгенерируйте инженерный код.

Generate Code for STM32F407 Project in STM32CubeMX
Генерация кода проекта STM32F407 в STM32CubeMX

Сгенерированный код показан ниже, а конфигурации выводов и тактовых генераторов настроены.

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

}
				
			

Затем напишите программу для управления светодиодной лампой в while(1) основной функции.

				
					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 */
}
				
			

Проверка питания, памяти и периферии STM32F407

До выпуска схемы сопоставьте характеристики STM32F407 с требованиями к запуску платы. Для ARM STM32F407 заранее проверьте дерево тактирования, объём Flash и SRAM, каналы АЦП, таймеры, маршрутизацию DMA и разъём отладки, чтобы нужные функции оставались доступными после трассировки.

Проверка проекта

  • До трассировки проверьте распиновку выбранного корпуса, загрузочные выводы, доступ SWD и домены питания.
  • Предусмотрите временной запас для USB, CAN, SPI и скоростных таймеров, использующих общие ресурсы микроконтроллера.
  • Убедитесь, что SRAM, внешняя память и задержки прерываний отвечают не только требованиям первой демонстрационной платы, но и плану дальнейшего развития прошивки.

Когда характеристики STM32F407 определяют выбор платы

При выборе корпуса, количества аналоговых каналов, таймеров управления двигателем, Ethernet или USB и нагрузки реального времени на Arm Cortex-M4 проверяйте характеристики STM32F407 до окончательного размещения разъёмов и согласования системы питания.

Частые вопросы

Как оценивать характеристики STM32F407 при выборе микроконтроллера? Начните с частоты ядра, объёма Flash и SRAM, разрядности АЦП, таймеров, интерфейсов и числа выводов. Затем проверьте, какие блоки периферии могут работать одновременно без конфликтов.

Что сильнее всего влияет на первоначальную отладку STM32F407? Обычно скорость запуска платы зависит от конфигурации тактирования, доступа SWD, поведения при сбросе, распределения DMA и выбранных таймеров и интерфейсов связи.

Поделиться:

Прокрутить вверх

Instant Quote

Мгновенный расчет