Кто любит RISC в жизни, заходим, не стесняемся.
Ответить

STM32 MULTI ADC DMA MODE

Вс янв 29, 2023 09:37:20

Здравствуйте. Я предположил, что переменное напряжение можно измерить, подав его непосредственно между двумя выходами АЦП. Разница преобразованных значений даст мне отрицательный или положительный результат от -Vref 3.3v до +Vref 3.3v итого 6.6 вольта. Можно проводить последовательные преобразования каналов в группе, а можно запустить одновременное преобразование на двух или даже трех АЦП.
Контроллер DMA, может работать c определенным периферийным устройством только на определенном потоке-канале.
Первое что непонятно, для чего например ADC1 можно подключить на:
DMA2 stream0 channel0
DMA2 stream4 channel0
то есть в чем разница, подключу я на нулевой поток или на четвертый?
Второе это в регистрах настройки каждого АЦП есть бит указывающий ему отправлять запросы в DMA. Но это только для single ADC mode.
А в настройка общего для всех АЦП регистра ADC_CCR можно указать режим DMA для multi ADC mode.
Третье, могу ли я обойтись одним потоком DMA для передачи из ADC_CDR в память?
На каком потоке-канале ожидать запросов к DMA от какого АЦП?
Я понимаю, задача того еще шрёдингера , но все же...

Re: STM32 MULTI ADC DMA MODE

Вс янв 29, 2023 11:06:37

Разница в приоритете арбитража:
Arbiter
...
Hardware: If two requests have the same software priority level, the stream with the
lower number takes priority over the stream with the higher number. For example,
Stream 2 takes priority over Stream 4.

Арбитраж.
...
Аппаратый: если два запроса имеют одинаковый уровень программного приоритета, поток с меньшим номером имеет приоритет над потоком с большим номером. Например, поток 2 имеет приоритет над потоком 4.


По второму и третьему вопросам - аналогично, ищем ответ в референс-мануале:
DMA requests in Multi ADC mode:
In Multi ADC mode the DMA may be configured to transfer converted data in three
different modes. In all cases, the DMA streams to use are those connected to the ADC:

Запросы DMA в режиме Multi ADC:
В режиме Multi ADC DMA может быть настроен для передачи преобразованных данных в трех различных режимах. Во всех случаях используются потоки DMA, подключенные к АЦП:

ну и далее по тексту. Копипастить сюда его полностью - много текста.

Re: STM32 MULTI ADC DMA MODE

Вс янв 29, 2023 18:03:17

В принципе я разобрался, просто допустил ошибку в коде. В мануале написано:
In multi ADC mode, the converted data can be read on the multi-mode data register (ADC_CDR),
то есть можно прочитать оттуда, но как бы не обязывает.
Оказалось что нет, если не забирать данные из ADC_CDR выскакивает ошибка переполнения АЦП (overflow).
И наоборот, забирать данные из ADC1_DR, ADC2_DR, ADC3_DR уже не нужно.
Осталось разобраться когда происходит запрос DMA если два одновременных преобразования финишируют в разное время.

Re: STM32 MULTI ADC DMA MODE

Пн янв 30, 2023 01:39:59

Я предположил, что переменное напряжение можно измерить, подав его непосредственно между двумя выходами АЦП. Разница преобразованных значений даст мне отрицательный или положительный результат от -Vref 3.3v до +Vref 3.3v итого 6.6 вольта

Сделать так не выйдет. Сигнал на вход АЦП подается, прежде всего, относительно общего провода схемы. Даже если это дифференциальный АЦП.
Про "склейку" двух разных АЦП я уже не говорю. Это практически неразрешимая проблема. Погрешность такой "склейки" будет на несколько двоичных порядков выше разрешающей способности 12-разрядного АЦП. То есть гораздо проще и эффективнее просто сместить переменный сигнал на половину динамического диапазона АЦП. А если нужно повысить разрядность, то для этого есть оверсемплинг.
Последний раз редактировалось КРАМ Пн янв 30, 2023 07:21:53, всего редактировалось 1 раз.

Re: STM32 MULTI ADC DMA MODE

Пн янв 30, 2023 07:18:32

Так то да, это будет то же самое, что и измерение относительно Vref/2. Но пусть попробует :) Как говорится, пока вот сам не попробуешь - не поймешь.
У АЦП, кстати, есть специальный относительный режим, в котором можно задать в регистрах data offset половину от Vref и в регистрах результата получать уже сразу положительные и отрицательные числа. Значение в регистре смещения аппаратно вычитается из измеренного АЦП и в регистр результата кладется эта разность.

Re: STM32 MULTI ADC DMA MODE

Пн янв 30, 2023 07:24:56

можно задать в регистрах data offset половину от Vref и в регистрах результата получать уже сразу положительные и отрицательные числа.

Почти бессмысленная возможность. Все равно нужно измерять оффсет АЦП и компенсировать его вычитанием.

Re: STM32 MULTI ADC DMA MODE

Ср фев 01, 2023 08:31:35

Да, потенциал gnd контроллера может плавать относительно относительно нулевого потенциала источника сигнала. Может получится привязать их. Смещать переменку в плюс я пробовал примитивной схемой делителей, на синусоиде 50 гц бугры глубже ям в полтора раза )).
И выше я там прогнал про overflow, конечно же overrun.
Последний раз редактировалось danone78 Ср фев 01, 2023 09:20:37, всего редактировалось 1 раз.

Re: STM32 MULTI ADC DMA MODE

Ср фев 01, 2023 09:07:02

Может получится привязать их.

Вы сами понимаете о чем говорите? :facepalm:
Причем тут привязка?
Есть два АЦП и ОДИН сигнал. У всех АЦП общая земля.

Добавлено after 5 minutes 41 second:
Смещать переменку в плюс я пробовал

Не надо ничего пробовать. Нужно посчитать, а потом сделать.
Схема может быть любой. Важно, чтобы она работала при существующем внутреннем сопротивлении источника сигнала и сопротивлении делителя. И с учетом времени захвата сигнала.
Никакого другого способа измерять переменные напряжения на униполярном АЦП, кроме как сместить весь сигнал так, чтобы он уложился в ДД АЦП, не существует.

Re: STM32 MULTI ADC DMA MODE

Ср фев 01, 2023 13:55:15

Я делаю ставку на то, что питание ацп будет гальванически отвязано от питания источника сигнала.
Например батарейка 1.5 в подключена между двух АЦП.

Re: STM32 MULTI ADC DMA MODE

Ср фев 01, 2023 15:57:23

Я делаю ставку

Вы получите два противофазных сигнала на каждом АЦП относительно нуля, если входы будут совершенно равноимпедансны (иначе будут разные амплитуды плеч).
Подавать отрицательное напряжение на вход АЦП нельзя. Получите либо защелкивание входа, либо непредсказуемое поведение после отрицательной полуволны.
Изображение

ЗЫ. В догон. Амплитуда на каждом будет вполовину меньше. Источник в симуляторе имеет амплитуду 1 Вольт. Амплитуда плеч - 0,5 Вольта.

Re: STM32 MULTI ADC DMA MODE

Чт фев 02, 2023 12:17:00

Мне вас не победить )), не будет отрицательного напряжения относительно Vss, -Vref. В худшем случае при зашкале сработает защитный TVS , по даташиту встоенная защита держит 20 mA. Уже все работает, осталось наладить настройку сэмплирования и частот тактирования ацп.
Хочу обратить вниманиена другое:
Включение DMA на ацп производится переключением битов ответственных за этот режим из нуля в единицу.
При первой инициализации проблем нет, но если потом не обнулить adc-ccr, то при следующем включении ацп, dma будет ждать у моря погоды и контроллер не получит запрос на прерывание от dma. Однако overrun при этом не происходит, видимо потому, что режим dma не включился.

Добавлено after 1 hour 7 minutes 15 seconds:
По факту я подключал ацп f407vet6 сеть 220в через два резистора в 150кОм, один к Vss другой к PA0. Без шунтов все зашкаливает, но он не умер.

Re: STM32 MULTI ADC DMA MODE

Чт фев 02, 2023 12:37:06

Дорого нынче совать в розетку F407VE...

Re: STM32 MULTI ADC DMA MODE

Чт фев 02, 2023 13:37:09

Думаю можно смело совать через 2*75к. 311/150=2мА. 220*220/150=0.3вт. Резисторы будут слегка греться.

Re: STM32 MULTI ADC DMA MODE

Чт фев 02, 2023 14:47:47

не будет отрицательного напряжения относительно Vss
Конечно не будет. Ибо остальное будет ограничено балластом в виде внешних сопротивлений и током через диодную растяжку. Просто вы по сути ничего не получили, использовав два АЦП, по сравнению с обычным смещением. Кроме того, вы не проверили как себя ведет сигнал около нуля НА ПОЛУЧЕННЫХ ЗНАЧЕНИЯХ с АЦП. Настроить оффсет нуля так же стало невозможно.
По факту я подключал ацп f407vet6 сеть 220в через два резистора в 150кОм

У вас автономное устройство? Изоляторы от сети не требуются?
Вообще то поставить небольшой копеечный трансформатор специально для целей измерения сети гораздо проще, чем городить оптику на выходе.
https://aliexpress.ru/item/32960491471. ... 6388787763
https://innovatorsguru.com/zmpt101b/

Re: STM32 MULTI ADC DMA MODE

Чт фев 02, 2023 16:25:42

Все импульсные источники питания проектируются гальванически отвязанными от сети. Обратная связь оптопарой. Тот же трансформатор, только частота 20-45 кГц.
С нулем проблем нет, даже импенданс не снижал пока. Обвязка у меня будет громоздкая ввиду того что все это у меня висит на кнопочном телефоне 1984 года. Ловит много помех на высоком импендансе.

Re: STM32 MULTI ADC DMA MODE

Чт фев 02, 2023 16:50:37

Все импульсные источники питания

Вы измеряете выходное напряжение импульсного источника питания?

Re: STM32 MULTI ADC DMA MODE

Чт фев 02, 2023 16:53:20

Постараюсь отправить схему, а то у меня почему-то картинки не грузятся. Вы прислали схему из ltspice это очень хорошо, но она у вас не дает полной картины. Добавьте туда питание ацп.
Последний раз редактировалось danone78 Чт фев 02, 2023 21:08:18, всего редактировалось 1 раз.

Re: STM32 MULTI ADC DMA MODE

Чт фев 02, 2023 17:04:17

Нужно в расширенном ответе нажать вот сюда и загрузить сюда картинку, а затем скопировать ссылку на нее и вставить в текст ответа:

Изображение

Re: STM32 MULTI ADC DMA MODE

Чт фев 02, 2023 18:12:00

dualADC.jpg
(196.01 KiB) Скачиваний: 44

Re: STM32 MULTI ADC DMA MODE

Чт фев 02, 2023 20:26:39

...

Это хоть и более корректная попытка, но и она ничего результативного не принесет. Склеить шкалы двух разных АЦП практически невозможно. Точка склеивания будет иметь неизвестный разрыв на сумму разных оффсетов двух АЦП. Точность может даже ухудшиться.
Ответить