Работа с платами ELBEAR в PlatformIO
Установка
Компания Микрон предоставляет библиотеки и инструменты, позволяющие работать с микроконтроллером MIK32 АМУР в редакторе Visual Studio Code через плагин PlatformIO. Процесс установки плагина и необходимых пакетов описан в wiki компании Микрон:
- процесс установки плагинa
- процесс установки пакетов, необходимых для работы с контроллером MIK32
Ссылки на ресурсы компании Микрон актуальны на ноябрь 2025 года. Если ссылки недействительны, необходимо найти актуальные ссылки на официальном сайте компании Микрон.
Создание нового проекта
При создании проекта и дальнейшей работе с ним необходимо удостовериться, что в настройках проекта (в файле platformio.ini) и при выборе активного проекта (при создании/открытии каждого нового проекта) везде, где указана версия контроллера mik32v_, выбрана версия v2 (mik32v2), а не v0.
Для создания нового проекта:
- Открыть VS Code, в боковой панели перейти на вкладку PlatformIO.
- Выбрать
Quick Access -> PIO Home -> Open. Откроется вкладка PIO Home. - На вкладке PIO Home нажать кнопку
New Project. В диалоговом окне ввести название проекта, в графеBoardвыбратьMIK32V2 Generic Board (Mikron). Содержимое графыFrameworkдолжно заполниться автоматически после выбора платы. При необходимости можно выбрать расположение для сохранения проекта в графеLocation. - В созданном проекте открыть файл platformio.ini и убедиться, что везде указана версия
v2, а неv0. - В файле platformio.ini задать параметр линковщика
board_build.ldscriptв соответствии с областью памяти, для которой пишется программа. Для памяти EEPROM указатьeeprom, для RAM памяти -ram, для SPIFI FLASH -spifi. Проект будет собран и записан в указанную область памяти (при использовании программатора для загрузки программ). Например:board_build.ldscript = spifi - В нижнем меню быстрого доступа найти кнопку
Switch PlatformIO Project Environment, нажать ее и выбрать созданный проект в качестве активного. - Для добавления файлов в боковой панели выбрать
Проводник, раскрыть содержимое проекта, нажать правой кнопкой мыши на папку, в которую необходимо добавить файл, и выбратьСоздать файл. Ввести название файла вместе с расширением, например,main.c. - В созданный файл добавить необходимый код.
- Для сборки проекта нажать кнопку
PlatformIO: Buildв нижнем меню быстрого доступа.
Пример файла main.c, реализующий моргание пользовательским светодиодом:
#include <mik32_memory_map.h>
#include <pad_config.h>
#include <gpio.h>
#include <power_manager.h>
#include <wakeup.h>
// Вывод, к которому подключен светодиод - PORT_2_7
#define PIN_LED 7
void InitClock()
{
// Включение тактирования GPIO
PM->CLK_APB_P_SET |= PM_CLOCK_APB_P_UART_0_M | PM_CLOCK_APB_P_GPIO_0_M | PM_CLOCK_APB_P_GPIO_1_M | PM_CLOCK_APB_P_GPIO_2_M;
// Включение тактирования блока для смены режима выводов
PM->CLK_APB_M_SET |= PM_CLOCK_APB_M_PAD_CONFIG_M | PM_CLOCK_APB_M_WU_M | PM_CLOCK_APB_M_PM_M;
}
void ledBlink()
{
// Инвертирование вывода
GPIO_2->OUTPUT ^= 1 << PIN_LED;
// Задержка
for (volatile int i = 0; i < 500000; i++)
;
}
int main()
{
// Включение тактирования GPIO
InitClock();
// Установка вывода 7 порта 2 в режим GPIO
PAD_CONFIG->PORT_2_CFG &= ~(0b11 << (2 * PIN_LED));
// Установка направления вывода 7 порта 2 на выход
GPIO_2->DIRECTION_OUT = 1 << PIN_LED;
while (1)
{
// Моргание светодиода
ledBlink();
}
}
Загрузка прошивки в микроконтроллер
Для загрузки созданного в PlatformIO проекта необходимо:
- ELJTAG
- USB-UART
- подключить программатор ELJTAG к ПК. При подключении программатора к ПК через USB-хаб могут возникнуть проблемы в работе. Рекомендуется подключать ELJTAG напрямую к ПК.
- подключить плату ELBEAR к программатору через выведенный на плату разъем. На плате ACE-UNO расположение ключа шлейфа от программатора обозначено белой полосой, а на плате ACE-NANO - надписью
ELRON. - собрать проект в PlatformIO (
PlatformIO: Build). - нажать кнопку загрузки
PlatformIO: Uploadв нижнем меню быстрого доступа.
По умолчанию при установке плагина и пакетов от Микрон возможность загружать программу через USB-UART отсутствует (см. инструкцию по добавлению опции).
- подключить плату ELBEAR к ПК через USB.
- открыть диспетчер устройств и посмотреть номер появившегося COM-порта.
- в файле platformio.ini в параметре
upload_commandуказать номер COM-порта из диспетчера устройств. - собрать проект в PlatformIO (
PlatformIO: Build). - нажать кнопку загрузки
PlatformIO: Uploadв нижнем меню быстрого доступа.
Запуск отладки программы
Для отладки программы необходимо использовать программатор ELJTAG.
Последовательность действий:
- подготовить и собрать программу, которую необходимо запускать в режиме отладки.
- подключить плату ELBEAR к ПК через программатор ELJTAG.
- загрузить подготовленную программу на плату.
- открыть PlatformIO в боковой панели и в разделе
DebugнажатьStart Debugging. Откроется боковая панель управления отладкой. - в панели управления отладкой в окне
RUN AND DEBUGвыбратьPIO Debugи нажать на кнопку запуска отладки. Процесс отладки должен начаться, а сверху появится панель управления отладкой.
Для микроконтроллера Амур при отладке доступно всего две точки останова.
Добавление поддержки загрузки программ по USB-UART
Данный способ загрузки позволяет записывать программы только во Flash-память на плате и не поддерживает отладку загруженной программы. При этом в EEPROM память микроконтроллера должен быть записан начальный загрузчик elbear_fw_bootloader (платы поставляются с предварительно записанным загрузчиком).
Компания Микрон предоставляет инструменты, которые по умолчанию предполагают загрузку прошивки на платы ELBEAR через программатор. Для добавления поддержки загрузки программ при подключении платы к ПК по USB необходимо выполнить следующие действия:
- Загрузить на ПК последний релиз скрипта программирования elbear uploader. Загруженный пакет необходимо разархивировать.
- Открыть существующий проект в PlatformIO или создать новый.
- Найти файл platformio.ini и открыть его для редактирования. Изначально после установки инструментов от Микрон содержимое файла должно быть подобным:
[env:mik32v2]
platform = MIK32
board = mik32v2
framework = framework-mik32v2-sdk - Добавить в platformio.ini параметр линковщика, указывающий сборку под SPIFI Flash-память:
board_build.ldscript = spifi - Добавить в файл platformio.ini флаг, указывающий, что будет использоваться сторонний инструмент для загрузки программы, а также команду для запуска скачанного скрипта программирования elbear uploader:
В команде необходимо указать полный путь до исполняемого файла скрипта программирования, путь до загружаемого hex-файла (по умолчанию это
upload_protocol = custom
upload_command = полный_путь\elbear_uploader.exe .pio\build\mik32v2\firmware.hex --com=COM3.pio\build\mik32v2\firmware.hex), а также корректный номер COM порта, к которому подключена плата ELBEAR. - Сохранить изменения и закрыть файл platformio.ini. После редактирования содержимое файла должно быть подобным:
Теперь в текущем проекте при нажатии кнопки загрузки программы, если COM порт указан верно, загрузка будет производиться по интерфейсу USB-UART, и плату можно будет использовать без программатора.
[env:mik32v2]
platform = MIK32
board = mik32v2
framework = framework-mik32v2-sdk
board_build.ldscript = spifi
upload_protocol = custom
upload_command = "C:\Users\user\elbear_uploader\elbear_uploader.exe" .pio\build\mik32v2\firmware.hex --com=COM14
Описанные изменения распространяются только на текущий проект с текущим файлом platformio.ini. При создании нового или открытии другого проекта необходимо внести все вышеперечисленные изменения в файл platformio.ini нового проекта.
Проверено на PlatformIO IDE версии 3.3.4, Core версии 6.1.18.
Использование проектов-примеров
Компания Микрон в репозитории gitflic предоставляет набор примеров на базе PlatformIO, с помощью которых можно протестировать микроконтроллер MIK32.
Для работы с примером:
- открыть папку интересующего примера в VS Code,
- выбрать открытый проект в качестве активного для версии mik32v2 через кнопку
Switch PlatformIO Project Environmentна нижней панели, - при необходимости изменить номера используемых в программе выводов в соответствии с подключением на вашей плате,
- собрать проект и загрузить прошивку в микроконтроллер.