Отладочная плата MIK32: различия между версиями

Материал из MIK32 микроконтроллер
(Новая страница: «Файл:Отладочная плата MIK32 - Рисунок 1.png|мини|Рисунок 1 - Установка перемычек для запуска п...»)
 
 
Строка 42: Строка 42:
|светодиод управление логическим нулём
|светодиод управление логическим нулём
|}
|}
[[Файл:Отладочная плата MIK32 - Рисунок 2.png|мини|Рисунок 2 - параметры platformio.ini]]
Для разработки предлагается использовать среду PlatformIO и VS Code IDE. Установка описана в статье [[Быстрый старт в Visual Studio Code]], копирование настроек и заголовочных файлов, а также создание проекта описаны в статье [[Установка библиотек для разработки под MIK32]].
Для разработки предлагается использовать среду PlatformIO и VS Code IDE. Установка описана в статье [[Быстрый старт в Visual Studio Code]], копирование настроек и заголовочных файлов, а также создание проекта описаны в статье [[Установка библиотек для разработки под MIK32]].
После создания проекта в окне EXPLORER выбираем platformio.ini и записываем "board_debug.interface = m-link" и "board_debug.ldscript = ram" как на рисунке 2.
Далее прописываем код в main.c:<syntaxhighlight lang="c++">
#include <mcu32_memory_map.h>
#include <pad_config.h>
#include <gpio.h>
#include <power_manager.h>
#define PIN_LED2 0 // LED2 управляется выводом PORT_1_0
void initClock() {
PM->CLK_APB_P_SET =  PM_CLOCK_GPIO_1_M; // включение тактирования GPIO0 и GPIO1
PM->CLK_APB_M_SET = PM_CLOCK_PAD_CONFIG_M | PM_CLOCK_WU_M | PM_CLOCK_PM_M; // включение тактирования блока для смены режима выводов
for (volatile int i = 0; i < 10; i++) ;
}
void ledBlink() {
GPIO_1->OUTPUT |= 1 << PIN_LED2;  //Установка значения вывода 3 порта 1 в высокий уровень
for (volatile int i = 0; i < 1000000; i++);
GPIO_1->OUTPUT &= ~(1 << PIN_LED2); //Установка значения вывода 3 порта 1 в низкий уровень 
for (volatile int i = 0; i < 1000000; i++);
}
void main() {
initClock(); //включние тактирования GPIO1
PAD_CONFIG->PORT_1_CFG |= (1 << (2 * PIN_LED2)); // Установка порта 1 в режим GPIO
    //PAD_CONFIG->PORT_0_CFG |= (0b01 << PIN_LED2); // Установка порта 1 в режим GPIO
GPIO_1->DIRECTION_OUT = 0xFFFF; // Установка направления порта 1 в выход
while (1) {
ledBlink();
}
}
</syntaxhighlight>
[[Файл:Отладочная плата MIK32 - Рисунок 3.png|мини|Рисунок 3 - кнопка прошивки]]
После того как код написан нажимаем в левом нижнем углу иконку галочки для компиляции проекта, а затем стрелочку для прошивки как на рисунке 3.
На рисунке 4 показана схема выбора режима загрузки.
В случае не работоспособности платы, проверить питание контроллера (таблица 2):
{| class="wikitable"
|+Таблица 2
|Вывод корпуса
|Наименование
|Значение напряжения, В
|-
|5
|VCC
|3.3+-0.1
|-
|6
|VDD
|1.8+-0.1
|-
|10
|VDD
|1.8+-0.1
|-
|14
|RST
|3.3+-0.1
|}
Если напряжения отличаются, проверить питание, положение установленных перемычек, стабилизатор напряжения U2.

Текущая версия на 18:44, 22 июня 2022

Рисунок 1 - Установка перемычек для запуска примера из ОЗУ

Для программирования платы используется программатор на основе FT2232H. Информация о настройке доступна в статье Работа с отладчиками на основе FT2232H.

Подключается программатор плоским шлейфом с разъемами 2x10 с ключом, совместимым с Arm 20pin JTAG. При подключении ключ разъема должен быть направлен внутрь платы!

Перед запуском примера требуется выставить перемычки в соответствии с рисунком 1 (таблицей 1).

Таблица 1
Вилка Выводы Наименование цепей Описание назначения
XP (VIN=>3.3V) 1-2 VIN-3.3V питание цифровых и аналоговых блоков
XP (AVCC-SEL) 1-2 AVCC-3.3V питание аналоговых блоков 3.3В;
XP (AGND-SEL) 1-2 AGND-GND общий вывод аналоговых блоков;
XP (BOOT) 1-3 BOOT0-3.3V вход управления устройством загрузки
XP (BOOT) 4-6 BOOT1-GND вход управления устройством загрузки
XP (LED2_JMP) 1-2 PORT_1_0-LED2 светодиод управление логическим нулём
Рисунок 2 - параметры platformio.ini

Для разработки предлагается использовать среду PlatformIO и VS Code IDE. Установка описана в статье Быстрый старт в Visual Studio Code, копирование настроек и заголовочных файлов, а также создание проекта описаны в статье Установка библиотек для разработки под MIK32.

После создания проекта в окне EXPLORER выбираем platformio.ini и записываем "board_debug.interface = m-link" и "board_debug.ldscript = ram" как на рисунке 2.

Далее прописываем код в main.c:

#include <mcu32_memory_map.h>
#include <pad_config.h>
#include <gpio.h>
#include <power_manager.h>

#define PIN_LED2 0 // LED2 управляется выводом PORT_1_0

void initClock() {
	PM->CLK_APB_P_SET =  PM_CLOCK_GPIO_1_M; // включение тактирования GPIO0 и GPIO1
	PM->CLK_APB_M_SET = PM_CLOCK_PAD_CONFIG_M | PM_CLOCK_WU_M | PM_CLOCK_PM_M; // включение тактирования блока для смены режима выводов
	for (volatile int i = 0; i < 10; i++) ;
}

void ledBlink() {
	GPIO_1->OUTPUT |= 1 << PIN_LED2;   //Установка значения вывода 3 порта 1 в высокий уровень
	for (volatile int i = 0; i < 1000000; i++);
	GPIO_1->OUTPUT &= ~(1 << PIN_LED2); //Установка значения вывода 3 порта 1 в низкий уровень   
	for (volatile int i = 0; i < 1000000; i++);
}

void main() {
	initClock(); //включние тактирования GPIO1 

	PAD_CONFIG->PORT_1_CFG |= (1 << (2 * PIN_LED2)); // Установка порта 1 в режим GPIO
    //PAD_CONFIG->PORT_0_CFG |= (0b01 << PIN_LED2); // Установка порта 1 в режим GPIO

	GPIO_1->DIRECTION_OUT = 0xFFFF; // Установка направления порта 1 в выход

	while (1) {
		ledBlink();
	}
}
Рисунок 3 - кнопка прошивки

После того как код написан нажимаем в левом нижнем углу иконку галочки для компиляции проекта, а затем стрелочку для прошивки как на рисунке 3.

На рисунке 4 показана схема выбора режима загрузки.

В случае не работоспособности платы, проверить питание контроллера (таблица 2):

Таблица 2
Вывод корпуса Наименование Значение напряжения, В
5 VCC 3.3+-0.1
6 VDD 1.8+-0.1
10 VDD 1.8+-0.1
14 RST 3.3+-0.1

Если напряжения отличаются, проверить питание, положение установленных перемычек, стабилизатор напряжения U2.