Введение в микросхему STM32F030
Чип STM32F030 — это недорогой 32-разрядный микроконтроллер ARM Cortex-M0 от STMicroelectronics. Он имеет до 32 КБ флэш-памяти и 4 КБ SRAM и может работать на частоте до 48 МГц. Он включает в себя различные периферийные устройства, такие как аналоговые компараторы, таймеры и интерфейсы I2C и SPI. STM32F030 также поддерживает приложения для управления двигателями и имеет широкий спектр встроенных аналоговых и цифровых периферийных устройств. Небольшой размер и низкое энергопотребление микросхемы делают ее идеальной для использования в различных приложениях, от бытовой электроники до медицинских и промышленных систем. Цена и производительность чипа делают STM32F030 отличным выбором для разработчиков, заботящихся о стоимости. Благодаря поддержке различных инструментов разработки, включая STM32Cube и графический инструмент конфигурации STM32CubeMX, с STM32F030 легко начать работу и разрабатывать инновационные приложения.

Параметры
— Процессор: ядро ARM Cortex-M0 с 32-разрядной архитектурой RISC — Рабочая
частота
: до 48 МГц — Память программы: до 32 КБ Flash
— ОЗУ: до 4
КБ — Источник тактовой частоты: внутренний 8 МГц или внешний 32
кГц — Тактовый выход: 2 x 32
кГц — Цифровой ввод/вывод: до 36
выводов ввода/вывода — Аналоговые входы: до 8 каналов
АЦП 12 бит — Таймеры: до 3 таймеров
16 бит — Коммуникационные интерфейсы: до 2 I2C, 2 USART, SPI, CAN
Архитектура системы
Внутренняя системная структура STM32F030 может быть просто разделена на 2 ведущих и 4 ведомых системы. Понятия «ведущий» и «ведомый» здесь относятся к Busmatrix:
- Ведущие
- Ядро Cortex-M0 Шина AHB
- GP-DMA
- Подчиненные
- Внутренняя SRAM
- Внутренняя Flash
- AHB2APB
- AHB к портам GPIO
Взаимосвязь между 2 ведущими устройствами и 4 ведомыми устройствами более подробно показана на следующем рисунке и обозначена:

Для моста AHB2APB, если вы хотите использовать периферийные устройства, подключенные к шине APB, вы должны сначала вызвать регистр, такой как RCC_AHBENR, чтобы включить периферийный такт, а периферийное устройство является драйвером периферийного устройства. Эти детали обычно обрабатываются в API драйвера ST.
Обзор памяти
В программе STM32F030 данные, регистры и порты ввода-вывода отображаются в 4 ГБ адресного пространства (32-разрядная машина). Карта памяти STM32F030 подробно описана в техническом описании.
SRAM
SRAM STM32F030 имеет размер 8 КБ и доступна в байтах, словах и полусловах. Этот раздел используется для хранения скомпилированного и связанного кода, данных и стека программы во время выполнения. Данные постоянно считываются из этой SRAM или записываются в нее во время выполнения программы.
Вспышка
Внутренняя флэш-память STM32F030 обычно достаточна для использования, так как она предназначена для этой цели. Она имеет 64 КБ пользовательского флэш-пространства. Флэш-память внутри микросхемы называется внутренней флэш-памятью или ПЗУ (ПЗУ и флэш-память отличаются тем, что ПЗУ не может быть стерта пользователем и фиксируется во время производства микросхемы, тогда как флэш-память может быть стерта и перезаписана в любое время).
Внутренняя флэш-память STM32F030 делится на два типа:
- 64 КБ пользовательского флэш-пространства: используется для загрузки кода .bin, сгенерированного компиляцией и линковкой пользователя.
- Информационная флэш-память: включает в себя опционные байты и системную память.
Байты опций могут использоваться для настройки некоторых функций микросхемы.
Системная память — это память микросхемы, которая содержит сегмент кода, зафиксированный во время производства микросхемы, который не является открытым исходным кодом и работу которого можно только угадывать. Системная память предназначена для работы в качестве встроенного загрузчика. Обычно она не используется для отладки. Типичное использование — подключение отладчика через интерфейс SWD к микросхеме и простая загрузка и отладка кода. Однако в продуктах интерфейс SWD может быть недоступен. В этом случае код .bin продукта можно загрузить и запустить через внутренний системный бутлоадер микросхемы через последовательный интерфейс, что является типичным процессом для обновления прошивки. STM предоставит интерфейс и демонстрацию использования системного бутлоадера, а также много связанной документации, объясняющей, как его использовать.
Конфигурация загрузки
Отладка через SWD называется «системным программированием», а загрузка и запуск программ с помощью загрузчика считается «прикладным программированием». STM имеет три настраиваемых режима загрузки для различных сценариев применения.
Настройка режима загрузки:
Во-первых, есть бут-контакт, который подключается к высокому или низкому уровню. При запуске чип проверяет уровень бут-контакта и переключается в соответствующий режим загрузки. Кроме того, nBOOT1 можно настроить в байте опций для выбора соответствующего режима загрузки.
Классификация режимов загрузки:
Существует три типа: Загрузка из пользовательской флэш-памяти, которая является наиболее распространенной; после компиляции и линковки загрузите код, выполните сброс и запустите свой собственный код флэш-памяти. Загрузка из системной памяти, которая использует внутренний загрузчик микросхемы для загрузки. Загрузка из SRAM.
Рамка для часов
Структура тактового генератора STM32F030 представлена ниже, а также приведены некоторые определения:
- HSI: называется высокоскоростным внутренним тактовым генератором, состоит из RC-генератора.
- HSE: называется высокоскоростным внешним тактовым генератором, может подключаться к внешнему кварцевому/керамическому резонатору или внешнему источнику тактовой частоты.
- LSI: называется низкоскоростным внутренним тактовым генератором, состоит из RC-генератора, имеет низкую частоту, а STM32F030 — 40 кГц.
- LSE: называется низкоскоростным внешним тактовым генератором, обычно подключается к кварцевому резонатору с внешней частотой 32,768 кГц.
- PLL: является выходным множителем фазовой автоподстройки частоты.
- HSI14 RC: источник тактовой частоты может использоваться только для АЦП.

Периферийные устройства, которые не указаны отдельно, обычно используют PCLK. Ниже приведен краткий список ситуаций, в которых необходимо включить AHB/APB в соответствии с конкретным кодом:
- Использование AHB в качестве источника тактовой частоты: GPIOA-F, TS, CRC, FLITF, SRAM, DMA1.
- Использование APB1 в качестве источника тактовой частоты: TIM2, TIM3, TIM6, TIM14, WWDG, SPI2, USART2, I2C1, I2C2, PWR, DAC, CEC.
- Использование APB2 в качестве источника тактовой частоты: SYSCFG, ADC1, TIM1, SPI1, USART1, TIM15, TIM16, TIM17, DBGMCU.
Функция сброса
Сброс является важной частью процесса запуска системы MCU. Когда микросхема начинает выполнять программу, она начинает с сброса, который является первым шагом после включения системы.
Механизм сброса Cortex-M0
В файле запуска Cortex-M0 всегда можно увидеть reset_handler, который находится в первой позиции векторной таблицы. Адрес Cortex-M0 — 0x0000 0004, и значение PC при запуске Cortex-M0 — это этот адрес. В reset_handler обычно вызывается реализованная пользователем функция SystemInit, которая настраивает тактовую частоту различных компонентов, необходимых для правильной работы системы, что облегчает ее нормальную работу в дальнейшем. Затем вызывается запись __main в библиотеке, которая должна выполнить некоторую начальную обработку библиотеки выполнения C и настроить стек.
Типы сброса
Существует три основных типа сброса для STM32F030: сброс питания, сброс системы и сброс домена RTC.
Сброс питания связан с источником питания микросхемы. Этот сброс запускается при включении питания и выходе из режима ожидания, и после сброса начинается инициализация системы.
Сброс системы запускается системой. То есть, питание нормальное, но если нажата кнопка сброса, соответствующий регистр сбрасывается программным обеспечением или запускается сторожевой таймер, происходит этот сброс. Когда происходит этот сброс, единственное отличие от сброса питания заключается в том, что соответствующий бит в регистре RCC_CSR, используемый для указания источника сброса, не сбрасывается, в то время как все другие регистры сбрасываются в состояние сразу после включения питания.
Триггером сброса домена RTC также является программный триггер. Он запускается путем записи в соответствующий бит в регистре RCC_BDCR. Однако этот тип сброса влияет только на RTC и кварц LSE и т. д.
Цикл непрерывного совершенствования
CRC (циклический избыточный контроль) — это алгоритм проверки, который проверяет целостность передаваемых/хранившихся данных. Поскольку он может использоваться во многих местах, STM32F030 реализует этот алгоритм с помощью аппаратного блока вычисления CRC в микросхеме. Когда приложению необходимо использовать CRC, аппаратный блок может управляться программным обеспечением для реализации требований (конечно, CRC также может быть реализован в программном обеспечении, но его скорость определенно не такая высокая, как у аппаратного CRC).

Процесс CRC реализован внутри микросхемы, поэтому вам нужно только знать, как его использовать, и это очень просто. Запишите исходные данные, которые необходимо вычислить, в регистр данных (вход), запустите вычисление блока CRC, а затем прочитайте вычисленные результаты в регистре данных (выход).
Фактически, вход и выход регистра данных CRC STM32F030 используют один и тот же регистр, поскольку сначала необходимо ввести данные, а затем получить выходные данные, прежде чем переходить к следующему вводу. Из этого процесса видно, что вход и выход не используются одновременно, поэтому можно напрямую использовать регистр для мультиплексирования двух функций. Регистр может работать в 32-битном, 16-битном и 8-битном режимах, что позволяет удовлетворить различные требования.
Плата разработчика STM32F030 — STM32f0308 Discovery
Разработка этого микроконтроллера STM32F030 основана на новейшей библиотеке HAL STM32, коде инициализации, сгенерированном STM32CubeMX, а его компилятором является GCC. Ниже приведены его схема, схема печатной платы и собранная плата. STM32 предоставляет множество плат разработки начального уровня, таких как серии Discovery и Nucleo. STM32F0308 Discovery — одна из плат серии Discovery, оснащенная чипом STM32F030.
Основные функции и характеристики плат разработчика серии Discovery схожи, но возможности сопутствующих микросхем могут различаться. Характеристики stm32f0308 discovery следующие:
Удобное расширение портов ввода-вывода: для разработки достаточно подключить один USB-кабель к ПК. Порты ввода-вывода микросхемы STM32F030 на плате разработчика расширены, что упрощает подключение к различным устройствам с помощью проводов DuPont.
Интерфейс отладки: плата разработчика оснащена встроенным интерфейсом отладки SWD, который реализован с помощью другого чипа Cortex-M3 от ST (в настоящее время версия JLINK v9, представленная на рынке, также должна использовать чип Cortex-M3 от ST). Этот интерфейс отладки SWD можно использовать отдельно через соединение перемычки, что означает, что stm32f0308-discovery можно использовать в качестве автономного отладчика SWD.
Гибкое питание: сама плата разработчика питается от USB, но имеет схему преобразования напряжения, которая может выводить питание 5 В и 3 В для использования внешними устройствами (обратите внимание, что ток питания по-прежнему ограничен). Как правило, небольшие модули и интерфейсы могут питаться непосредственно от нее.
Периферийные устройства на уровне платы: поскольку это недорогая плата разработчика начального уровня, встроенные периферийные устройства очень просты и состоят из двух кнопок и четырех светодиодов. Одна из двух кнопок используется для сброса, а другая — программируемая пользователем. Из четырех светодиодов один является индикатором питания, один — индикатором состояния отладки SWD, а остальные два могут быть запрограммированы для управления. Таким образом, на самом деле периферийные устройства на плате, которые можно запрограммировать для управления, — это всего одна пользовательская кнопка и два пользовательских светодиода.
Производительность
- Зарезервированный интерфейс SWD для отладки с помощью ST-LINK;
- Интерфейс PA4 (выход ЦАП) с высокой производительностью порта;
- Две сенсорные кнопки и 3 светодиода для удобной отладки;
- Интерфейс LCD1602 и интерфейс, совместимый с распространенными TFT LCD;
- Использование суперконденсатора в качестве резервного источника питания RTC;
- Интерфейс USB с защитой питания;
- Несколько точек тестирования источника питания для осциллографа или мультиметра.



