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

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

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

RabidRabbit
Сообщения: 259
Зарегистрирован: 10 июн 2025, 12:11
Предприятие: HomeWork

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

Сообщение RabidRabbit »

Салим писал(а): 29 авг 2026, 21:20 Как бы напрашивается установить ноль, но вот что дальше делать не понятно.
Это для случая, когда регистр, из которого читаются данные (или куда записываются), может выставлять циклы задержки на шину, если данных пока нет (или когда данные больше не лезут). Иначе, как вы понимаете, результат будет неудовлетворительным.

Обычно всё же, если блок не поддерживает запросы к DMA, то эти запросы генерируют таймером или чем другим подходящим.
durimar_13
Сообщения: 111
Зарегистрирован: 26 фев 2025, 13:06
Предприятие: Radioamateur
Откуда: Свердловская обл.

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

Сообщение durimar_13 »

RabidRabbit писал(а): 30 авг 2026, 00:34 Обычно всё же, если блок не поддерживает запросы к DMA, то эти запросы генерируют таймером или чем другим подходящим.
Спасибо за подсказку! Надо будет на MIK32 такое попробовать. :)
С уважением, Виктор.
Мерседес
Сообщения: 37
Зарегистрирован: 05 авг 2026, 12:53
Предприятие: Каскад

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

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

Добрый день. кто ни будь пробовал выполнение нескольких независимых функций с каналами дма запускаемыми одновременно?
Запустил две задачи, - АЦП, сбор данных в буфер и ЦАП, передача из буфера. (буферы разные). обе с запуском из основного цикла по флагам готовности устанавливаемых в прерываниях. покрутившись немного (несколько десятков или сотен раз) все останавливается. приоритеты это не меняют.
RabidRabbit
Сообщения: 259
Зарегистрирован: 10 июн 2025, 12:11
Предприятие: HomeWork

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

Сообщение RabidRabbit »

С DMA тут полнейшая шляпа (у меня правда плата с ВГ7Т, но блоки DMA одинаковые с ВГ1Т).
Недостаток документации приводит к поразительным эффектам :)
У меня 38400 дескрипторов по SPI (только запись в SPI.DR в закольцованной цепочке из 24 декрипторов и прерываниями в середине и в конце) отрабатывают нормально только при достаточно высокой частоте SPI и передаче в одном дескрипторе 4 байтов.
Я конечно не уверен, что устранил все баги в коде, но другого результат пока нет.
Могу попробовать параллельно запустить приём данных от АЦП.
Как работать с ЦАП, у которого наличие FIFO не заявлено в принципе - вообще не представляю. По одному дескриптору на один отсчёт?
durimar_13
Сообщения: 111
Зарегистрирован: 26 фев 2025, 13:06
Предприятие: Radioamateur
Откуда: Свердловская обл.

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

Сообщение durimar_13 »

RabidRabbit писал(а): 02 сен 2026, 09:28 С DMA тут полнейшая шляпа (у меня правда плата с ВГ7Т, но блоки DMA одинаковые с ВГ1Т).
Недостаток документации приводит к поразительным эффектам :)
У меня 38400 дескрипторов по SPI (только запись в SPI.DR в закольцованной цепочке из 24 декрипторов и прерываниями в середине и в конце) отрабатывают нормально только при достаточно высокой частоте SPI и передаче в одном дескрипторе 4 байтов.
Я конечно не уверен, что устранил все баги в коде, но другого результат пока нет.
Могу попробовать параллельно запустить приём данных от АЦП.
Как работать с ЦАП, у которого наличие FIFO не заявлено в принципе - вообще не представляю. По одному дескриптору на один отсчёт?
Удивительны дела твои НИИЭТ!
"А вот это попробуйте."(c) (Бриллиантовая рука)
Думаю, ЦАПу FIFO вредно иметь, поэтому его и нету.
А вот дальше.... Тайна сия для меня велика есть.
В общем, разочаровал он меня, этот ВГ1Т. Мне не подходит.
Возвращаюсь к старому проекту на ВГ015. Там еще есть что улучшать и расширять. :)
С уважением, Виктор.
RabidRabbit
Сообщения: 259
Зарегистрирован: 10 июн 2025, 12:11
Предприятие: HomeWork

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

Сообщение RabidRabbit »

durimar_13 писал(а): 02 сен 2026, 09:44 Думаю, ЦАПу FIFO вредно иметь, поэтому его и нету.
Как бэ в случае, когда DMA по сигналу от периферийного блока вываливает все что есть в дескрипторе, FIFO точно лишним не будет. Тем более ЦАП может запускать преобразование по событиям, в частности, от таймера, так что FIFO тут вообще никак не повредит :)
RabidRabbit
Сообщения: 259
Зарегистрирован: 10 июн 2025, 12:11
Предприятие: HomeWork

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

Сообщение RabidRabbit »

durimar_13 писал(а): 02 сен 2026, 09:44 Возвращаюсь к старому проекту на ВГ015.
ВГ015 при всех своих приколах выглядит всё равно более работоспособным, чем серия ВГ{1,3,5,7}T :)
RabidRabbit
Сообщения: 259
Зарегистрирован: 10 июн 2025, 12:11
Предприятие: HomeWork

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

Сообщение RabidRabbit »

Вся надежда на то, что это просто недоработанная документация :)
Мерседес
Сообщения: 37
Зарегистрирован: 05 авг 2026, 12:53
Предприятие: Каскад

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

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

RabidRabbit писал(а): 02 сен 2026, 09:28
Как работать с ЦАП, у которого наличие FIFO не заявлено в принципе - вообще не представляю. По одному дескриптору на один отсчёт?
FIFO вроде и не нужно. в программном варианте все прилично работает. работает и с ДМА, если нет параллельно ещё одной задачи. дескрипторов столько:
Распределение по дескрипторам
Дескриптор Байты Отсчёты Диапазон буфера Флаги
0 1020 510 [0...509] Ссылка на desc 1
1 1020 510 [510...1019] Ссылка на desc 2
2 1020 510 [1020...1529] Ссылка на desc 3
3 1020 510 [1530...2039] Ссылка на desc 4
4 1020 510 [2040...2549] Ссылка на desc 5
5 1020 510 [2550...3059] Ссылка на desc 6
6 1020 510 [3060...3569] Ссылка на desc 7
7 1020 510 [3570...4079] Ссылка на desc 8
8 120 60 [4080...4139] LAST + INT
Мерседес
Сообщения: 37
Зарегистрирован: 05 авг 2026, 12:53
Предприятие: Каскад

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

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

RabidRabbit писал(а): 02 сен 2026, 10:00
durimar_13 писал(а): 02 сен 2026, 09:44 Думаю, ЦАПу FIFO вредно иметь, поэтому его и нету.
Как бэ в случае, когда DMA по сигналу от периферийного блока вываливает все что есть в дескрипторе, FIFO точно лишним не будет. Тем более ЦАП может запускать преобразование по событиям, в частности, от таймера, так что FIFO тут вообще никак не повредит :)
ну в моем случае все тактируется таймером, все вроде как положено. поскольку скорость заявлена приличная, то отсутствие FIFO не напрягает.
Ответить

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