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

Материал из me-robotics wiki
 
(не показано 6 промежуточных версий 2 участников)
Строка 1: Строка 1:
 +
== Схемы ==
 +
Чертеж платы: https://disk.yandex.ru/i/rLK8eImeqc1usw
  
== Схемы ==
+
Принципиальная схема: https://disk.yandex.ru/i/4t0-TZ3vJoHimw
[[Файл:DIP-MIK32-BB-V1-Schematic-Lowres.png|мини]]
 
[[Файл:DIP-MIK32-BB-V2.png|мини]]
 
<gallery>
 
Файл:DIP-MIK32-BB-V1-Schematic.png|Принципиальная схема платы
 
</gallery>
 
  
 
== Инструкция по подключению и программированию платы DIP-MIK32-BB ==
 
== Инструкция по подключению и программированию платы DIP-MIK32-BB ==
Строка 25: Строка 22:
  
 
=== Подключение программатора к DIP-MIK32-BB ===
 
=== Подключение программатора к DIP-MIK32-BB ===
[[Файл:Соединение.png|мини|Рисунок 4 - Соединение программатора MIK32 и DIP-MIK32-BB]]
+
[[Файл:Рисунок 1 - Соединение программатора MIK32 и DIP-MIK32-BB.png|мини|Рисунок 1 - Соединение программатора MIK32 и DIP-MIK32-BB]]
Соединение программатора с DIP-MIK32-BB изображено на рисунке 4.
+
[[Файл:DIP-MIK32-BB-V2.png|мини|Рисунок 2 - распиновка]]
 +
Соединение программатора с DIP-MIK32-BB изображено на рисунке 1.
 +
 
 +
После этого нужно выбрать режим загрузки. Для это нужно установить перемычку как показано на рисунке 2. Для загрузки программы в RAM нужно установить BOOT0 = 1 и BOOT1 = 0 с помощью перемычек. Плата DIP-MIK32-BB питается от напряжения 3,3 В.
 +
[[Файл:Создание проекта.png|мини|Рисунок 3 - Создание проекта в Platformio]]
 +
В Platformio создаем новый проект. Во вкладке BOARD выбираем "MIK32 (MIKRON)" как на рисунке 3 и нажимаем "Finish".
 +
[[Файл:Platformio2.png|мини|Рисунок 4 - Platformio.ini]]
 +
Затем в окне 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".
 +
 
 +
После этого создаем в папке src окна EXPLORER файл main.c и пишем в него свой код. Пример кода для мигания светодиодом LED2 приведен ниже.
 +
<syntaxhighlight lang="C++" line="1">
 +
#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();
 +
}
 +
}
 +
</syntaxhighlight>
 +
[[Файл:Билд.png|мини|Рисунок 5 - прошивка]]
 +
После того как код написан нажимаем в левом нижнем углу иконку галочки для компиляции проекта, а затем стрелочку для прошивки как на рисунке 5.

Текущая версия на 22:23, 6 февраля 2023

Схемы

Чертеж платы: https://disk.yandex.ru/i/rLK8eImeqc1usw

Принципиальная схема: https://disk.yandex.ru/i/4t0-TZ3vJoHimw

Инструкция по подключению и программированию платы DIP-MIK32-BB

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

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

- Программатор MIK32;

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

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

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

Platformio

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

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

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

Ошибка создания миниатюры: Файл не найден
Рисунок 1 - Соединение программатора MIK32 и DIP-MIK32-BB
Ошибка создания миниатюры: Файл не найден
Рисунок 2 - распиновка

Соединение программатора с DIP-MIK32-BB изображено на рисунке 1.

После этого нужно выбрать режим загрузки. Для это нужно установить перемычку как показано на рисунке 2. Для загрузки программы в RAM нужно установить BOOT0 = 1 и BOOT1 = 0 с помощью перемычек. Плата DIP-MIK32-BB питается от напряжения 3,3 В.

Ошибка создания миниатюры: Файл не найден
Рисунок 3 - Создание проекта в Platformio

В Platformio создаем новый проект. Во вкладке BOARD выбираем "MIK32 (MIKRON)" как на рисунке 3 и нажимаем "Finish".

Ошибка создания миниатюры: Файл не найден
Рисунок 4 - Platformio.ini

Затем в окне EXPLORER выбираем platformio.ini и записываем "board_debug.interface = m-link" и "board_debug.ldscript = ram" как на рисунке 4 . Более подробно с параметрами можно ознакомиться в статье Параметры platformio.ini. Для записи в EEPROM требуется выставить частоту JTAG в 50 кГц командой "board_debug.adapter_speed=50".

После этого создаем в папке 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 - прошивка

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