LDM – Systems разработали отличную плату на базе РОССИЙСКОГО K1986ВЕ92 микропроцессора от Миландра (Ядро ARM Cortex M3). К сожалению, несмотря на весьма почтенный возраст микроконтроллера (около 7 лет) – не очень много материалов в сети с информацией, как его можно использовать. На форумах производитель пишет, что не до популяризации, «все ушли на фронт» Вероятно в том числе в самом прямом смысле.
Тем не менее разработчики процессора и партнеры из «LDM Системс» сделали очень немало для того, чтобы данное решение могло стать популярным.
Вот их плата:
При цене в районе пары тысяч и наличии на борту возможности загрузки откомпилированой прошивки через USB порт через популярный драйвер СР2102, решение становится конкурентным предложением для использования не только в серьезных взрослых приложениях, но и в хоббийных разработках – с удовольствием можно шепнуть комунить – СДЕЛАНО В СССР (России)!
При поиске в сети также нашлось несколько книг (ссылки в конце статьи) по программированию данного процессора (правда на более серьезных отладочных платах и недешевых программаторах), поэтому постараемся двинуть технику еще ближе к народу – показать, как можно начать мигать светодиодом на совсем недорогом железе и программаторе на базе китайских клонов ST-LINK v2.
Итак поехали:
Ставим бесплатную оценочную версию Keil для ARM (MDK-ARM) (версия для винды к сожалению).
После установки качаем поддержку для процессора K1986ВЕ9х (файл Milandr.MDR1986BExx.1.4.2.pack) и простым нажатием устанавливаем ее в Keil.
По прекрасному тексту, написанному Васильевым, Лашмановым и Пантюшиным ( страница 20-27) создаем новый проект в Keil.
В книге описано подключение другого программатора, поэтому для ST-Link v2 будут следующие небольшие изменения в настройках:
Как подключаем ST-Link v2 к плате:
в качестве программатора выступает клон ST-Link v2 от недорогой отладочной платы XNucleo-F302R8
по выводам он имеет стандартные выводы для SW(Serial Wire) интерфейса
Почему надо подключить 10,11,12 ножки платы к GND,GND, 3,3V соотвественно:
читаем документацию к микроконтроллеру:
на странице 35 написано, что необходимо выставить уровни напряжения для программирования через JTAG/A в 001 (строка 2 таблицы 9). что мы и делаем, пользуясь схемой платы и документацией:
Если все сделали правильно, то Keil видит Вашу плату через ST-Link V2
Теперь начинаем формировать main.c для того, чтобы по нажатию клавиши SA4 получили свечение светодиода VD7 на плате ( пример переделан из примера 4.1 книги Васильева, Лашманова, Пантюшина (гран рахмат коллегам за непростой труд написания серьезной книги еще раз!)
#include "MDR32Fx.h" #include "core_cm3.h" #include "MDR32F9Qx_config.h" #include "system_MDR32F9Qx.h" #include "MDR32F9Qx_rst_clk.h" #include "MDR32F9Qx_port.h" #define VD7 PORT_Pin_2//define pin 2 to LED VD7 #define SA4 PORT_Pin_5//define pin 5 to Button SA4 static PORT_InitTypeDef PortInit; //init structure PortInit int main(){ RST_CLK_PCLKcmd(RST_CLK_PCLK_PORTD, ENABLE);//switch on port d clocking RST_CLK_PCLKcmd(RST_CLK_PCLK_PORTC, ENABLE);//switch on port c clocking //init port D like input PortInit.PORT_OE = PORT_OE_IN; // port mode -> input PortInit.PORT_FUNC = PORT_FUNC_PORT; // port mode PortInit.PORT_MODE = PORT_MODE_DIGITAL; // digital port mode PortInit.PORT_SPEED = PORT_SPEED_SLOW; // choose slow mode for front PortInit.PORT_Pin = (SA4); // pin number 5 (PD5) which is connected to SA4 button PORT_Init(MDR_PORTD, &PortInit); // init port // init port C like output PortInit.PORT_OE = PORT_OE_OUT; // port mode -> output PortInit.PORT_FUNC = PORT_FUNC_PORT; // port mode PortInit.PORT_MODE = PORT_MODE_DIGITAL; // digital port mode PortInit.PORT_SPEED = PORT_SPEED_SLOW; // choose slow mode for front PortInit.PORT_Pin = (VD7); // pin number 2 (PC2) which is connected to VD7 LED PORT_Init(MDR_PORTC, &PortInit); // port C init with defined parameters PORT_ResetBits(MDR_PORTC, VD7); //switch off VD7 on start while(1){ // endless cycle if (PORT_ReadInputDataBit(MDR_PORTD, SA4) == 0) // if button pressed { PORT_SetBits(MDR_PORTC, VD7); // LED on } else { PORT_ResetBits(MDR_PORTC, VD7); // LED off } } }
Почему так подключаем порты D и C – смотрим на схеме платы:
результат – видео свечения светодиода по нажатию кнопки.
Книги:
Благодаров А.В. Программирование микроконтролеров 1986ВЕ9х , группа ВК , ссылки на тексты программ – примеров для книги на сайте Рязанского Государственного Радиотехнического Университета
А.С. Васильев, О.Ю.Лашманов, А.В.Пантюшин Основы программирования микроконтроллеров, Университет ИТМО
Большое спасибо за материалы форумчанам Миландра:
и особенно ruslan.h и strannic