работа алгоритма системы сбора данных с АЦП с использованием двойной буферизации и прямого доступа к памяти (DMA) для ми

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

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

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

Re: работа алгоритма системы сбора данных с АЦП с использованием двойной буферизации и прямого доступа к памяти (DMA) дл

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

И только RabidRabbit быстро его раскусил, честь ему и уважуха!
[/quote] подскажите пожалуйста, сколько времени у Вас занимает запись программы в память микроконтроллера.
RabidRabbit
Сообщения: 254
Зарегистрирован: 10 июн 2025, 12:11
Предприятие: HomeWork

Re: работа алгоритма системы сбора данных с АЦП с использованием двойной буферизации и прямого доступа к памяти (DMA) дл

Сообщение RabidRabbit »

Мерседес писал(а): 21 авг 2026, 04:33 подскажите пожалуйста, сколько времени у Вас занимает запись программы в память микроконтроллера.
В понедельник подскажу, сейчас образца ВГ7Т под рукой нет.
durimar_13
Сообщения: 111
Зарегистрирован: 26 фев 2025, 13:06
Предприятие: Radioamateur
Откуда: Свердловская обл.

Re: работа алгоритма системы сбора данных с АЦП с использованием двойной буферизации и прямого доступа к памяти (DMA) дл

Сообщение durimar_13 »

Выкладываю вырезки из моего рабочего main.c
Вырезаны фрагменты по которым может быть понятно, как это работает.
Здесь АЦП работает в циклическом режиме с задержками между запусками.
Мне не удалось получить скорость выборки больше 500кГц.
Причина, я думаю, в затратах на обработку прерываний и перезапись в БОЛЬШОЙ буфер.
Вырезки из main.c.zip
(4.45 КБ) 58 скачиваний
С уважением, Виктор.
Мерседес
Сообщения: 37
Зарегистрирован: 05 авг 2026, 12:53
Предприятие: Каскад

Re: работа алгоритма системы сбора данных с АЦП с использованием двойной буферизации и прямого доступа к памяти (DMA) дл

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

durimar_13 писал(а): 21 авг 2026, 17:51 Выкладываю вырезки из моего рабочего main.c
Вырезаны фрагменты по которым может быть понятно, как это работает.
Здесь АЦП работает в циклическом режиме с задержками между запусками.
Мне не удалось получить скорость выборки больше 500кГц.
Причина, я думаю, в затратах на обработку прерываний и перезапись в БОЛЬШОЙ буфер.
Вырезки из main.c.zip
в последнем примере работы ацп была демонстрация цепочки дескрипторов. они переключаются на автомате, передавая эстафету друг другу. и прерывание одно, - от дма по заполнению буфера полностью.
RabidRabbit
Сообщения: 254
Зарегистрирован: 10 июн 2025, 12:11
Предприятие: HomeWork

Re: работа алгоритма системы сбора данных с АЦП с использованием двойной буферизации и прямого доступа к памяти (DMA) дл

Сообщение RabidRabbit »

Мерседес писал(а): 21 авг 2026, 18:09 в последнем примере работы ацп была демонстрация цепочки дескрипторов. они переключаются на автомате, передавая эстафету друг другу. и прерывание одно, - от дма по заполнению буфера полностью.
Поддержу про цепочки. С ними хоть два, хоть три, хоть N буферов, только не очень больших :)
durimar_13
Сообщения: 111
Зарегистрирован: 26 фев 2025, 13:06
Предприятие: Radioamateur
Откуда: Свердловская обл.

Re: работа алгоритма системы сбора данных с АЦП с использованием двойной буферизации и прямого доступа к памяти (DMA) дл

Сообщение durimar_13 »

RabidRabbit писал(а): 21 авг 2026, 19:03 Поддержу про цепочки. С ними хоть два, хоть три, хоть N буферов, только не очень больших :)
Вот, вот.Но DMA буфер не больше, чем размер FIFO. В случае АЦП - 32 полуслова (по 16 бит). И получается, что не получается, когда надо 10000 быстрых транзакций.
Да что же это. Неужели нет решения?
Мне очень жаль, что я плохой программист....
С уважением, Виктор.
RabidRabbit
Сообщения: 254
Зарегистрирован: 10 июн 2025, 12:11
Предприятие: HomeWork

Re: работа алгоритма системы сбора данных с АЦП с использованием двойной буферизации и прямого доступа к памяти (DMA) дл

Сообщение RabidRabbit »

durimar_13 писал(а): 21 авг 2026, 21:42 Да что же это. Неужели нет решения?
32 отсчёта (64 байта) на один дескриптор. Выстроите в цепочку 100 дескрипторов - получите возможность заполнить буфер в 3200 отсчётов "на одно прерывание".

Т.е. вот такое "кольцо" дескрипторов D1[0]->D1[1]->D1[2]->...->D1[99]->D2[0]->D2[1]->...->D2[99]->D1[0] обеспечит двойной буфер на 3200 отсчётов, где дескрипторы D1 и D2 относятся соответственно к первому и второму буферу, а у дескрипторов D1[99] и D2[99] взведены флаги генерации прерывания.

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

Re: работа алгоритма системы сбора данных с АЦП с использованием двойной буферизации и прямого доступа к памяти (DMA) дл

Сообщение durimar_13 »

RabidRabbit писал(а): 21 авг 2026, 22:50 Т.е. вот такое "кольцо" дескрипторов D1[0]->D1[1]->D1[2]->...->D1[99]->D2[0]->D2[1]->...->D2[99]->D1[0] обеспечит двойной буфер на 3200 отсчётов, где дескрипторы D1 и D2 относятся соответственно к первому и второму буферу, а у дескрипторов D1[99] и D2[99] взведены флаги генерации прерывания.

Вам про примерно такую схему, кстати, коллега с ником "Мерседес" и рассказывал.
Мне стоит опять признаться, что программист я никакой.
Спасибо за консультации. Про то, как построить цепочки дескрипторов я от Вас понял, в РП совсем не внятно об этом написано.
А если нужно 10 000 отсчетов за один одно прерывание, или 50 000, это сколько же мне надо дескрипторов описывать? А памяти хватит?
Хотелось бы еще иметь возможность программно изменять объемы выборок. Это что же, мне нужно будет делать количество дескрипторов по максимуму? Ограничения на это количество я в РП не помню.
Ладно, это так, "старческое бурчание".
Учиться надо!
С уважением, Виктор.
Мерседес
Сообщения: 37
Зарегистрирован: 05 авг 2026, 12:53
Предприятие: Каскад

Re: работа алгоритма системы сбора данных с АЦП с использованием двойной буферизации и прямого доступа к памяти (DMA) дл

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

вот это, пояснение от ИИ работы цепочки дескрипторов.
durimar_13
Сообщения: 111
Зарегистрирован: 26 фев 2025, 13:06
Предприятие: Radioamateur
Откуда: Свердловская обл.

Re: работа алгоритма системы сбора данных с АЦП с использованием двойной буферизации и прямого доступа к памяти (DMA) дл

Сообщение durimar_13 »

Мерседес писал(а): 23 авг 2026, 05:06 заполнение буфера в этом коде.docx вот это, пояснение от ИИ работы цепочки дескрипторов.
Спасибо, посмотрю.
Моя Алиса Яндексовна тоже неплохие перлы выдала по этому вопросу.
С уважением, Виктор.
Ответить

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