Отладочная плата СТАРТ
- Введение
- Основные сведения
- Режимы работы программатора отладочной платы
- Подготовка к работе с программатором
- Начало работы
- Быстрый старт в Visual Studio Code
- Работа в среде PlatformIO
- Начало работы с Arduino IDE
- Схемотехнические элементы отладочной платы
- ПРИЛОЖЕНИЕ 1. Назначение выводов
- Список изменений
Введение
Отладочная плата «Старт» — программируемое устройство для изучения RISC-V-микроконтроллера MIK32 «Амур» (К1948ВК018) и построения макетов устройств на его основе.
Плата оснащена микроконтроллером с минимальной обвязкой, внешней flash-памятью и программатором.
Основное предназначение устройства — отработка схемотехники изделий при помощи макетных плат, изучение характеристик микроконтроллера, обучение основам программирования и электроники.
Основные сведения
Плата содержит:
-
Микроконтроллер MIK32 «Амур» (К1948ВК018);
-
Внешняя flash память Winbond W25Q32 (32 Мбит);
-
Отладчик, совместимый с OpenOCD, совмещенный с USB-UART преобразователем;
-
Разъем для подключения модулей расширения;
-
Порты ввода-вывода микроконтроллера MIK32;
-
Кварцевый резонатор высокочастотный 32 МГц;
-
Кварцевый резонатор низкочастотный 32768 Гц;
-
Разъем JTAG для отладки внешних устройств;
-
Разъем с дополнительными контактами GND и +3.3V;
-
Разъем для опционального подключения внешнего отладчика или соединения MIK32 с встроенным отладчиком;
-
Разъем для соединения UART0 MIK32 c USB-UART преобразователем или UART сигналами модулей;
-
Разъем для выбора режима загрузки MIK32;
-
Разъем для подачи напряжения программирования VPROG;
-
Два пользовательских светодиода, а также светодиод-индикатор подачи питания и светодиод режима программатора;
-
Кнопку сброса, кнопку выхода из режима пониженного энергопотребления, пользовательскую кнопку.
Режимы работы программатора отладочной платы
Программатор может работать в одном из двух режимов: JTAG-отладчика или USB-UART преобразователя. Выбор производится переключателем режима программатора COM/JTAG (обозначение SW1).
При переключении режима происходит повторная инициализация устройства без необходимости снятия питания.
В положении COM программатор определяется как устройство с последовательным интерфейсом USB.
В положении JTAG программатор определяется как START-MIK32-V1 USB JTAG, для совместимости с OpenOCD, при этом светодиод JTAG/COM светится.
USB-UART преобразователь поддерживает стандартные скорости UART до 57600 бод. Нестандартные скорости должны быть кратны 12*32=384, например, 240000 бод, 768000 бод.
Используется формат передачи 8 бит, 1 стоп бит, без контроля четности (8-N-1).
Подготовка к работе с программатором
Для работы программатора в режиме USB-COM не требуется установка дополнительного драйвера, однако в Linux может потребоваться добавить правила udev для устройства с VID=16c0 и PID=05e1.
Для работы программатора в режиме USB-JTAG в Windows потребуется установка драйвера WinUSB для устройства. Проще всего это сделать с использованием Zadig.
Установка драйвера в Windows
Скачайте программу Zadig с сайта https://zadig.akeo.ie. Ссылка на последнюю версию будет в разделе Download.
Перед установкой драйвера USB-JTAG следует установить переключатель режимов работы отладчика в положение JTAG.
Подключите плату по интерфейсу USB к компьютеру, и запустите Zadig. В меню Options нажмите на List All Devices. В выпадающем списке выберите устройство с названием:
-
START-MIK32-V1 USB JTAG. Затем проверьте что выбран драйвер WinUSB в белом поле ввода (нужный выбирать кнопками со стрелками) и нажмите кнопку Replace Driver или Install Driver Рисунок 1.
После установки драйвера отключите устройство и подключите заново для начала работы.
Начало работы
Программа поставляется в виде ZIP-архива. Для начала работы требуется
распаковать архив в любую папку. Среда разработки запускается файлом
start-ide.cmd. После запуска появится меню выбора рабочих областей,
в котором следует нажать кнопку Launch.
При первом запуске потребуется открыть проект-шаблон: перейти в
. Откроется окно
Import Projects from File System or Archive, в котором потребуется выбрать
путь к проекту (Рисунок 2). Нажмите кнопку
Directory… и в папке {путь к сборке}\mik32-ide-v1-2-2\templates-project
выберете один из шаблонных проектов.
Проект template-c-project содержит в себе папку framework, содержащую
компоненты для сборки. Библиотеки, стартовый файл, скрипт линковки хранятся
внутри проекта.
Проект template-c-project-shared содержит ссылки на директорию
framework-shared в корне сборки, библиотеки и другие компоненты хранятся
вне проекта и разделены между подобными проектами.
После указания пути, в центральном списке будет отмечен выбранный проект. Для завершения открытия проекта следует нажать кнопку Finish.
Создание проекта
Создание нового проекта выполняется копированием проекта template-c-project и
изменением названия проекта. Для этого в панели Project Explorer следует
выбрать проект template-c-project, скопировать и вставить его горячими
клавишами Ctrl+C или Ctrl+V или через контекстное меню пунктами
Copy и Paste. При выполнении вставки откроется окно Copy Project,
в котором следует задать название нового проекта (Рисунок 3).
Использование примеров
Чтобы начать работу с примерами, следует скопировать файл исходного кода
примера из папки src соответствующего примера в папку src созданного
проекта. Примеры находятся в папке examples рабочей области workspace.
Сборка прошивки
При нажатии на кнопку Build
будет собран
проект, папка или файл которого были выделены. По умолчанию выбрана конфигурация
Debug EEPROM, в которой настроено сохранение программы во внутренней EEPROM
памяти. В сборке доступны конфигурации Debug RAM, с сохранением программы
в ОЗУ, и Debug Flash, с сохранением программы во внешнюю флеш память.
Загрузка прошивки
Прошивка в микроконтроллер загружается с помощью механизма запуска внешних
инструментов. Перед загрузкой, необходимо выбрать папку или файл
соответствующего проекта. Для этого необходимо в верхней панели нажать
на треугольник рядом с кнопкой External Tools
для открытия выпадающего меню внешних
инструментов (Рисунок 4). Нажатие на пункт соответствующий нужному
программатору запустит процесс загрузки прошивки.
На данный момент есть готовые настройки для программаторов на основе микросхемы FT2232H с JTAG на канале 1 и программатора на плате START-MIK32-V1.
Запуск отладки
Запуск отладки выполняется аналогично загрузке прошивки, запуском
подготовленной отладочной конфигурации. Перед запуском отладки, необходимо
выбрать папку или файл соответствующего проекта. Для этого необходимо
в верхней панели нажать на треугольник рядом с кнопкой Debug Configutaions…
для открытия выпадающего меню
конфигураций отладки. Нажатие на пункт соответствующий нужному программатору
запустит процесс загрузки прошивки. Конфигурации разделены на отладочные и
группы запуска, обозначающиеся Debug и Debug Upload соответственно.
Конфигурация, обозначенная Debug выполняет запуск отладки выбранной прошивки,
без выполнения загрузки. Группы запуска Debug Upload сначала запускают
загрузку, затем запускают отладку.
Быстрый старт в Visual Studio Code
Установка плагина PlatformIO
Для разработки ПО под микроконтроллеры требуется установить плагин PlatformIO.
Выберите пункт Extensions или нажмите сочетание клавиш Ctrl+Shift+X. Найдите его в списке плагинов и нажмите Install Рисунок 5.
Дождитесь окончания установки (статус отображается на панели снизу) и перезапустите программу.
Теперь при запуске в панели инструментов (слева) появится логотип Platformio Рисунок 6.
Подготовка компонентов для разработки на MIK32
Скачать архив по адресу https://gitflic.ru/project/mikron-mik32/mik32-platformio/release/latest. Последний релиз находятся в верхней части экрана, в его карточке необходимо найти группу Файлы и в списке выбрать элемент с названием mik32-platformio-{версия}.zip. Нажатие по этому элементу запустит скачивание архива. Затем нужно распаковать содержимое архива по пути %USERNAME%\.platformio (для Windows) или ~/.platformio (для Linux). В Windows при установке VS Code на уровне системы (System Installer) директорию можно найти по пути C:\.platformio. В Linux каталоги, название которых начинается с точки, считаются скрытыми, поэтому потребуется включить отображение скрытых файлов.
После распаковки всех архивов должна получиться следующая структура .platformio:
-
packages
-
framework-mik32v2-sdk
-
hal
-
shared
-
-
tool-mik32-uploader
-
-
platforms
-
mik32
-
Перезапустите VS Code. Теперь у вас подготовлена среда для программирования MIK32.
Работа в среде PlatformIO
Создание проекта
Нажмите на иконку Platformio в панели инструментов (левой части окна). В открывшейся панели нажмите Open. Откроется вкладка PIO Home, нажмите на кнопку New Project для создания нового проекта Рисунок 7.
В диалоговом окне Project Wizard в поле Name введите имя проекта, в выпадающем списке Board введите mik32 и выберите START-MIK32-V1 (Mikron), нажмите Finish Рисунок 8.
При первом запуске Platformio скачает набор для разработки под RISC-V. Для этого требуется подключение к интернету, будет скачано около 1 ГБ. В это время platformio скачивает такие пакеты как toolchain-riscv, tool-openocd и tool-scons в папку C:\Users\ИМЯ-ПОЛЬЗОВАТЕЛЯ\.platformio\packages. Дождитесь завершения создания проекта.
Для создания файла будущей программы в левой части панели проводника нажмите правой кнопкой мыши на папку src, выберите «Создать файл», введите название файла, например, main.c, и нажмите Enter Рисунок 9.
Примеры программ для MIK32
Ознакомьтесь с примерами и параметрами конфигурационного файла platformio.ini, который находится в каждом проекте platformio.
Ссылка на примеры: https://gitflic.ru/project/mikron-mik32/mik32-examples.
В файле platformio.ini содержатся параметры проекта. Пример настроек сборки программы для внешней flash памяти представлен ниже.
; Пример комментария
[env:mik32v2]
platform = MIK32
board = start-mik32-v1
framework = framework-mik32v2-sdk
board_build.ldscript = spifi
Настройки platformio.ini
В корне проекта расположен файл platformio.ini который содержит настройки проекта. Основные настройки приведены ниже:
upload_protocol = start-link
board_build.ldscript - выбор ld скрипта;
Значение по умолчанию: eeprom;
Возможные значения:
eeprom;
spifi;
ram.
Пример использования: board_build.ldscript = spifi
upload_speed - частота тактового сигнала интерфейса jtag, кГц.
Значение по умолчанию: 500;
Пример использования: upload_speed = 3200
board_build.f_cpu - переопределение частоты основного генератора тактовой частоты, Гц в формате длинного числа Си.
Значение по умолчанию: 32000000L;
Пример использования: board_build.f_cpu = 4000000L
board_upload.maximum_size - переопределение максимального размера программы, байты.
Размер программы вычисляется Platformio по суммарному размеру секций .text и .data. maximum_size устанавливается по объему памяти, в которой будет храниться программа.
Значение по умолчанию: 8192;
Пример использования: board_upload.maximum_size = 4194304.
Больше настроек можно найти в официальной документации проекта: https://docs.platformio.org/en/latest/projectconf/sections/env/index.html#options
Загрузка программы на плату
Перед загрузкой программы убедитесь, что проект выбран в качестве активного. Для этого в platformio toolbar, расположенном внизу, выберите "switch platformio project environment". В открывшемся выпадающем списке выберите нужный проект. Затем нажмите upload Рисунок 10.
При загрузке в ОЗУ в случае успешной загрузке в конце будет надпись вида «downloaded xxx bytes in…».
Больше информации о MIK32 на сайте https://wiki.mik32.ru
Начало работы с Arduino IDE
Компания ELRON предоставляет библиотеки и инструменты, позволяющие работать с микроконтроллером MIK32 АМУР в Arduino IDE. Процесс установки описан на ресурсах компании ELRON:
Схемотехнические элементы отладочной платы
Режим загрузки MIK32
На плате выводы BOOT (B0 и B1) определяют режим загрузки MIK32 при включении питания или при внешнем сбросе (RESET) Рисунок 11.
Состояние B0 |
Состояние B1 |
Режим загрузки |
0 |
0 |
EEPROM |
0 |
1 |
SPIFI |
1 |
0 |
RAM |
1 |
1 |
Зарезервировано |
где 0 – низкий логический уровень, 1 – высокий логический уровень.
По умолчанию выводы B0 и B1 подтянуты к земле, что соответствует режиму загрузки из EEPROM. Для изменения режима загрузки следует установить перемычку между одним из выводов BOOT и выходом внутренней линии питания батарейного домена 3.3В - VCC_BU Рисунок 12.
Кнопки управления
На плате расположены три кнопки:
-
Пользовательская кнопка USER_B с подтяжкой к питанию, которая подключена к выводу MIK32 PORT0_8 и замыкает его на землю;
-
Кнопка EXT_WU выхода из режима пониженного энергопотребления;
-
Кнопка RESET для внешнего сброса MIK32. Схема подключения кнопок показана на Рисунок 13
Светодиодные индикаторы
Два пользовательских светодиода VD1 и VD2 подключены к выводам MIK32 PORT0_3 и PORT1_3 через перемычку и загораются при подаче на них логической «1» в режиме GPIO. Выводы PORT0_3 и PORT1_3 можно использовать в качестве вывода ШИМ сигнала, который формируется с помощью TIMER32_1 и TIMER32_2 соответственно.
Светодиод POWER (обозначение VD3) сигнализирует о наличии питания платы.
Светодиод JTAG/COM (обозначение VD5) является индикатором текущего режима встроенного программатора.
Схема подключения светодиодных индикаторов показана на Рисунок 14.
Питание и выводы
Напряжение питания MIK32 на выводе VCC составляет 3,3 В, допустимый диапазон (2,97…3,63) В. Вывод AVCC MIK32 - напряжение питания аналоговых блоков по умолчанию соединен через перемычку с выводом VCC. Возможно подать на вывод AVCC напряжение отличное от VCC. Для этого следует разрезать перемычку JC3 (обратная сторона платы) и подать напряжение на вывод платы AVCC величиной 3,3 В, допустимый диапазон (3,15…3,45) В Рисунок 15.
Имеется возможность питать плату от напряжения 5 В (вывод 5V), допустимый диапазон (4,75…5,25) В. Питание может поступать от USB разъема, который защищен от перетекания тока диодом D1 Рисунок 16.
Запасное питание батарейного домена на выводе VBAT предназначено для питания батарейного домена MIK32 величиной 3,3 В, допустимый диапазон (2,5…3,63) В.
Для чтения данных из однократно-программируемой памяти (OTP) MIK32 вывод VPROG на плате соединен с VCC через диодную сборку. Если требуется записать данные в память, на контактную группу J2 (вывод VPROG) следует подать напряжение программирования OTP 8.0В Рисунок 17.
Кроме этого, на плате выведена линия RTC_ALARM (вывод R_AL), которая сигнализирует о срабатывании будильника RTC, а также линия External Wakeup (вывод E_W, кнопка EXT_WU), которая подтянута к земле для выхода из режимов низкого энергопотребления.
Список изменений
-
Ред. 1.0 – первый выпуск;
-
Ред. 1.1 – добавлена информация о режиме работы USB-UART преобразователя;
-
Ред. 1.2 – исправлена маркировка флеш, опечатки и рисунки;
-
Ред. 1.3 – добавлено описание работы с Eclipse IDE (MIK32 IDE v1.2);
-
Ред. 1.4 – дополнено описание работы с Eclipse IDE (MIK32 IDE v1.2.2).
-
Ред. 1.5 – исправлены информация по получению Eclipse IDE и ссылки на репозитории.