1. Вступление
Как я публиковал в посте: я купил на Озоне плату "Ирис UNO" (рис. 1). НИИЭТ решил активно популяризировать свой МК, поэтому в их официальном магазине на Озон (рис. 2) можно найти его в продаже по вполне приятной цене (~ 350 руб. / шт).
Сам проект платы Ирис UNO открытый и все исходники можно найти на GitFlic: https://gitflic.ru/project/mikhvad/irisuno-vg015
Для быстрого старта с этой платой (чтобы запустить на ней код из примеров) достаточно воспользоваться документацией с сайта НИИЭТ: https://niiet.ru/product/%D0%BA1921%D0%B2%D0%B3015/?ysclid=mikq5euzde53316808.
В документе "Быстрый старт" довольно подробно всё описано, и даже я разобрался с первого раза. Из особенностей: в путях проекта не должно быть кириллицы, компиляторы такое не любят, а Eclipse вообще в ошибки упадёт.
Единственное, что на плате стоит программатор на базе микросхемы CH347 и кварц на 12 МГц, поэтому потребуется подкорректировать настройки проекта. Там же есть и инструкция по настройке среды Eclipse.
Сильно подробно описывать установку не буду. Проект активно развивается, репозиторий НИИЭТ тоже меняется активно. Инструкция может быстро стать не актуальной. Будут лишь общие рекомендации.
2. Про сам К1921ВГ015
К1921ВГ015 - это отечественный МК от НИИЭТ на базе архитектуры RICS-V.
RISC-V - это открытая и бесплатная архитектура с минимальным набором инструкций ("RISC" расшифровывается как "Reduced Instruction Set"). В данной архитектуре количество команд (инструкций) процессора минимально для каждой конкретной задачи. Отсюда последнее время данная архитектура активно внедряется в МК (Микроконтроллерам не надо запускать на себе нейросети, а нужно иметь минимальное энергопотребление).
ARM то же относится к RISC архитектурам, но принадлежит Британской корпорации "ARM". За использование её архитектуры нужно платить деньги, а также в случае санкций - ты не сможешь ей пользоваться. Отсюда активный бум RISC-V пошёл именно в России и Китае.
- Процессорное ядро К1921ВГ015 32-битное, с поддержкой операций с плавающей точкой (Буква "F" в названии архитектуры: RV32IMFCN_ZBA_ZBB_ZBC_ZBS).
- Также встречается второй прикол данного МК и его направленности: 16-битный Сигма-Дельта АЦП. Работает довольно странно, с очень специфичным диапазоном входного напряжения.
- Есть ещё обычный 12-битный АЦП последовательного приближения. Из ERRATA: Имеется смещение 150 мВ на входе.
ЕстьUSB, но проще сказать, что его нет. Так как в данный момент времени блок USB сильно забагован, о чём написано в ERRATA (Его читать обязательно, на текущий момент МК довольно сырой).- 256 кБ ОЗУ.
- 1 МБ флеш памяти программы.
- Блок RTC с питанием от батарейки, к нему же идёт 64 кБ ОЗУ с питанием от этой самой батарейки.
- Максимальная частота процессора - 50 МГц. За счёт системы ФАПЧ (PLL) можно подключать разные кварцевые резонаторы от 2 до 30 МГц. Стандартный вариант: на 12 или 16 МГц, как на платах Ардуино.
- Интерфейс прошивки / отладки - только JTAG. Загрузчика встроенного нет.
- Интерфейсы SPI, QSPI, UART, CAN 2.0, I2C - всего по одной штуке.
В целом обычный экономичный МК наподобие STM32L. Из интересного - есть ножка "SERVEN" - для стирания прошивки МК в случае его полного "окирпичивания" кривой прошивкой.
3. Программируем
Для программирования нужно скачать либо "Syntacore IDE", либо специальное расширение для "VS Code", в "Быстром старте" этот этап хорошо описан. Зацикливаться не будем.
Для проверки необходимо запустить пример "Run Leds" (рис. 3). В котором поменять Порт "А" на порт "С" (Из документации на плату Ирис UNO). А также заменить в файле "retarget.h" частоту кварца с 16 МГц на 12 МГц (рис. 4). Также нужно настроить сам проект, но об этом всё написано на GitFlic Ирис "UNO" (Не буду же я переписывать инструкцию с одного места в другое).
После чего запускаем настроенную отладку "Debug - run_leds Debug" (Плату не забываем подключить к ПК) (рис. 5).
Дальше OpenOCD напишет много красного текста - не пугаемся, это он так работает, главное, чтобы Error-ок не было (рис. 6).
Чтобы запустить программу нужно нажать кнопку "Resume" (рис. 7).
После чего светодиоды мило заморгают в виде бегущей строки.
Забавный факт №1. Пример построен с использованием таймера, на прерываниях. Что очень классно.
Ну и вполне необычное свойство стандартного скрипта для отладки:
Забавный факт №2. В данный момент прошивка залилась в ОЗУ МК. Это значит, что при отключении питания - она сотрётся. Настройка прошивки Flash памяти оставим на следующую статью.
В целом это полезно, так как лишний раз не изнашивает Flash память МК.
4. Заключение
Это небольшая вводная статья по общим моментам с данным МК. К сожалению у продавца на Озон кончились данные дешёвые платы. Есть платы несколько подороже: это BlueBird К1921ВГ015 (рис. 8). К ним обязательно нужен программатор, можно взять дешёвый от того же разработчика: BlueProg (рис. 9). Либо купить полноценный J-link V9 (рис. 10).
Инструкция по всем программаторам аналогичная. Через Zadig нужно поставить драйвер "WinUSB" и с помощью конфигурационного файла и специальной версии OpenOCD работать с этим программатором и МК.
Также ссылки на статью по плате Bluebird-VG015: https://www.xn-----6kccalfmhwcdcrbm1aajnghfrqjce3b0z.xn--p1ai/VG015/1-VG015_devboard.html
Также есть оригинальные платы от НИИЭТ, но они ещё дороже.
Также в планах у НИИЭТ разработка МК для MotorControl применений и общего назначения. Там обещают уже полноценно починить USB сразу - надеемся, что у них получится.
В следующей статье попробуем разобраться в документации и напишем свою библиотеку для управления GPIO и тактированием.