К1921ВГ015 общее

32-разрядные микроконтроллеры разработки АО "НИИЭТ"

Модераторы: ea, dav, bkolbov, Alis, pip, _sva_

Аватара пользователя
ejsan
Сообщения: 105
Зарегистрирован: 15 авг 2022, 21:17
Предприятие: vbrspb.ru

Re: К1921ВГ015 общее

Сообщение ejsan »

Да понятное дело, что есть. Вам нужен только OpenOCD и сам JTAG. Предлагаю скачать мой самосбор, после чего посмотреть, что лежит у меня в папке Flash. А в ней найдите openocd.cfg и отредактируйте по своим потребностям. А потом просто запускаете openocd.exe и смотрите результат.
RabidRabbit
Сообщения: 136
Зарегистрирован: 10 июн 2025, 12:11
Предприятие: HomeWork

Re: К1921ВГ015 общее

Сообщение RabidRabbit »

Ratnikoff писал(а): 13 мар 2026, 09:26 Здравствуйте. Подскажите, есть ли какой-то способ упрощенной первой заливки прошивки в данный МК без установки и настройки среды Syntacore IDE, без самого проекта, чисто заливка бинарника.
Например, так:

Код: Выделить всё

python3 ../tools/k1921vg015_uploader.py --run-openocd --openocd-host=127.0.0.1  --adapter-speed=500 --openocd-exec=openocd --openocd-interface=/usr/share/openocd/scripts/interface/jlink.cfg --openocd-target=../tools/k1921vg015.cfg --boot-mode=flash ./loader.bin
Но тут кроме самого пыхтонячьего скрипта (который есть здесь https://gitflic.ru/project/rabidrabbit/ ... file=tools) ещё понадобится собственно рабочий пыхтон и практически любой OpenOCD. Если Вы работает под линухом, то проблем быть не должно :)
Egor Zhorov
Сообщения: 1
Зарегистрирован: 25 мар 2026, 13:20
Предприятие: ООО "Эликс Базис"

Re: К1921ВГ015 общее

Сообщение Egor Zhorov »

Добрый день, форумчане и админы!

Мне понадобилось научиться управлять адресными светодиодами типа WS2812 с использованием К1921ВГ015. С установкой синтакора как-то не задалось (скачанные по инструкции архивы не соответствовали описанию из инструкции), потому разработку я веду в VS-Code + PlatformIO + Platform-VG015* (адаптация родного SDK для использования в PlatformIO) (по инструкции на сайте электроника-и-программирование**).

Для управления светодиодами я использую TMR1_OUT1 на пине B9. TMR1 настроен на тактирование от системного источника 50 МГц без делителей. По прерыванию от CAPCOM[0] на пине устанавливается высокий логический уровень, по прерыванию от CAPCOM[1] устанавливается низкий уровень. По прерыванию от TMR1 идёт обращение к DMA, который устанавливает в CAPCOM[1].VAL следующее значение.

Периодически у меня возникают непонятки с работой DMA. Некоторые передачи устанавливают в CAPCOM[1].VAL некорректное значение, из-за чего работа всех светодиодов идёт наперекосяк (будто у них начинается истерика). На осциллографе это выглядит, как будто CAPCOM[1] просто пропустил своё срабатывание, и пин остаётся на высоком уровне. Получается так, что импульсы склеиваются и вся оставшаяся часть посылки сдвигается на 1 бит. При этом изменения в коде, мало связанные с работой DMA и таймера (например, добавление printf перед формированием и отправкой данных в светодиоды или изменение тайминга) приводят либо к исправлению этой проблемы, либо к её возвращению. Обратите внимание на строки 192 и 296 в src/main.c, эти места можно трогать и будет меняться поведение. В строке 18 можно менять количество светодиодов, в строках 208-210 можно менять параметры отправляемого сигнала. Если я правильно понимаю, main.c можно подсунуть в проект на синтакоре, поскольку ничего стороннего, кроме родного SDK, я не использовал.

Проект - в архиве. Видео с поведением светодиодов и осциллограммами - в папке videos. На осциллограммах можно смотреть на +Pulses снизу слева, по нему хорошо видно как склеиваются импульсы. Спасити-памагити!

Архив с проектом и видео можно найти тут - https://disk.yandex.ru/d/mBI36UohviReRQ

* - https://gitflic.ru/project/binome/platform-vg015
** - https://электроника-и-программирование. ... ormio.html
RabidRabbit
Сообщения: 136
Зарегистрирован: 10 июн 2025, 12:11
Предприятие: HomeWork

Re: К1921ВГ015 общее

Сообщение RabidRabbit »

Egor Zhorov писал(а): 25 мар 2026, 13:46 Мне понадобилось научиться управлять адресными светодиодами типа WS2812
Есть рабочие примеры, для SPI (https://gitflic.ru/project/rabidrabbit/ ... ex_ledsrgb) и для UART (https://gitflic.ru/project/rabidrabbit/ ... _ledsrgb_2), в случае с UART необходим инвертор между выходом UART и WS2812.

Ваш проект посмотрю.
RabidRabbit
Сообщения: 136
Зарегистрирован: 10 июн 2025, 12:11
Предприятие: HomeWork

Re: К1921ВГ015 общее

Сообщение RabidRabbit »

Egor Zhorov писал(а): 25 мар 2026, 13:46 Для управления светодиодами я использую TMR1_OUT1 на пине B9. TMR1 настроен на тактирование от системного источника 50 МГц без делителей. По прерыванию от CAPCOM[0] на пине устанавливается высокий логический уровень, по прерыванию от CAPCOM[1] устанавливается низкий уровень. По прерыванию от TMR1 идёт обращение к DMA, который устанавливает в CAPCOM[1].VAL следующее значение.
У Вас просто иногда не успевает DMA, т.к. для передачи бита "0" используется 16 "тиков" системной тактовой частоты в 50 МГц.

Код: Выделить всё

RMT_ticks_buffer[i*8+j] = ((tx_buf[i]>>(7-j)) & 1) ? 47 : 15;
Попробуйте перейти к 43 и 19, оно вроде в допустимых пределах. Либо поднимать системную частоту, например на 60 МГц для 1200 нс это уже 72 "тика".

Либо переходите на "аппаратные" интерфейсы, примеры выше :)
RabidRabbit
Сообщения: 136
Зарегистрирован: 10 июн 2025, 12:11
Предприятие: HomeWork

Re: К1921ВГ015 общее

Сообщение RabidRabbit »

Egor Zhorov писал(а): 25 мар 2026, 13:46 Для управления светодиодами я использую TMR1_OUT1 на пине B9. TMR1 настроен на тактирование от системного источника 50 МГц без делителей. По прерыванию от CAPCOM[0] на пине устанавливается высокий логический уровень, по прерыванию от CAPCOM[1] устанавливается низкий уровень. По прерыванию от TMR1 идёт обращение к DMA, который устанавливает в CAPCOM[1].VAL следующее значение.
Ещё вот такая заметка:

Код: Выделить всё

bool RMT_is_bisy = 0;
Обновляется в обработчике прерываний, проверяется в "обычном" коде. Во избежание "нюансов" лучше объявить эту переменную как

Код: Выделить всё

volatile bool RMT_is_bisy = 0;
Ответить

Вернуться в «32-разрядные микроконтроллеры»