Найти в Дзене

Включаем отечесвенный МК К1921ВГ015 на плате "Ирис UNO"

Оглавление

1. Вступление

Как я публиковал в посте: я купил на Озоне плату "Ирис UNO" (рис. 1). НИИЭТ решил активно популяризировать свой МК, поэтому в их официальном магазине на Озон (рис. 2) можно найти его в продаже по вполне приятной цене (~ 350 руб. / шт).

Рисунок 1 - Магаизн на Озон, где я брал плату. Увы там кончились. Есть и другие платы, например "Bluebird"
Рисунок 1 - Магаизн на Озон, где я брал плату. Увы там кончились. Есть и другие платы, например "Bluebird"
Рисунок 2 - Официальный магазин НИИЭТ, где продают эти МК
Рисунок 2 - Официальный магазин НИИЭТ, где продают эти МК

Сам проект платы Ирис UNO открытый и все исходники можно найти на GitFlic: https://gitflic.ru/project/mikhvad/irisuno-vg015

mikhvad/IrisUNO-VG015: Репозиторий с документацией и примерами для отладочной платы Ирис UNO

Для быстрого старта с этой платой (чтобы запустить на ней код из примеров) достаточно воспользоваться документацией с сайта НИИЭТ: 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" (Не буду же я переписывать инструкцию с одного места в другое).

Рисунок 3 - Меняем везде GPIOA на GPIOC, также смотрим в названиях регистров
Рисунок 3 - Меняем везде GPIOA на GPIOC, также смотрим в названиях регистров
Рисунок 4 - Тут меняем частоту кварца
Рисунок 4 - Тут меняем частоту кварца

После чего запускаем настроенную отладку "Debug - run_leds Debug" (Плату не забываем подключить к ПК) (рис. 5).

Рисунок 5 - Запускаем отладку
Рисунок 5 - Запускаем отладку

Дальше OpenOCD напишет много красного текста - не пугаемся, это он так работает, главное, чтобы Error-ок не было (рис. 6).

Рисунок 6 - Выхлоп OpenOCD
Рисунок 6 - Выхлоп OpenOCD

Чтобы запустить программу нужно нажать кнопку "Resume" (рис. 7).

Рисунок 7 - Нужно нажать на кнопку "Resume"
Рисунок 7 - Нужно нажать на кнопку "Resume"

После чего светодиоды мило заморгают в виде бегущей строки.

Забавный факт №1. Пример построен с использованием таймера, на прерываниях. Что очень классно.

Ну и вполне необычное свойство стандартного скрипта для отладки:

Забавный факт №2. В данный момент прошивка залилась в ОЗУ МК. Это значит, что при отключении питания - она сотрётся. Настройка прошивки Flash памяти оставим на следующую статью.

В целом это полезно, так как лишний раз не изнашивает Flash память МК.

4. Заключение

Это небольшая вводная статья по общим моментам с данным МК. К сожалению у продавца на Озон кончились данные дешёвые платы. Есть платы несколько подороже: это BlueBird К1921ВГ015 (рис. 8). К ним обязательно нужен программатор, можно взять дешёвый от того же разработчика: BlueProg (рис. 9). Либо купить полноценный J-link V9 (рис. 10).

Рисунок 8 - Вот такая "синяя птица"
Рисунок 8 - Вот такая "синяя птица"
Рисунок 9 - Дешёвый программатор
Рисунок 9 - Дешёвый программатор
Рисунок - J-Link V9 от дяди Ляо. Один из множества клонов
Рисунок - J-Link V9 от дяди Ляо. Один из множества клонов

Инструкция по всем программаторам аналогичная. Через Zadig нужно поставить драйвер "WinUSB" и с помощью конфигурационного файла и специальной версии OpenOCD работать с этим программатором и МК.

Также ссылки на статью по плате Bluebird-VG015: https://www.xn-----6kccalfmhwcdcrbm1aajnghfrqjce3b0z.xn--p1ai/VG015/1-VG015_devboard.html

Также есть оригинальные платы от НИИЭТ, но они ещё дороже.

Также в планах у НИИЭТ разработка МК для MotorControl применений и общего назначения. Там обещают уже полноценно починить USB сразу - надеемся, что у них получится.

В следующей статье попробуем разобраться в документации и напишем свою библиотеку для управления GPIO и тактированием.