Описание DMA в РП К1921ВГ1Т
Модераторы: ea, dav, bkolbov, Alis, pip, _sva_
-
RabidRabbit
- Сообщения: 254
- Зарегистрирован: 10 июн 2025, 12:11
- Предприятие: HomeWork
Re: Описание DMA в РП К1921ВГ1Т
Редиски в чипыдэйле никак мне плату с ВГ7Т не отгрузят
Может на этой неделе доедет всё же.
-
durimar_13
- Сообщения: 111
- Зарегистрирован: 26 фев 2025, 13:06
- Предприятие: Radioamateur
- Откуда: Свердловская обл.
Re: Описание DMA в РП К1921ВГ1Т
8 штук деревянных! Ничего себе игрушечка...RabidRabbit писал(а): ↑10 авг 2026, 10:35 Редиски в чипыдэйле никак мне плату с ВГ7Т не отгрузятМожет на этой неделе доедет всё же.
С уважением, Виктор.
-
RabidRabbit
- Сообщения: 254
- Зарегистрирован: 10 июн 2025, 12:11
- Предприятие: HomeWork
Re: Описание DMA в РП К1921ВГ1Т
Месяц без пива
Re: Описание DMA в РП К1921ВГ1Т
durimar_13 писал(а): ↑01 авг 2026, 05:53 RabidRabbit, Спасибо большое!
Вижу Ваши проекты на Gitflic, значит Вы точно сможете мне растолковать, что со мной не так.
Я взял пример из k1921vg1t_sdk который зовется adc_tmr_dma и немного переиначил его под
свои нужды:
1. Циклический режим с задержками
2. Программный запуск секвенсора 0
3. Передача результатов АЦП в буфер ОЗУ 2048 байт ч/з DMA. В примере было - 64 байта
4. Прерывания не использую, ловлю состояние флагов
Как не стараюсь, буфер заполняется только на то значение, которое я указываю как уровень заполнения FIFO.
В примере было 16 - заполняется 16 элементов в буфере ОЗУ, если поставить 1 - будет один элемент, если 32 - будет 32 заполнено.
Больше того, это происходит только в первой итерации главного цикла. В последующих - буфер ОЗУ не заполняется вовсе.
Что за....?
Не думаю, что мне нужна цепочка дескрипторов, но пробовал и ее, как Вы и написали.
Не получается у меня!
Если Вы возьметесь рассмотреть мой код и указать на ошибку, я выложу весь.
Помогите, пожалуйста!
ЗЫ: Про ВАЙБ-кодинг слышал, ИИ по имени Алиса помогает мне иногда, но не в этот раз.![]()
Добрый день.
По одному каналу DMA возможна пересылка данных более 1Кб при использовании цепочки дескрипторов DMA. При этом каждый дескриптор может переслать до 1023 байт.
Для этого необходимо указать, что это не последняя команда списка
DMA->CH[0].CONFIG = (0 << DMA_CH_CONFIG_CMD_LAST_Pos ) | // Сбрасываем флаг последней команды в списке
(1 << DMA_CH_CONFIG_CMD_SET_INT_Pos); // Разрешение прерывания, как только будет передан весь буфер
и записать адрес следующей команды в регистр DMA->CH[0].DST_PTR
Тип данных для структуры команд DMA (DMA_Channel_TypeDef) объявлен в файле "K1921VG1t.h"
Скорректируем пример "projects/NIIET-DEV-K1921VG1T/adc_tmr_dma" для передачи более 1Кб данных и обновим его в репозитории https://gitflic.ru/project/niiet/k1921vg1t_sdk.
В РП дополним описание DMA и обновим в репозитории.
Следите за обновлениями наших репозиториев.
-
durimar_13
- Сообщения: 111
- Зарегистрирован: 26 фев 2025, 13:06
- Предприятие: Radioamateur
- Откуда: Свердловская обл.
Re: Описание DMA в РП К1921ВГ1Т
Добрый всем вечерочек!
Поработал с обновленным примером adc_tmr_dma. Здорово! Но не все.
В обновленном примере распечатывается только первые 16 результатов, как и было раньше.
А потому проблемы не видно.
Нам нужно 1000 и больше последовательных результатов.
Если в этом примере попытаться увидеть все 1000 замеров, то все равно правильными будут только 16,
только те, что хранились в FIFO при первом вызове DMA.
Есть какие соображения?
Поработал с обновленным примером adc_tmr_dma. Здорово! Но не все.
В обновленном примере распечатывается только первые 16 результатов, как и было раньше.
А потому проблемы не видно.
Нам нужно 1000 и больше последовательных результатов.
Если в этом примере попытаться увидеть все 1000 замеров, то все равно правильными будут только 16,
только те, что хранились в FIFO при первом вызове DMA.
Есть какие соображения?
С уважением, Виктор.
-
RabidRabbit
- Сообщения: 254
- Зарегистрирован: 10 июн 2025, 12:11
- Предприятие: HomeWork
Re: Описание DMA в РП К1921ВГ1Т
Соображений нет, но приехала плата с ВГ7Т, буду пробовать АЦП + ПДП.
-
durimar_13
- Сообщения: 111
- Зарегистрирован: 26 фев 2025, 13:06
- Предприятие: Radioamateur
- Откуда: Свердловская обл.
Re: Описание DMA в РП К1921ВГ1Т
Доброе время суток!RabidRabbit писал(а): ↑13 авг 2026, 21:17Соображений нет, но приехала плата с ВГ7Т, буду пробовать АЦП + ПДП.
Я рад за Вас! Ну, если что, решение опубликуйте, пожалуйста.
С уважением, Виктор.
Re: Описание DMA в РП К1921ВГ1Т
речь вот об этом примере? ............. Пример работы с АЦП последовательного приближения для K1921VG1T
* на плате NIIET-DEV-K1921VG1T
* Измерения внешних каналов АЦП с 0 по 15 с помощью секвенсора 0
* по запросу от TMR1
* Результаты АЦП пересылаются в массив adc_res с помощью цепочки
* дескрипторов DMA................Блоки в цепочке дескрипторов имеют размер 1022 байта (кроме последнего, который равен остатку — 4 байта........ если пример подходит под вашу реализацию аппаратной части, не могли бы вы его опробовать?
* на плате NIIET-DEV-K1921VG1T
* Измерения внешних каналов АЦП с 0 по 15 с помощью секвенсора 0
* по запросу от TMR1
* Результаты АЦП пересылаются в массив adc_res с помощью цепочки
* дескрипторов DMA................Блоки в цепочке дескрипторов имеют размер 1022 байта (кроме последнего, который равен остатку — 4 байта........ если пример подходит под вашу реализацию аппаратной части, не могли бы вы его опробовать?
-
durimar_13
- Сообщения: 111
- Зарегистрирован: 26 фев 2025, 13:06
- Предприятие: Radioamateur
- Откуда: Свердловская обл.
Re: Описание DMA в РП К1921ВГ1Т
Здравствуйте!Мерседес писал(а): ↑14 авг 2026, 00:16 речь вот об этом примере? ............. Пример работы с АЦП последовательного приближения для K1921VG1T
* на плате NIIET-DEV-K1921VG1T
* Измерения внешних каналов АЦП с 0 по 15 с помощью секвенсора 0
* по запросу от TMR1
* Результаты АЦП пересылаются в массив adc_res с помощью цепочки
* дескрипторов DMA................Блоки в цепочке дескрипторов имеют размер 1022 байта (кроме последнего, который равен остатку — 4 байта........ если пример подходит под вашу реализацию аппаратной части, не могли бы вы его опробовать?
Пробовал уже.
Там в новом примере в коде остался рудимент - распечатка 16 результатов, а нам надо - полный массив.
Я поправил, но не получается у меня правильного результата. Письмо в поддержку написал вчера поздно вечером.
С уважением, Виктор.
-
RabidRabbit
- Сообщения: 254
- Зарегистрирован: 10 июн 2025, 12:11
- Предприятие: HomeWork
Re: Описание DMA в РП К1921ВГ1Т
Вот.
32-хразрядный таймер0 пинает АЦПэшный секвенсор0 100 раз в секунду.
секвенсор0 АЦП настроен на запуск от пинка таймера0, за один запуск восемь измерений одного канала (на плате подключен к пользовательской кнопке, подтянут к питанию, при нажатии замыкается на "землю"), запрос в сторону DMA после 32 измерений.
DMA настроен на "двойной буфер" (два дескриптора закольцованы, как я до этого предлагал), по прерыванию от канала DMA инкрементируется глобальная переменная, и по ней в основном цикле идёт вывод в UART.
жамкаю кнопку - показания меняются
