Научная статья на тему 'Особенности работы с микроконтроллером stm32'

Особенности работы с микроконтроллером stm32 Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
1846
247
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
МИКРОКОНТРОЛЛЕР / ВЫСОКАЯ ПРОИЗВОДИТЕЛЬНОСТЬ / ЦЕНТРАЛЬНЫЙ ПРОЦЕССОВ / ЭНЕРГОПОТРЕБЛЕНИЕ / MICROCONTROLLER / HIGH PERFORMANCE / CENTRAL PROCESSES / POWER CONSUMPTION

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Басс Артем Владимирович

Рассматриваются технические характеристики, особенности, преимущества и недостатки микроконтроллера общего применения на базе ядра ARM STM 32. Помимо этого, подробно разбирается внутреннее устройство данного микроконтроллера, реализация выполнения запросов прерываний, обработки исключительных ситуаций и устройство внутренней памяти.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

FEATURES OF WORKING WITH STM32 MICROCONTROLLER

The technical characteristics, features, advantages and disadvantages of a generalpurpose microcontroller based on the ARM STM32 core are considered. In addition, the internal structure of this microcontroller, the implementation of the execution of interrupt requests, exception handling, and the internal memorv device areanalvzed in detail.

Текст научной работы на тему «Особенности работы с микроконтроллером stm32»

УДК 621.391

ОСОБЕННОСТИ РАБОТЫ С МИКРОКОНТРОЛЛЕРОМ STM32

А.В. Басс

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

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

На протяжении последних лет одним из главных направлений в области разработки микроконтроллеров являлась адаптация ARM7 и ARM9 как ядер для микроконтроллеров общего применения. Компания ST Microelectronics выпустила первые микроконтроллеры на базе ядра ARM Cortex-3M - STM32. Эти устройства устанавливают новые стандарты производительности и цены, способности выполнения алгоритмов управления жесткого реального времени при низком энергопотреблении. Ядра ARM7 и ARM9 были унаследованы от систем на кристалле (SoC). Особенно сильно это проявляется во время обработки исключительных ситуаций и прерываний из-за того, что каждый производитель реализовывал своё собственное решение.

Cortex M3 представляет из себя стандартизированное микроконтроллерное ядро, выходящее за пределы ЦПУ. Оно является сердцем микроконтроллера и включает в себя систему прерываний, системный таймер, систему отладки и карту памяти. Cortex-M3 разработан на основе Гарвардской архитектуры памяти и содержит большое количество шин, которые позволяют выполнять операции параллельно, увеличивая общую производительность. Данное семейство ядер также поддерживает установку и сброс бита в пределах 1 Мб с помощью метода, именуемого «сегментация битов», при помощи которого осуществляется эффективный доступ к регистрам периферийных устройств и флагам в SRAM, без использования полноценных булевых операций.

Преимущества Cortex-M3

Одним из ключевых компонентов Cortex-M3 является Контроллер Вложенных Векторных Прерываний (NVIC). NVIC имеет стандартизированную структуру прерываний для всех микроконтроллеров на основе Cortex и отличается непревзойденными возможностями обработки прерываний. NVIC содержит вектора прерываний для 240 источников, причем каждому источнику прерывания можно индивидуально назначить приоритет. С момента получения запроса прерывания до начала выполнения первой команды обработчика затрачивается всего лишь 12 циклов тактового сигнала. Это становится возможным за счёт автоматического размещения информации на стеке, осуществляемого внутри ЦПУ микроконтроллера. Так же, в ситуациях, когда запросы прерывания следуют впритык друг за другом, NVIC использует очередь запросов, что позволяет осуществлять обработку каждого из запросов всего за 6 циклов такового сигнала. В момент обращения к стеку, прерывание с более высоким приоритетом выполняется в первую очередь по отношению к остальным запросам, что не влечет за собой затрат на дополнительные циклы ЦПУ. Данная логика жестко связана с режимами сниженного энергопотребления. ЦПУ может автоматически переходить в режим низкого энергопотребления при выходе из прерывания. Это означает, что ядро остается в «спящем» режиме вплоть до появления следующей исключительной ситуации.

35

Несмотря на то, что ядро Cortex-M3 разработано для бюджетных решений, оно является 32-х битным и поддерживает два режима работы: как поток и как обработчик. Оба могут конфигурироваться со своими внутренними стеками. Это всё позволяет реа-лизовывать устройства со сложным программным обеспечением и поддержкой ОС реального времени. Приложение под Cortex может быть полностью написано на C/C++.

Характеристики STM32

В его состав входит двойной АЦП, таймера общего применения, I2C, SPI, CAN, USB и часы реального времени. Однако каждое из этих периферийных устройств имеет много особенностей. Например, 12-битный АЦП содержит встроенный температурный датчик и поддерживает множество режимов преобразования, а устройства с двойным АЦП могут перестраивать оба АЦП сразу на работу в одном из девяти режимов преобразования. Точно также, каждый из четырех таймеров содержит четыре устройства захвата/сравнения, и каждый таймер может объединяться с другими для образования сложных массивов таймеров. Таймер с расширенными функциями предназначен для приложений управления приводами, он содержит шесть комплементарных выходов ШИМ с программируемым «мертвым временем» и входной линией экстренного отключения, которая переводит выводы ШИМ в предопределенное безопасное состояние.

Модуль SPI содержит аппаратный генератор избыточного циклического кода (CRC) для 8- и 16-битных слов, использующийся при подключении к SD и MMC картам памяти. STM32 содержит модуль прямого доступа к памяти (DMA) на семь каналов, что вообще не обычно для небольших микроконтроллеров. Каждый канал может быть использован для передачи 8/16 или 32-битных данных в и из любого регистра периферийных устройств. Каждое из периферийных устройств, в зависимости от задач, может быть либо отправителем, либо получателем данных от DMA контроллера. Встроенные арбитр шины и матрица шин минимизируют арбитраж между ЦПУ и DMA. Все это свидетельствует о гибкости DMA, о том, что он прост в использовании и действительно автоматизирует передачу данных в пределах микроконтроллера. Если попытаться охарактеризовать STM32 в двух словах, то это малопотребляющий, но в тоже время высокопроизводительный микроконтроллер. Он может работать от источника напряжения 2В с тактовой частотой ядра 72 МГц с включенными всеми периферийными устройствами и при этом потреблять только 36 мА. В режиме сниженного энергопотребления STM32 потребляет 2 мкА. Встроенный RC-осциллятор на 8 МГц позволяет быстро выходить из режимов сниженного энергопотребления пока внешний осциллятор стабилизируется. Быстрый вход и выход из режимов сниженного потребления сокращает общую энергозатратность системы.

Надежность

Многие современные устройства помимо обеспечения высокой производительности и функциональности, должны удовлетворять особым требованиям обеспечения безопасности. STM32 имеет несколько аппаратных особенностей для поддержания целостности системы. В их число входит детектор падения напряжения питания, система безопасности системы синхронизации и два отдельных сторожевых таймера. Первый сторожевой таймер оконного типа. Он должен обновляться в определенный временной интервал. Если обновление произойдет раньше или позже, сторожевой таймер сработает, т. е. сгенерирует прерывание.

Второй сторожевой таймер является независимым, имеет свой собственный внешний осциллятор, отдельный от основной системы синхронизации. Система синхронизации поддерживает функции детектирования неисправностей основного внешнего осциллятора, в случае которых происходит переключение на встроенный 8 МГц RC-осциллятор.

Безопасность

Одним из требований к современным устройствам является обеспечение сохранности программного кода от несанкционированного доступа. Для Flash памяти STM32 может быть установлена защита от чтения через отладочный порт. Когда защита от чтения включена, Flash память также защищена от записи, чтобы предотвратить возможность размещения некорректного кода в таблице векторов прерываний. Микроконтроллеры STM32 также содержат часы реального времени и небольшую область SRAM с питанием от батареи. Содержимое этой области автоматически стирается по прерыванию от модуля предотвращения вмешательства в устройство.

Процессоры Cortex и ЦПУ Cortex

Сердцем процессоров Cortex является 32-битное RISC ЦПУ. Это ЦПУ имеет упрощенную версию программной модели ARM7/9, но расширенную систему команд с хорошей поддержкой целочисленной арифметики, лучшей битовой манипуляцией и производительностью с более «жестким» реальным временем. ЦПУ Cortex способно выполнять большую часть команд за один цикл. Как в ARM7 и ARM9 это достигается с помощью трехступенчатого конвейера. Пока первая команда выполняется, вторая декодируется, и третья извлекается из памяти. Это работает очень хорошо при линейном коде, но, когда встречается ветвление, конвейер сбрасывается и загружается заново перед тем, как программный код продолжит выполняться.

В ARM7 и ARM9 ветвления очень затратные с точки зрения производительности. В ЦПУ Cortex трехступенчатый конвейер дополнен функцией прогнозирования ветвлений. Это значит, что, когда встречается команда условного перехода, осуществляется извлечение следующих предполагаемых команд. Таким образом, оба варианта условного перехода доступны для исполнения, что не влечет за собой снижение производительности. Худший случай - косвенный переход, при котором предполагаемый переход не может быть определен и единственным выходом из ситуации является сброс конвейера.

Программная модель

ЦПУ Cortex - это RISC процессор с архитектурой load-store. Перед выполнением команд обработки данных, операнды должны быть загружены в центральный регистровый файл. Операции с данными должны выполняться в этих регистрах и результаты сохраняться в памяти. Следовательно, вся программная деятельность сосредотачивается на регистровом файле ЦПУ. Этот регистровый файл состоит из шестнадцати 32-битных регистров. Регистры R0-R12 являются простыми регистрами, которые могут быть использованы для хранения переменных. Регистры R13-R15 выполняют специализированные функции внутри ЦПУ Cortex. Регистр R13 используется как указатель стека. Это сгруппированный регистр, что позволяет ЦПУ Cortex иметь отдельные стеки для двух режимов работы. Обычно это используется RTOS, которая выполняет свой «системный» код в защищенном режиме. ВЦПУ Cortex эти два стека называются основной стек и рабочий стек. Следующий регистр, R14, называется регистром связи. Он используется для хранения адреса возврата при переходе в процедуру. Это позволяет ЦПУ Cortex осуществлять быстрый вход и выход из процедуры. Если программный код содержит несколько уровней вложенных подпрограмм, компилятор будет автоматически сохранять значение R14 в стеке при переходе на следующий уровень. Последний регистр, R15, является счетчиком команд (PC); так как он входит в состав регистрового файла, значение R15 можно считывать и изменять как в случае с любым другим регистром.

Режимы работы ЦПУ

Несмотря на то, что Cortex разрабатывался как процессор с малым числом вентилей, простым в применении, он поддерживает использование операционных систем реального времени. Cortex имеет два режима работы: Поток и Обработчик. ЦПУ будет работать в режиме Поток пока оно исполняет код в непрерываемом фоновом режиме и переключится в режим Обработчик при обработке исключительных ситуаций. Кроме

37

того, ЦПУ Cortex может исполнять код в привилегированном или непривилегированном режиме. В привилегированном режиме ЦПУ имеет доступ ко всей системе команд. В непривилегированном режиме некоторые команды недоступны (такие как MRS и MSR, через которые возможен доступ к xPSR и его псевдоименам). Также, запрещен доступ к большинству системных регистров управления Cortex.

Основной стек (R13) может использоваться в обоих режимах: Поток и Обработчик. Режим Обработчик может быть сконфигурирован на использование рабочего стека (сгруппированный с R13 регистр). После сброса процессор Cortex работает в простой конфигурации. И Поток, и Обработчик выполняются в привилегированном режиме, так что нет ограничений по доступу к ресурсам процессора. И Поток, и Обработчик используют основной стек. Для запуска процессора Cortex нужно только сконфигурировать вектор сброса и начальный адрес стека, после чего может исполняться код приложения пользователя. Однако, если вы используете RTOS или разрабатываете приложение с особыми требованиями к обеспечению безопасности, можно использовать расширенный режим. При этом исключения и RTOS обрабатываются в режиме Обработчик с привилегированным доступом и с использованием основного стека, а код приложения исполняется в режиме Поток с непривилегированным доступом и использует рабочий стек. Таким образом, системный код и код приложения разделяются и ошибки кода приложения не повлияют на работу RTOS.

Карта памяти

Процессор Cortex-M3 - это стандартное микроконтроллерное ядро, поэтому содержит четко определенную карту памяти. Несмотря на множество внутренних шин, карта памяти представляет собой линейное 4 Гбайтное адресное пространство. Первый 1 Гбайт памяти разделен поровну между областями для программного кода и для SRAM. Область для кода доступна через шину I-Code, а область SRAM через шину D-code. Несмотря на то, что программный код может загружаться и исполняться из SRAM, команды в таком случае будут извлекаться с использованием системной шины, что приводит к дополнительным задержкам. И вероятнее всего код будет исполняться медленнее из SRAM, чем из встроенной Flash памяти, расположенной в области для программного кода. Следующие 0.5 Гбайт памяти выделены под встроенные периферийные устройства. Все периферийные устройства, предоставляемые производителем, будут расположены в этой области. Первый 1 Мбайт областей для SRAM и периферийных устройств является побитово адресуемым, что достигается при помощи техники, называемой «битовая сегментация». Так как вся SRAM и пользовательские периферийные устройства STM32 расположены как раз на этом участке, вся память STM32 может быть доступна в формате слов или бит.

Следующие 2 Гбайта адресного пространства выделены под внешнюю SRAM и внешние периферийные устройства. И последние 0.5 Гбайт предназначены для внутренних процессорных периферийных устройств Cortex и для дальнейших специфических улучшений процессора Cortex. Все регистры процессора Cortex имеют фиксированное местоположение во всех микроконтроллерах на базе Cortex. Это позволяет легко переносить код между различными вариантами STM32 и даже на Cortex-микроконтроллеры других производителей.

Схема сброса

STM32 содержит встроенную схему сброса, которая держит микроконтроллер в режиме сброса пока VDD ниже 2В с гистерезисом 40 мВ. Внешняя схема сброса не является необходимой частью дизайна STM32. Однако на этапе разработки, к выводу nRST можно подключить простую кнопку перезапуска. nRST соединяется так же спортом JTAG, так что через отладочное устройство тоже можно осуществлять сброс микроконтроллера. STM32 содержит множество внутренних источников сброса, которые могут детектировать ошибки при выполнении различных условий.

Отладочный порт

Для того, чтобы подключать STM32 к отладочным средствам, необходимо добавить в схему отладочный порт. Отладочная система CoreSight поддерживает два стандарта коннекторов: 5-выводной JTAG и 2-выводной Cortex serial wire. В

Обоих вариантах придется пожертвовать выводами микрокотнроллера для средств отладки. После сброса, ЦПУ Cortex инициализирует эти выводы как отладочный порт. С помощью регистров альтернативных функций можно переконфигурировать эти выводы отладочного порта обратно в выводы общего назначения. 5-выводной JTAG интерфейс подключается через 20-выводнойконнектор IDC типа, который имеет стандартное расположение выводов для всех отладочных средств JTAG. Последовательный интерфейс serial wire использует Port A 13 для передачи данных и Port A 14 для передачи синхросигнала.

Системная архитектура STM32

STM32 состоит из ядра Cortex, которое соединяется с Flash памятью через специальную шину команд. Шина данных и системная шина Cortex соединяются с матрицей высокоскоростных шин ARM Advanced High Speed Busses (AHB). Внутренняя SRAM подключается напрямую к матрице шин AHB, также, как и модуль прямого доступа к памяти (DMA). Периферийные устройства располагаются на двух шинах ARM Advanced Peripheral Bussess (APB). Каждая из APB шин замыкается на матрицу шин AHB. Матрица шин тактируется с той же частотой, что и ядро Cortex. Однако шины AHB имеют отдельные делители частоты и могут тактироваться со сниженной частотой для снижения энергопотребления. Стоит отметить, что APB2 может работать с частотой 72 МГц, в то время как APB1 с частотой 36 МГц. ИЦПУ Cortex и DMA могут быть «хозяином» шины. Благодаря параллельным принципам организации матрицы шин, арбитраж необходим только в случае одновременного доступа к SRAM, шине APB1 или APB2. Как мы увидим в разделе, посвященному модулю DMA, арбитр шин предоставляет 2/3 времени доступа для DMA и 1/3 для ЦПУ Cortex.

Распределение памяти

Несмотря на то, что STM32 содержит множество внутренних шин, программисту отображается линейное 4 Гбайтное адресное пространство. Так как STM32 - это микроконтроллер на базе Cortex, карта памяти соответствует стандартному распределению памяти Cortex. Следовательно, память программ начинается с адреса 0x00000000. Встроенная SRAM начинается с 0x20000000, и вся она располагается в области с битовой сегментацией. Память пользовательских периферийных устройств начинается с адреса 0x40000000 и также расположена в области с битовой сегментацией. Регистры Cortex расположены начиная с адреса 0xE0000000.

Область FLASH памяти состоит из трех секций. Первая - это пользовательская Flash память, начинается с адреса 0x00000000. Вторая - Системная Память, так же называемая большим информационным блоком. В эти 4 К Flash памяти на этапе производства микроконтроллера запрограммирован загрузчик. Третья секция, начинаемая с адреса 0x1FFFF800, называемая малым информационным блоком, содержит группу опциональных байтов, которые позволяют осуществлять системные настройки STM32. Загрузчик разработан с целью загрузки кода через USART1 в пользовательскую FLASH память. Для перевода STM32 в режим загрузчика, внешние выводы B00T0 и BOOT1 должны быть переведены соответственно в низкое и высокое состояние. В таком состоянии выводов блок-системной памяти отображается по адресу 0x00000000. После сброса, вместо выполнения программы пользователя из пользовательской Flash, STM32 начнет выполнять код загрузчика.

Выводы выбора режима загрузки позволяют также отображать встроенную SRAM поадресу0x00000000 вместо пользовательской Flash. Это дает возможность на этапе разработки загружать и исполнять программный код непосредственно из SRAM. При этом ускоряется процесс загрузки программы и уменьшается число циклов записи/стирания FLASH памяти, что увеличивает срок ее службы.

Максимизация производительности

В дополнение к двум внешним осцилляторам, STM32 содержит два внутренних RC-осциллятора. После сброса, первоначальным источником тактового сигнала для ядра Cortex является высокочастотный внутренний осциллятор, с номинальной частотой 8 МГц. Второй внутренний осциллятор представляет собой низкочастотный осциллятор, работающий на частоте 32.768 кГц. Этот осциллятор предназначен для часов реального времени и сторожевых таймеров. Процессор Cortex может тактироваться от внутреннего или внешнего высокочастотного осциллятора или от внутренней ФАПЧ. ФАПЧ, в свою очередь, тактируется от внутреннего, либо от внешнего высокочастотного осциллятора. То есть STM32 может работать с частотой 72 МГц без использования внешних осцилляторов. Минус в том, что встроенные осцилляторы не такие точные и стабильный, как внешние. Поэтому для организации последовательных интерфейсов или реализации точных временных функций необходимо использовать внешний осциллятор. Независимо оттого какой осциллятор используется, для получения 72 МГц для ядра Cortex нужно задействовать ФАПЧ. Все регистры конфигурации и ФАПЧ и шин расположены в группе регистров Reset and Clock Control (RCC). После сброса ЦПУ STM32 тактируется от осциллятора HSI. В этот момент внешний осциллятор выключен. Первое что нужно сделать для запуска STM32 на полной скорости заключается во включении внешнего осциллятора и ожидании пока он стабилизируется.

Заключение

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

Список литературы

1. Описание микроконтроллера STM32F407/417 [Электронный ресурс]. URL: www. st. com/web/en/catalog/mmc/FM 141/SC1169/SS1577/LN11 (дата обращения: 10.01.2019).

2. Ядро Cortex-M3 компании ARM. Полное руководство, Джозеф. Ю., Texas Instruments.

3. Баранов Д.Н. Разработка интеллектуальной системы управления мобильными роботами на основе следящей системы технического зрения и нечёткой логики: дис. ... кандидата техн. наук. 05.02.05. М., 2008. 150 с.

4. Броди С.М., Шпак В.Д. Применение ассоциированных полумарковских процессов в анализе надежности систем // Кибернетика, 1970. № 5. С. 90 - 96.

5. Герцбах И.Б. Оптимальное управление полумарковским процессом при наличии ограничений на вероятности состояний // Кибернетика, 1970. № 5. С. 56 - 61

Басс Артем Владимирович, магистрант гр. 643071/17, tomythesupa@,gmail.com, Россия, Тула, Тульский государственный университет

FEATURES OF WORKING WITHSTM32 MICROCONTROLLER

A.V. Bass

The technical characteristics, features, advantages and disadvantages of a generalpurpose microcontroller based on the ARM STM32 core are considered. In addition, the internal structure of this microcontroller, the implementation of the execution of interrupt requests, exception handling, and the internal memory device are analyzed in detail.

Key words: microcontroller, high performance, central processes, power consumption.

Bass Artem Vladimirovich, master, tomythesupa@gmail. com, Russia, Tula, Tula State University

УДК 355; 359.07

МОДЕЛЬ ДЕЯТЕЛЬНОСТИ ОРГАНА УПРАВЛЕНИЯ ОРГАНИЗАЦИОННО-ТЕХНИЧЕСКОЙ СИСТЕМОЙ ВОЕННОГО

НАЗНАЧЕНИЯ

А. Д. Щеблыкин, Д. В. Жердев

В статье представлена концептуальная модель деятельности лица принимающего решение (ЛПР) при распределении задач между должностными лицами (ДЛ) органа управления (ОУ)организационно-техническими системами военного назначения (ОТС ВН). Представлена структура концептуальной модели органа управления и приведено формализованное описание каждого входящего в него компонента. В общем виде представлен процесс распределения задач между ДЛ в ОУ.

Ключевые слова: система, концептуальная модель, когнитивная модель, орган управления, лицо принимающее решение (ЛПР).

К настоящему времени накопленный опыт проектирования структур управления позволяет выделить четыре основных подхода к решению этой задачи [1]:

1) Нормативно-функциональный;

2) Функционально-технологический;

3) Системно-целевой,

4) Структурно-функциональный.

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

Структурно-функциональный подход заключается в системном анализе органов управления ОТС ВН. Структурно-функциональный подход включает этапы анализа и синтеза.

Основным методом анализа является метод декомпозиции, т.е. разделение целого на части. Структурно-функциональный подход заключается в системной декомпозиции цели ОУ на задачи по составляющим системы, а далее на функции и при необходимости на процедуры и операции(рис.1) [2]. Их анализ позволяет синтезировать необходимую организационную структуру ОУ ОТС ВН.

Руководителъ

Группы должностных лиц и Конкретное должностное средств лицо и средство

Рис. 1. Декомпозиция цели деятельности

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

i Надоели баннеры? Вы всегда можете отключить рекламу.