user

Авторизация

Добро пожаловать!

Регистрация

Graf

stm32

Начало работы с микроконтроллерами STM32 ARM Cortex

 В этом вводном руководстве мы поближе познакомимся с микроконтроллерами STM32 на базе ARM-Cortex. Мы обсудим схему сброса и управления тактовой частотой с помощью дерева тактовой частоты, которое мы настроим позже с помощью CubeMX.

Микроконтроллеры на базе STM32

 Серия микроконтроллеров STM32 — одна из самых популярных среди 32-битных микроконтроллеров. STMicroelectronics предлагает несколько линеек продуктов для деталей STM32. Существуют линейки продуктов с низким энергопотреблением, массовые и высокопроизводительные. И более широкий выбор деталей, ориентированных на конкретное применение, что позволяет вам выбрать нужную деталь для вашего проекта.

 Существуют недорогие решения FullSpeed ​​USB, CAN, LIN, Ethernet, DCMI (интерфейс цифровой камеры) и CryptoEngine для криптографических приложений, а также гораздо более мощные периферийные устройства. Как цифровые, так и аналоговые, такие как АЦП, ЦАП, операционные усилители, компараторы и т. д.

 Платы разработки, которые мы выбрали для этой серии руководств, — Nucleo32-L432KC и Blue Pill. Вот аппаратная периферия и схема выделения ARM-Core для части микроконтроллера STM32L432KC.

 Вы можете использовать программный инструмент STMicroelectronics под названием «STM32 MCU Finder». По сути, это инструмент параметрического поиска, который помогает вам легко найти удобный микроконтроллер с необходимыми характеристиками, который вы выбираете в инструменте с графическим интерфейсом.

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

 Nucleo32-L432KC

STM32L432KC Datasheet & Documents

 Blue Pill STM32F103

STM32F103C8T6 Datasheet & Documents

Процессор ARM Cortex-M4 + FPU

 Arm® Cortex®-M4 с процессором FPU — это последнее поколение процессоров Arm® для встраиваемых систем. Он был разработан, чтобы предоставить недорогую платформу, отвечающую потребностям реализации MCU, с уменьшенным количеством выводов и низким энергопотреблением, обеспечивая при этом выдающуюся вычислительную производительность и улучшенную реакцию на прерывания.

 Arm® Cortex®-M4 с 32-битным RISC-процессором FPU отличается исключительной эффективностью кода, обеспечивая высокую производительность, ожидаемую от ядра Arm®. Процессор поддерживает набор инструкций DSP, которые обеспечивают эффективную обработку сигналов и выполнение сложных алгоритмов.

 Его FPU одинарной точности ускоряет процесс разработки программного обеспечения и повышает целевую производительность. Благодаря встроенному ядру Arm® микроконтроллер STM32L432KC может использоваться в широком спектре приложений. Как мы увидим на протяжении всего курса.

 Другой микроконтроллер STM32F103C8 имеет ядро ​​Cortex-M3, в котором отсутствуют операции FPU и DSP, что может быть огромной ошибкой в ​​​​определенных приложениях, однако в конечном итоге это гораздо более дешевый целевой MCU.

 Адаптивный ускоритель реального времени (ART)™

 ART Accelerator™ — это ускоритель памяти, оптимизированный для процессоров Arm® Cortex® M4, соответствующих отраслевому стандарту STM32. Он уравновешивает преимущество Arm® Cortex®-M4 в производительности перед технологиями флэш-памяти, которые обычно требуют, чтобы процессор ждал флэш-памяти на более высоких частотах.

 Чтобы обеспечить производительность процессора около 100 DMIPS при частоте 80 МГц, ускоритель реализует очередь предварительной выборки инструкций и кэш ветвей, что увеличивает скорость выполнения программы из 64-битной флэш-памяти. По данным бенчмарка CoreMark, производительность, достигнутая благодаря ускорителю ART, эквивалентна выполнению программы в состоянии ожидания 0 из флэш-памяти на частоте процессора до 80 МГц.

 Блок защиты памяти (МПУ)

 Блок защиты памяти (MPU) используется для управления доступом ЦП к памяти, чтобы предотвратить случайное повреждение одной задачей памяти или ресурсов, используемых любой другой активной задачей. Эта область памяти разделена на 8 охраняемых территорий, которые, в свою очередь, можно разделить на 8 подобластей.

 MPU особенно полезен для приложений, в которых критический или сертифицированный код необходимо защитить от неправильного поведения других задач. Обычно им управляет RTOS (операционная система реального времени). Если программа обращается к ячейке памяти, которая запрещена MPU, ОСРВ может обнаружить это и принять меры.

 Брандмауэр

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

 Режимы загрузки

 При запуске вывод BOOT0 или бит опции nSWBOOT0 и бит опции BOOT1 используются для выбора одного из трех вариантов загрузки:

  • Загрузка с пользовательской Flash
  • Загрузка из системной памяти
  • Загрузка из встроенной SRAM

 Значение BOOT0 может исходить от контакта PH3-BOOT0 или из бита опции в зависимости от значения бита пользовательской опции, чтобы при необходимости освободить площадку GPIO. Механизм проверки пустости флэш-памяти реализован для принудительной загрузки с системной флэш-памяти, если первая ячейка флэш-памяти не запрограммирована и если выбор загрузки настроен на загрузку с основной флэш-памяти.

 Загрузчик находится в системной памяти. Он используется для перепрограммирования флэш-памяти с помощью USART, I2C, SPI или USB FS в режиме устройства через DFU (обновление прошивки устройства).

Архитектура системы и матрица шин   

 STM32L432KC (ARM Cortex-M4) Архитектура

 Система в основном состоит из 32-битной многослойной матрицы шины AHB (выделена желтым), которая соединяет между собой следующие аппаратные компоненты:

 Пять мастеров:

  • Cortex®-M4 с ядром FPU I-bus
  • Cortex®-M4 с D-шиной ядра FPU
  • Cortex®-M4 с ядром FPU S-bus
  • DMA1
  • DMA2

 Семь рабов:

  • Внутренняя флэш-память на шине ICode
  • Внутренняя флэш-память на шине DCode
  • Внутренняя SRAM1
  • Внутренняя SRAM2
  • Периферийные устройства AHB1, включая мосты AHB-APB и периферийные устройства APB (подключенные к APB1 и APB2)
  • Периферийные устройства AHB2
  • Контроллер внешней памяти (QUAD SPI)

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

 ЦП может выполнять некоторые вычисления и рабочую нагрузку, пока модуль DMA1 перемещает данные, полученные через SPI, в область памяти SRAM1. Все делается одновременно без вмешательства ЦП или прерываний при получении каждого отдельного байта.

 Многоуровневая матрица шины AHB

 BusMatrix управляет арбитражем доступа между мастерами. В арбитраже используется алгоритм Round Robin. BusMatrix состоит из пяти главных устройств (CPU AHB, системная шина, шина DCode, шина ICode, DMA1 и шина DMA2) и семи подчиненных устройств (FLASH, SRAM1, SRAM2, AHB1 (включая APB1 и APB2), AHB2 и QUAD SPI).

  • S0 – I-Bus : Эта шина соединяет шину команд ядра Cortex®-M4 с BusMatrix. Эта шина используется ядром для получения инструкций.
  • S1 – D-Bus : Эта шина соединяет шину данных ядра Cortex®-M4 с BusMatrix. Эта шина используется ядром для буквальной загрузки и доступа к отладке.
  • S2 – S-Bus : Эта шина соединяет системную шину ядра Cortex®-M4 с BusMatrix. Эта шина используется ядром для доступа к данным, расположенным в периферийной области или области SRAM.
  • S3, S4 – шина DMA : эта шина соединяет главный интерфейс AHB DMA с BusMatrix. Целями этой шины являются SRAM1 и SRAM2, периферийные устройства AHB1, включая периферийные устройства APB1 и APB2, периферийные устройства AHB2 и внешняя память. через QUAD SPI.

 Автобусные мосты AHB/APB

 Два моста AHB/APB обеспечивают полную синхронизацию между AHB и двумя шинами APB, позволяя гибко выбирать периферийную частоту. отображение адресов периферийных устройств, подключенных к этому мосту.

 После каждого сброса устройства все периферийные часы отключаются (кроме интерфейса SRAM1/2 и флэш-памяти). Перед использованием периферийного устройства необходимо включить его тактовую частоту в регистрах RCC_AHBxENR и RCC_APBxENR.

 Карта памяти

RCC и дерево часов   

 Резекция и тактовый контроль (RCC)

 Наша следующая тема — схема резекции и тактового управления (RCC). Начнем со схемы сброса и ее функциональности. Существует три типа сброса: сброс системы, сброс по питанию и сброс резервного домена.

 Сброс питания генерируется при возникновении одного из следующих событий:

  • сброс при снижении напряжения (BOR).
  • при выходе из режима ожидания.
  • при выходе из режима выключения.

 При сбросе системы все регистры возвращаются к значениям сброса, если иное не указано в описании регистра. Источник сброса можно определить, проверив флаги сброса в регистре управления/состояния RCC_CSR. Сброс системы генерируется при возникновении одного из следующих событий:

  • Низкий уровень на выводе NRST (внешний сброс)
  • Событие сторожевого таймера окна (сброс WWDG)
  • Независимое сторожевое событие (сброс IWDG)
  • Событие брандмауэра (сброс брандмауэра)
  • Программный сброс (сброс ПО)
  • Сброс безопасности режима низкого энергопотребления 
  • Сброс загрузчика опциональных байтов 
  • Сброс при отключении питания

 Программный сброс: бит SYSRESETREQ в регистре управления прерываниями и сбросом приложений Cortex®-M4 должен быть установлен для принудительного программного сброса на устройстве.

 Сброс резервного домена имеет два конкретных сигнала сброса. Сброс резервного домена генерируется при возникновении одного из следующих событий:

  1. Программный сброс, запускаемый установкой бита BDRST в резервном регистре управления доменом (RCC_BDCR).
  2. Включение питания V DD или V BAT , если оба источника питания ранее были отключены. Сброс резервного домена влияет только на генератор LSE, RTC, резервные регистры и резервный регистр управления доменом RCC.

 Часовое дерево

 Для управления системными часами можно использовать четыре различных источника синхронизации (SYSCLK):

  1. HSI16 (высокоскоростной внутренний) тактовый генератор RC 16 МГц
  2. MSI (многоскоростной внутренний) RC-генератор тактового сигнала
  3. Тактовый генератор HSE, от 4 до 48 МГц
  4. Часы ФАПЧ

 MSI используется в качестве источника системной синхронизации после запуска из режима сброса, настроенного на частоту 4 МГц.

 Устройства имеют следующие дополнительные источники синхронизации:

  • Низкоскоростной внутренний RC 32 кГц (LSI RC), который управляет независимым сторожевым таймером и, опционально, RTC, используемым для автоматического пробуждения из режимов остановки и ожидания.
  • Внешний низкоскоростной кристалл с частотой 32,768 кГц (кристалл LSE), который дополнительно управляет часами реального времени (RTCCLK).
  • Внутренние источники синхронизации RC 48 МГц (HSI48) для потенциального управления USB FS, SDMMC и RNG.

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

 Мы будем использовать CubeMX на этапе настройки дерева часов. Где мы можем установить желаемую скорость SYSCLK (до 80МГц для L432KC или до 72МГц для F103C8). И мы также можем установить тактовую частоту для различных периферийных устройств, шин и оборудования USB.

 И это все, что касается этого урока. В следующем уроке мы подробнее рассмотрим библиотеки LL + HAL, которые мы будем использовать позже при настройке программного инструмента CubeMX. После этого мы начнем разбираться с аппаратными периферийными устройствами и начнем выполнять несколько практических лабораторных примеров.