Перейти к содержанию
    

Задача для шести аналоговых сигналов и трех АЦП в STM32F407(STM32F207 или AT32F407)

Имеется три группы сигналов по два в каждой группе. Необходимо их захватить сигнал 60 кГц с частотой дискретизации 480 кГц (допустимо, но нежелательно - 240 кГц) окном в 512 отсчетов (для 240 кГц - 256 отсчетов) так, чтобы в полученных шести массивах можно было пару сигналов в каждой группе матрицировать как сумму и разность. Дальнейшая обработка сведется к одноточечному ДПФ для каждого матрицированного массива.

Кто может что нибудь сказать по поводу оптимальной реализации. То есть о достижении максимального синхронизма при захвате каждой пары.

Для наглядности приведу диспозицию задачи с некоторыми ограничениями при выборе семплирующих таймеров.

 

2023.08.14 13-51-06.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Запускайте таймеры от ещё одного таймера (третьего) или внешнего пина.

Или все от Timer 2 Update

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Один ацп меряет два входа. конечно будет сдвиг на время преобразования.

Но все три АЦП могут запускаться одновременно от timer 2

и затем все три будут мерять вторые входы через заданное время преобразования.

Если критично задержка на время преобразования - ставьте шесть АЦП и меряйте одновременно

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Прикольно... В МК только ТРИ АЦП. Никаких внешних ставить нельзя. Общая задача состоит в замене dsPIC33CH на AT32F407, у которого АЦП и таймеры идентичны STM32F407/207. Кроме того, я не ставлю условия фазовых сдвигов между парами. То есть если захватывать двумя АЦП синхронно одну пару, а затем переключить на другую и успеть все три пары с частотой 480 кГц, то задача будет решена идеально.

Вопрос в том, как запустить всю эту историю в автоматическом режиме. Допускается загрузка в прерывании по 2-му АЦП без ДМА. остальные, естественно, с ДМА.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Про AT32F407 не скажу. Только ATF415 есть. На STM32F407 запускаются три АЦП ОДНОВРЕМЕННО по одному таймеру 2 (например). Через время преобразование (какое выставлено) считываются следующие 3 входа.

Все работают через ДМА конечно. Точно 480 кГц может и не будет, но какую то близкуб подобрать можно.

Или поставить кварц что бы на выходе таймера получалось точно 480

В CubeMX можно посмотреть, что там в настройках нужно указать.


 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не вижу никаких сложностей. Забудьте про третий АЦП. Настраиваете первый и второй АЦП на цикличное преобразование трех каналов: АЦП1 будет измерять каналы U1a, U2a, U3a, АЦП2 - каналы U1b, U2b, U3b. Один АЦП может преобразовывать 2 миллиона выборок в секунду. То есть оно способно преобразовать три канала на частоте 480 кГц с огромным запасом. Осталось прочитать в документации, как эти два АЦП запускать одновременно (подсказка: раздел документации "Multi ADC mode"). И еще подсказка: там же описано, как результаты всех этих измерений вычитывать одним каналом ПДП.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

АЦП2, естественно, может пробрасывать результат через ДМА - он ничем не отличается своим регистром результата от любой другой области памяти. Я имел ввиду, что в АТ32 второй АЦП не может РЕКВЕСТИТЬ ДМА, в отличии от СТМ32.

Но за ответ спасибо. Сиречь, утраиваем частоту дискретизации и включаем сканирование.

Пока все сложилось.

ЗЫ. Правда нужно посчитать окно захвата. Полученные 1,5 мспс - это без учета эквизишн тайм. Скорее всего, все будет на пределе.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

17 минут назад, my504 сказал:

Я имел ввиду, что в АТ32 второй АЦП не может РЕКВЕСТИТЬ ДМА, в отличии от СТМ32.

В названии темы речь идет о STM32F407. Он умеет в одновременном режиме запускать оба АЦП одним сигналом и складывать результаты обоих АЦП в один регистр, откуда их сможет забрать один-единственный канал ПДП. Про AT32 ничего сказать не могу, не сталкивался.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

AT32 умеет все тоже самое. Только оба АЦП придется подключать к каналам ДМА, которые реквестятся только от ПЕРВОГО АЦП. Учитывая, что накачка обоих АЦП идентична и синхронна, готовность данных будет так же синхронна. Забирать данные из одного регистра ничего не дает, все равно потом сортировать.

Посчитал с учетом сетки частот при 240 МГц ядра и минимальном окне захвата  1,5Tadc. Как и ожидал, пролез впритык. Если говорить о точном значении частоты приема - 58 кГц, максимально возможная частота при восьмикратной дискретизации составила 59,5 кГц.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

24 минуты назад, my504 сказал:

Только оба АЦП придется подключать к каналам ДМА, которые реквестятся только от ПЕРВОГО АЦП. Учитывая, что накачка обоих АЦП идентична и синхронна, готовность данных будет так же синхронна. Забирать данные из одного регистра ничего не дает, все равно потом сортировать.

Поставить 3 контроллера, синхронизовать их и получить необходимый результат.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

8 minutes ago, x893 said:

STM32F407 все три ADC могут по DMA

Разве? Вроде только два.

Пардон все  три.

image.thumb.png.82ac305061d0881614eefd4db759537b.png

Изменено пользователем tonyk_av

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И без DMA возможно, инжектированные каналы складывают результаты в регистры. На каждый ADC по 4 выборки доступно, запускать все по одному событию можно. Забирать результат в одном прерывании со всех ADC.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 minutes ago, tonyk_av said:

Разве? Вроде только два.

Куб не может врать. DMA2 streams 0, 1, 2

3 minutes ago, amaora said:

И без DMA возможно, инжектированные каналы складывают результаты в регистры. На каждый ADC по 4 выборки доступно, запускать все по одному событию можно. Забирать результат в одном прерывании со всех ADC.

Можно и так. Варианты есть - только выбирай.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...