Окно программы при запуске:
Для создания проекта необходимо нажать “File”>>”New Project” (Ctrl +N)
Открывается окно выбора микроконтроллера с множеством фильтров:
· Core – ядро, на котором построен микроконтроллер;
· Series – серия микроконтроллера;
· Line – линейка микроконтроллера;
· Package – тип корпуса;
· Price – цена;
· IO – количество вводов/выводов;
· Eeprom – объем EEPROM (энергонезавимая память с электрическим стиранием информации);
· Flash – объём флэш памяти;
· Ram – объем оперативной памяти;
· Freq – частота работы МК;
· Advanced Graphic – возможность подключения дисплея;
· Peripheral – подключаемая периферия.
Чтобы найти требуемый микроконтроллер, необходимо ввести его модель в поле поиска:
Найденные микроконтроллеры появятся в таблице в нижней части окна:
В таблице указано:
· Статус продажи (в продаже или нет);
· Стоимость МК;
· Плата, на которую устанавливается МК;
· Тип корпуса;
· Объем флэш и оперативной памяти;
· Количество входов/выходов;
· Частота.
Во вкладке Features представлено описание и характеристики МК.
Во вкладке Block Diagram – блок схема МК.
Можно загрузить даташиты и инструкции для выбранного микроконтроллера, перейдя во вкладку Docs & Resources.
При нажатии на вкладку Datasheet, производится автоматическая загрузка даташита на выбранный микроконтроллер.
Также можно выполнить поиск по модели отладочной платы. Для этого необходимо перейти на вкладку «Board selector»
Двойное нажатие на требуемом микроконтроллере или плате открывает окно конфигурации микроконтроллера.
При загрузке платы предлагается выбрать, необходимо ли инициализировать периферию, распаянную на плате.
|
Во вкладке Pinout & Configuration производится подключение периферии к выводам микросхемы, которые изображены на мнемосхеме в центре экрана.
При клике левой кнопкой мыши по контакту появляется окно выбора функций, для которых может быть задействовать этот контакт.
Функции, поддерживаемые микроконтроллером STM32F100:
· RCC_OSC_IN, RCC_OSC_OUT – подключение кварцевого генератора для задания верхней частоты;
· RCC_OSC32_IN, RCC_OSC32_OUT – подключение кварцевого генератора для задания нижней частоты;
· RCC_MCO – источник тактового сигнала для синхронизации внешних устройств;
· SYS_WKUP – контакт для вывода контроллера из режима сна нарастающим фронтом;
· SYS_JTMS_SWDIO, SYS_JTCK_SWCLK, SYS_JTDI, SYS_JTDO, SYS_NJTRS – интерфейсы Serial Wire, JTAG для отладки;
· ADC_INx – вход 16-канального АЦП;
· DAC_OUTx – выход ЦАП;
· DAC_EXTI9 – внешний триггер;
· RTC_OUT – выход источника времени;
· TIMx_CHx – таймеры;
· I2Cx_SDA, I2Cx_SCL – интерфейс I2C;
· SPIx_SCK, SPIx_MISO, SPIx_MOSI – интерфейс SPI;
· USARTx_RX, USARTx_TX, USARTx_CK – интерфейс USART;
· GPIO_Input – ввод общего назначения;
· GPIO_Output – вывод общего назначения;
· GPIO_Analog – аналоговый ввод/вывод;
При нажатии правой кнопкой мыши на задействованный контакт появляется меню дополнительных функций.
При нажатии на “Enter User Label” появляется возможность дать контакту пользовательское имя.
В колонке в левой части экрана происходит настройка различных подключений, периферии и функций МК. Например, можно включить и настроить подключение по интерфейсу I2C (при этом задействуются соответствующие контакты):
Там же настраиваются порты ввода-вывода.
Pull-up и pull-down – это подтягивающий резистор.
|
Pull-up резистор используется, чтобы сделать состояние по умолчанию цифрового вывода высоким, то есть High, а Pull-Down резистор делает в точности наоборот, он делает состояние по умолчанию цифрового контакта низким, то есть Low.
Также здесь, например, можно задать источник частоты для тактового генератора.
Если необходимые пины заняты, появляется значок «восклицательный знак», а занятые контакты подсвечиваются фиолетовым.
При переключении режима просмотра на System view, все подключения отображаются в виде таблицы.
Во вкладке «Clock Configuration» настраиваются параметры тактирования периферии. Здесь изображена функциональная схема системы тактирования микроконтроллера.
Здесь можно задать частоту различным устройствам.
Большая часть узлов микроконтроллера тактируются от сигналов, полученных из промежуточной частоты – прямоугольник HCLK. Левая от него часть схемы формирует саму частоту HCLK, а правая – раздает ее по узлам, периферийным устройствам.
· FCLK - тактирование ядра микроконтроллера. Частота сигнала определяет производительность микроконтроллера, время выполнения команд. Поступает непосредственно от сигнала HCLK.
· HCLK to AHB – тактирование шины AHB. К этой шине подключены: ядро процессора, память и контроллер прямого доступа к памяти (DMA). Синхроимпульсы для нее также поступают непосредственно от сигнала HCLK. Ядро процессора и его шина (AHB) синхронизируются одним сигналом.
· Cortex System timer – системный таймер. Это стандартный таймер в микроконтроллерах STM32. Представляет из себя 24 разрядный вычитающий счетчик с функциями автоматической перезагрузки и формирования прерываний. Для тактирования используется сигнал HCLK, частота которого может быть уменьшена пред делителем в 8 раз.
|
· APB1 – тактирование шины APB1. Это шина, по которой происходит доступ к таймерам 2-4, 6-7, USART 2 и 3, SPI2, I2C 1 и 2 и др. У других микроконтроллеров семейства STM32 устройств на шине APB1 может быть больше.
Для тактирования шины APB1 используется сигнал HCLK с предделителем на несколько значений.
· ABP1 Timer clocks – тактирование таймеров шины ABP1. Используется сигнал с выхода предделителя ABP1 с умножителем частоты на 1 или 2. Если значение предделителя APB1 равно 1, то частота тактирования таймеров равна частоте тактирования шины. При другом коэффициенте делителя, таймеры тактируются частотой в 2 раза выше, чем шина APB1.
· APB2 – тактирование шины APB2. Это шина, по которой происходит доступ к портам GPIO, таймеру 1, SPI1, USART1, АЦП. У шины предделитель с такими же функциональными возможностями, как у APB1.
· ADC – тактирование АЦП 1 и 2. Для тактирования используется сигнал предделителя шины APB2 с дополнительным делителем частоты. Делитель на схеме становится активным, если разрешить работу АЦП.
Исходными источникоми тактирования процессорного ядра и периферийных устройств микроконтроллера STM32 могут быть:
· HSI (High speed internal) – встроенный RC-генератор.
· HSE (High speed external) – внешний высокочастотный генератор. Может быть использован, как:
o Внутренний генератор с внешним кварцевым резонатором 4-16 Мгц.
o Сигнал от внешнего генератора частотой 4-16 Мгц.
На схеме HSI-генератор изображен внутри микроконтроллера.
HSI RC – это внутренний RC-генератор на 8 мГц. Сигнал с него подается на коммутатор HSI/HSE через делитель на 2. Поэтому от этого генератора можно сформировать сигнал HCLK с частотой до 64 мГц.
Входы подключения внешнего кварцевого резонатора – это самое ”узкое место” для любого микроконтроллера с точки зрения помехозащищенности, влагостойкости, критичности сопротивления изоляции и т.п. Кварцевые генераторы часто не запускаются на морозе, не работают при высокой влажности. Прикоснитесь руками к выводам кварцевого резонатора не вскрытой лаком платы, и он тут же перестанет работать. Поэтому очень удобно иметь генератор внутри микросхемы.
Но RC-генератор обладает невысокой стабильностью частоты. Как правило, она сильно зависит от напряжения питания, возраста и температуры корпуса микроконтроллера. В технической документации указана погрешность частоты HSI-генератора от -2 до 2,5 % в диапазоне температур -40 до 105 C°.
Для повышения точности можно через специальный регистр незначительно изменять частоту HSI-генератора, т.е. производить программную калибровку.
Кварцевый генератор (HSE) надо включать. Как это делается во вкладке System Core -> RCC, мы уже знаем.
После этого на схеме он становится синим, и мы можем задать для него частоту.
· СSS – это система Clock Security System – контроль работы внешнего высокочастотного генератора HSE. При включенной системе CSS контролируется работа HSE-генератора. Если генератор перестает работать, то:
o система тактирования автоматически переключается на RC-генератор HSI,
o сигнал тактирования переключается на путь через верхний вывод коммутатора System Clock Mux, т.е. выключается умножитель частоты PLLMul,
o вырабатывается немаскируемое прерывание для программной обработки этой аварийной ситуации.
Внизу схемы есть еще один коммутатор, который позволяет вывести сигнал тактирования на вывод микроконтроллера MCO (Microcontroller clock output). Сигнал может быть использован для синхронизации аппаратных узлов, подключенных к микроконтроллеру.
Для разрешения работы выхода должна быть установлена ”птичка” Master Clock Output во вкладке System Core -> RCC.
После этого коммутатор MCO source Mux становится активным и можно выбрать один из источников сигнала:
· выход умножителя PLL с делителем на 2;
· RC-генератор HSI;
· внешний генератор HSE;
· SYSCLK - выход коммутатора System Clock Mux.
В левом верхнем углу находится управление тактированием часами реального времени (RTC). Часы представляют собой 32 разрядный счетчик и несколько ячеек памяти, которые работают от отдельного, резервного питания.
Для тактирования часов RTC есть 2 генератора:
· LSI – встроенный низкочастотный RC-генератор с частотой 40 кГц.
· LSE – внешний низкочастотный генератор. Может быть использован, как:
o внутренний генератор с внешним кварцевым резонатором 32 768 Гц;
o сигнал от внешнего генератора частотой 0 – 1000 кГц.
Все, как для генераторов основной системы синхронизации. Только низкие частоты.
Включение LSE-генератора также происходит во вкладке System Core -> RCC.
Прямоугольник Input frecuency станет синим.
Если еще активировать часы в закладке Timers -> RTC, то коммутатор RTC Clock Mux станет активным и можно будет выбрать источник тактирования RTC-часов.
Во вкладке «Project Manager» необходимо дать название проекту, задать путь сохранения и выбрать IDE, в которой планируется дальнейшая работа.
Спускаемся ниже. Вкладка «Code Generator».
Здесь необходимо включить опцию «Generate peripheral initialization as pair…» Таким образом получим более структурированный проект, в котором для каждого типа периферии имеется своя пара C и H файлов.
Во вкладке «Advanced Settings» производится выбор библиотек HAL для всех периферийных модулей.
Для создания кода необходимо нажать кнопку «GENERATE CODE»
При первоначальном запуске возможно потребуется загрузить актуальную версию библиотеки для выбранного семейства МК. Даём своё согласие.