DIP-MIK32-BB-V2: различия между версиями

Материал из MIK32 микроконтроллер
Нет описания правки
Нет описания правки
Строка 47: Строка 47:


==== С использованием регистров ====
==== С использованием регистров ====
[[Файл:Создание проекта.png|мини|Рисунок 3 - Создание проекта в Platformio]]
[[Файл:Создание проекта Blink.png|мини|Рисунок 5 - Создание проекта в Platformio]]
В Platformio создаем новый проект. Во вкладке BOARD выбираем "MIK32 (MIKRON)" как на рисунке 3 и нажимаем "Finish".
[[Файл:PlatformIo.ini V0.png|мини|Рисунок 6 - platformio.ini]]
[[Файл:Platformio2.png|мини|Рисунок 4 - Platformio.ini]]
для создания нового проекта в PlatformIo нужно нажать на иконку platformio, в списке "QUICK ACCESS" выбрать "open". После этого появится кнопка "New project". После ее нажатия появится Project Wizard. В поле Name задаем имя проекта, в поле Board выбираем "MIK32V0 Generic Board (Mikron)" как на рисунке 5. Если требуется задать путь сохранения проекта, то нужно снять галочку Use default location. Для завершения создания проекта нажимаем "Finish".
Затем в окне EXPLORER выбираем platformio.ini и записываем "board_debug.interface = m-link" и "board_debug.ldscript = ram" как на рисунке 4 . Более подробно с параметрами можно ознакомиться в статье [https://wiki.mik32.ru/Параметры_platformio.ini Параметры platformio.ini]. Для записи в EEPROM требуется выставить частоту JTAG в 50 кГц командой "board_debug.adapter_speed=50".
в окне проводник (EXPLORER) выбираем platformio.ini. Для записи в RAM или EEPROM нужно выбрать соответствующий LD скрипт с помощью команды "board_debug.ldscript = ram" или "board_debug.ldscript = eeprom" соответственно. Если строчку не писать, то автоматически будет выбран скрипт для загрузки в EEPROM. Более подробно с параметрами можно ознакомиться в статье [https://wiki.mik32.ru/Параметры_platformio.ini Параметры platformio.ini]. В примере запись будет осуществляться в EEPROM (параметры platformio.ini на рисунке 6).


После этого создаем в папке src окна EXPLORER файл main.c и пишем в него свой код. Пример кода для мигания светодиодом LED2 приведен ниже.
После этого создаем в папке src окна EXPLORER файл main.c и пишем в него свой код. Пример кода для мигания светодиодом LED2 приведен ниже.
Строка 86: Строка 86:
}
}
</syntaxhighlight>
</syntaxhighlight>
[[Файл:Билд.png|мини|Рисунок 5 - прошивка]]
После того как код написан нажимаем в левом нижнем углу иконку галочки для компиляции проекта, а затем стрелочку для прошивки как на рисунке 5.
После того как код написан нажимаем в левом нижнем углу иконку галочки для компиляции проекта, а затем стрелочку для прошивки как на рисунке 5.


==== С использованием библиотек HAL ====
====С использованием библиотек HAL====

Версия от 13:44, 14 марта 2023

Схемы

Габаритный чертеж платы: ссылка

Схема электрическая принципиальная для платы: ссылка

3D сборка платы (.step): ссылка

Схема электрическая принципиальная для переходника: ссылка

Подключение и программирование платы DIP-MIK32-BB-V2

Для программирования платы требуется:

- плата DIP-MIK32-BB-V2;

- Программатор MIK32 или Olimex ARM-USB-OCD-H;

- Установленный плагин platformio в visual studio code.

Подготовка программатора

Установка драйвера для программатора описана в статье Работа с отладчиками на основе FT2232H.

Установка Platformio

Установка Visual Studio Code и Platformio описаны в статье Быстрый старт в Visual Studio Code.

Затем нужно подготовить Platformio к программированию под MIK32. Это описано в статье Установка библиотек для разработки под MIK32.

Подключение программатора к DIP-MIK32-BB-V2

Рисунок 1 - Соединение программатора и dip-mik32-bb-v2 без резистора R1
рисунок 2 - Соединение программатора и dip-mik32-bb-v0 с резистором R1
Рисунок 3 - Схема электрическая принципиальная для переходника
Рисунок 4 - Выбор режима загрузки

Если на плате не запаян нулевой резистор R1, то программатор подключается в соответствии с рисунком 1 . Если резистор R2 запаян, то можно использовать как первое подключение, так и как на рисунке 2. Напряжение питания платы 3.3 В нужно подавать отдельно.

На 19-м выводе программатора есть напряжение 5В, которое можно понизить до 3.3В. Для удобства предлагается использовать специальный переходник (рисунок 3). Если с 19 вывода программатора идет 5В, то перемычка JP1 должна быть разомкнута, а JP2 замкнута. Напряжение 5В понизится регулятором до 3.3в. Если на плате не запаян резистор R1, то перемычка JP4 должна быть замкнута, если резистор есть, то состояние JP4 может быть любым.

После этого нужно выбрать режим загрузки с помощью перемычек на разъеме XP4. Перемычки подают на BOOT0 и BOOT1 либо напряжение VCC, либо GND.

Положение перемычек (рисунок 4):

RAM - BOOT0 = 1, BOOT1 = 0;

EEPROM - BOOT0 = 0, BOOT1 = 0;

SPIFI - BOOT0 = 0, BOOT1 = 1.

Пример Blink в platformio

С использованием регистров

Рисунок 5 - Создание проекта в Platformio
Рисунок 6 - platformio.ini

для создания нового проекта в PlatformIo нужно нажать на иконку platformio, в списке "QUICK ACCESS" выбрать "open". После этого появится кнопка "New project". После ее нажатия появится Project Wizard. В поле Name задаем имя проекта, в поле Board выбираем "MIK32V0 Generic Board (Mikron)" как на рисунке 5. Если требуется задать путь сохранения проекта, то нужно снять галочку Use default location. Для завершения создания проекта нажимаем "Finish". в окне проводник (EXPLORER) выбираем platformio.ini. Для записи в RAM или EEPROM нужно выбрать соответствующий LD скрипт с помощью команды "board_debug.ldscript = ram" или "board_debug.ldscript = eeprom" соответственно. Если строчку не писать, то автоматически будет выбран скрипт для загрузки в EEPROM. Более подробно с параметрами можно ознакомиться в статье Параметры platformio.ini. В примере запись будет осуществляться в EEPROM (параметры platformio.ini на рисунке 6).

После этого создаем в папке src окна EXPLORER файл main.c и пишем в него свой код. Пример кода для мигания светодиодом LED2 приведен ниже.

#include <mcu32_memory_map.h>
#include <pad_config.h>
#include <gpio.h>
#include <power_manager.h>
#define PIN_LED2 3 // LED2 управляется выводом PORT_1_3
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 в выход
    GPIO_0->DIRECTION_OUT = 0xFFFF; // Установка направления порта 1 в выход

	while (1) {
		ledBlink();
	}
}

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

С использованием библиотек HAL