Описание DMA в РП К1921ВГ1Т

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

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

Мерседес
Сообщения: 37
Зарегистрирован: 05 авг 2026, 12:53
Предприятие: Каскад

Re: Описание DMA в РП К1921ВГ1Т

Сообщение Мерседес »

durimar_13 писал(а): 02 сен 2026, 09:44

В общем, разочаровал он меня, этот ВГ1Т. Мне не подходит.
Возвращаюсь к старому проекту на ВГ015. Там еще есть что улучшать и расширять. :)
зачем так мрачно. попробуйте две задачи с ДМА. а может у Вас как раз все и получится........
RabidRabbit
Сообщения: 259
Зарегистрирован: 10 июн 2025, 12:11
Предприятие: HomeWork

Re: Описание DMA в РП К1921ВГ1Т

Сообщение RabidRabbit »

Кстати да, SPI-DMA заработало вполне норм. Но документация всё рано ужасная :)
RabidRabbit
Сообщения: 259
Зарегистрирован: 10 июн 2025, 12:11
Предприятие: HomeWork

Re: Описание DMA в РП К1921ВГ1Т

Сообщение RabidRabbit »

Мерседес писал(а): 02 сен 2026, 05:13 Добрый день. кто ни будь пробовал выполнение нескольких независимых функций с каналами дма запускаемыми одновременно?
Запустил две задачи, - АЦП, сбор данных в буфер и ЦАП, передача из буфера. (буферы разные). обе с запуском из основного цикла по флагам готовности устанавливаемых в прерываниях. покрутившись немного (несколько десятков или сотен раз) все останавливается. приоритеты это не меняют.
Попробуйте включить обоим каналам JOINT_MODE (в CONTROL и STATIC2), два канала на передачу так не зависают.
Мерседес
Сообщения: 37
Зарегистрирован: 05 авг 2026, 12:53
Предприятие: Каскад

Re: Описание DMA в РП К1921ВГ1Т

Сообщение Мерседес »

RabidRabbit писал(а): 02 сен 2026, 13:14
Мерседес писал(а): 02 сен 2026, 05:13 Добрый день. кто ни будь пробовал выполнение нескольких независимых функций с каналами дма запускаемыми одновременно?
Запустил две задачи, - АЦП, сбор данных в буфер и ЦАП, передача из буфера. (буферы разные). обе с запуском из основного цикла по флагам готовности устанавливаемых в прерываниях. покрутившись немного (несколько десятков или сотен раз) все останавливается. приоритеты это не меняют.
Попробуйте включить обоим каналам JOINT_MODE (в CONTROL и STATIC2), два канала на передачу так не зависают.
попробую, но в документации написано - Этот режим наиболее эффективен, когда:
- ведомые устройства на шине AXI чтения и записи работают пакетами одинакового размера (обязательно).
- у ведомого устройства на шине AXI нет большой задержки в выполнении доступов (циклы ожидания на шине чтения останавливают шину записи и наоборот).
- необходимо передать большой объем данных.
Совместный режим не подходит для обслуживания периферийных устройств. и еще где то написано что скорости должны быть одинаковы.
RabidRabbit
Сообщения: 259
Зарегистрирован: 10 июн 2025, 12:11
Предприятие: HomeWork

Re: Описание DMA в РП К1921ВГ1Т

Сообщение RabidRabbit »

Я тоже читал РП. Но вот оно так заработало. Один пишет в SPI, второй в ЦАП.
RabidRabbit
Сообщения: 259
Зарегистрирован: 10 июн 2025, 12:11
Предприятие: HomeWork

Re: Описание DMA в РП К1921ВГ1Т

Сообщение RabidRabbit »

Видимо, поторопился. Повторить не получается, два канала зависают, хоть в JOINT_MODE, хоть нет.
RabidRabbit
Сообщения: 259
Зарегистрирован: 10 июн 2025, 12:11
Предприятие: HomeWork

Re: Описание DMA в РП К1921ВГ1Т

Сообщение RabidRabbit »

Мерседес писал(а): 02 сен 2026, 10:16 ну в моем случае все тактируется таймером, все вроде как положено. поскольку скорость заявлена приличная, то отсутствие FIFO не напрягает.
Подскажите, пожалуйста, ЦАП у Вас работает, на выходе именно то, что нужно? У меня в ВГ7Т при переключении вывода GPIOB.14 (на AF1 которого повешен ЦАП) и включении ЦАП никак не удаётся получить на выходе что-нибудь кроме нуля.
Мерседес
Сообщения: 37
Зарегистрирован: 05 авг 2026, 12:53
Предприятие: Каскад

Re: Описание DMA в РП К1921ВГ1Т

Сообщение Мерседес »

инициализация во вложении. проблем не было, источник опорного напряжения внутренний или внешний. под внешним понимается напряжение питания которое в этом контроллере имеет внутреннее соединение. программный запуск хорошо работает. DAC0->DATA12 = 2000; сначала записать значение напряжение в регистр, потом DAC0->SWTRIG_bit.SWTRIG = 1; // Запустить преобразование . после 10 сентября поддержка обещала подготовить и выложить пример передачи из буфера в цап через дма.
Вложения
DAC_Init.docx
(11.81 КБ) 20 скачиваний
RabidRabbit
Сообщения: 259
Зарегистрирован: 10 июн 2025, 12:11
Предприятие: HomeWork

Re: Описание DMA в РП К1921ВГ1Т

Сообщение RabidRabbit »

У меня так:

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

  // GPIOB.14
  GPIOB->PULLMODE_bit.PIN14 = 0;
  GPIOB->ALTFUNCNUM_bit.PIN14 = GPIO_ALTFUNCNUM_PIN14_AF1;
  GPIOB->ALTFUNCSET = GPIO_PIN_MASK(14);
  
  // DAC
  RCU->CGCFGAPB_bit.DACEN = 1;
  RCU->RSTDISAPB_bit.DACEN = 1;
  
  DAC->CONTROL = DAC_CONTROL_BUF_EN_Msk;
И далее в цикле занос значений в DATA12 и установка бита SWTRIG.
Т.е. в отличие от ВГ1Т выделенной ноги под ЦАП нет, а значит скорее всего в ВГ7Т накосячили с коммутатором.

GPIOB включен, т.е. если GPIOB.14 настроить как двухтактный выход и переключать состояние - то состояние вывода меняется.
Мерседес
Сообщения: 37
Зарегистрирован: 05 авг 2026, 12:53
Предприятие: Каскад

Re: Описание DMA в РП К1921ВГ1Т

Сообщение Мерседес »

у меня такого контроллера не было, но согласно тех. описания ИИ выдала инициализацию. (во вложении). вроде похоже на правду.
Вложения
DAC_Init2.docx
(18.99 КБ) 18 скачиваний
Ответить

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