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

Просто разводимый и легко осваиваемый МК с 8 (а лучше 16) аналоговых входов с DMA и одновремнным семплингом по 150КS/s

Добрый день,

 

надо быстро проверить гипотезу, по которой надо одновременно оцифровывать 8, может 16, а может и 24 канала одновременно, и на каждом канале будет сигнал примерно 50кГц, то есть надо где-то 150-200КГц на канал. Хочется без бубнов это все в DMA.

 

Я такое умею только через внешний оцифровщик + плиска, но тут и с разводкой проваландаюсь, и программированием. Хочется простой МК, и чтоб с первого раза все поехало. Вроде требования не запредельные.

 

На тех МК, что умею, есть или только двухканальный DMA, без права одновременного семплинга с больше двух каналов (teensy 4.1), или только все ручками. Мне важен DMA, так как я хочу потом эти данные сразу друг с другом коррелировать и сохранять только корреляционные коэффициенты.

 

Скажите, пожалуйста, стоит ли на каком-то STM32 пробовать, или PIC32, или еще на чем-то? Целевая функция - потратить минимум времени на разработку платы и программирование сбора этих данных.

 

Спасибо!

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


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

Я такое умею только через внешний оцифровщик + плиска, но тут и с разводкой проваландаюсь, и программированием. Хочется простой МК, и чтоб с первого раза все поехало.
Одновременно не получится - входы поочерёдно к АЦП подключаться будут.
ПЛИС с N шт АЦП (тем более ими владеете) будет лучше.

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


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

у tms320c28 АЦП ещё достаточно быстрый, несколько МГц и каналов до 24.

Где-то у меня валяется старая плата https://www.olimex.com/Products/DSP/Development/TMX320-P28027/

бралась как-то давно тоже для проверки гипотезы и оцифровки нескольких аналоговых линейных sin/cos энкодеров 20мкм до 1м/c те же 50кГц.

smultaneous sampling нету (только два АЦП + мультиплексоры), но интерполятор сделать который момент сэмплирования подтянет у всех каналов к одному времени вроде не особо затратно.

А если именно совсем честный simultaneous sampling хочется, то для проверки гипотезы возможно дешевле будет готовую оценочную плату https://www.ti.com/tool/ADS1278EVM-PDK , схема есть, usb bootloader, прошивку свою можно подсунуть.

Родная прошивка от ti не то чтобы совсем открыта, но есть какие-то примеры и можно своим софтом данные из АЦП вытащить, с некоторыми ограничениями. 

Как минимум 8 каналов на 24 бита на 144кГц непрерывно напрямую без обработки в full speed usb не пролезут,

но на плате то ли 16 то ли 32МБайта памяти есть.

но можно и ft232h вместо "материнской платы" подцепить и все данные на полной скорости в ПК забрать.

Ну и с некими танцами с бубном несколько плат пожалуй можно заставить синхронно работать для 16,24, ... каналов.

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


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

4 часа назад, iiv сказал:

одновременного семплинга с больше двух каналов

Что такое "одновременного"? 24 параллельных АЦП да на 150kS/s??? Такого нет ни в одном МК.

А если тривиально - подключение множества каналов к нескольким АЦП через мультиплексоры, таких МК думаю много. Например XMC4700. А насколько "просто и чтоб с первого раза все поехало" - то зависит только от ваших умений.

4 часа назад, iiv сказал:

потратить минимум времени на разработку платы и программирование сбора этих данных

Это зависит только от ваших умений, о которых мы не можем судить.

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


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

Насколько помню, у STM32 из трёх АЦП только два могут через DMA. Если правильно помню, то в одной из наших разработок было 11 каналов с частотой выборки 12000выб/с на канал и это было уже около предела возможностей АЦП. Если сократить время выборки для УВХ и понизить количество преобразуемых разрядов АЦП, то можно получить желаемое, но вот устроит ли полученная точность- вопрос. И аналоговую часть нужно будет делать вдумчиво.

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

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


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

В 26.01.2023 в 02:06, Obam сказал:

Одновременно не получится - входы поочерёдно к АЦП подключаться будут.

ну каналы можно совместить после оцифровки сдвинув каждый на соответствующую разницу во времени

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


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

Спасибо большое всем за дельные советы!

 

Да, я готов делать так, что "входы поочерёдно к АЦП подключаться будут", но чтобы это можно было бы сделать во время DMA - то есть если у МК есть два АЦП и каждый по 2.5МС/с, то если на каждый можно навесить 12 замультиплексиных ножек и одним DMA на каждый АЦП зачитать скажем, 12*128 семплов, то это будет как раз то, что надо.

 

В тех МК, на которых я уже программировал (esp32, nxp 1062) хоть и мультиплексоры каналов есть, на DMA  можно выбрать только один канал.

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


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

Как я уже писал - XMC4700 или XMC4800 вполне справится с такой задачей. 4 АЦП, на каждом - 8 каналов, более 2MS/s на один АЦП. Остаётся ещё большой запас по скорости для вашей задачи. Естественно - всё через DMA, достаточно одного канала DMA для обслуживания всех 4-х АЦП. Имеется также аппаратное усреднение (до 4 отсчётов или аппаратная фильтрация; по желанию). STM32 и рядом не лежал.  😉

При желании можно посмотреть что-то более младшее/дешёвое: XMC4500, XMC4300, ... но надо читать даташит насчёт их возможностей.

29 минут назад, iiv сказал:

одним DMA на каждый АЦП

В дохлых STM32 может и нужно на каждый АЦП отдельный канал DMA, но в правильных МК для этого достаточно одного единственного DMA-канала. Диаграмма переключения мультиплексоров АЦП- какую запрограммируете, такая и будет. У XMC4xxx все АЦП свои результаты преобразования пишут либо в общее FIFO либо в FIFO каждого АЦП. Откуда потом можно читать данные либо процессором либо DMA.

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


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

3 hours ago, jcxz said:

Как я уже писал - XMC4700 или XMC4800 вполне справится с такой задачей. 4 АЦП, на каждом - 8 каналов, более 2MS/s на один АЦП. Остаётся ещё большой запас по скорости для вашей задачи. Естественно - всё через DMA, достаточно одного канала DMA для обслуживания всех 4-х АЦП.

Круто, спасибо! Мне собственно именно эта информация и нужна была! Если XMC4700 или XMC4800 внутри DMA сам может мультиплексить сигналы - это именно то, что я хочу.

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


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

1 час назад, iiv сказал:

Если XMC4700 или XMC4800 внутри DMA сам может мультиплексить сигналы

Не совсем так. Не в DMA. Там есть 4 конвертора (АЦП) и к ним подключен довольно большой блок памяти (result memory). При конфигурировании работы АЦП-каналов, вы указываете - в какие области этой памяти класть данные от каких каналов и в каком порядке. Потом конфигурируете эту память как вам нужно: можно создать в ней одно или несколько FIFO, связывая ячейки этой памяти в цепочки FIFO и назначая из какой в какую делать пересылки, в каких ячейках делать суммированиее и фильтрацию (если нужно) сэмплов, какие ячейки должны генерить триггер-сигналы для DMA, прерывания для NVIC и для другой периферии и т.д. Это как бы - отдельный от АЦП блок постобработки. А потом уже натравливаете канал (или каналы) DMA на нужные ячейки этой памяти, чтобы DMA вытаскивал результирующие данные в основную память. Можно вообще связать все ячейки этой памяти в единый FIFO, и вытаскивать одним DMA-каналом сразу все данные. Но можно и создать внутри 4 отдельных FIFO и также их обслуживать единым DMA-каналом (посредством scatter/gather).

За счёт того, что эта память - сама по себе уже довольно большой буфер, можно вообще без DMA работать. Либо через DMA, но не обязательно с двойной буфериацией, непрерывным. Вполне нетрудно делать перезапуск DMA-транзакций - данные не потеряются, так как есть FIFO.

Порядок подключения каналов АЦП к преобразователям и их мультиплексирование, можно сделать например через QUEUE-преобразования, заполнив FIFO заданий для каждого преобразователя. В этих заданиях указывается: на каком шаге какой канал нужно преобразовывать, с какими опциями, на каком шаге ждать триггер-сигнала (от таймера например), сделать зацикливание и т.п. Это настраивается однократно перед стартом, потом делается старт и эти последовательности заданий для всех преобразователей будут непрерывно повторятся (если зациклены). А результаты будут поступать в result memory.

Это самый простой режим работы подсистемы АЦП. Там ещё много чего есть.

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


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

Спасибо большое, jcxz, что доходчиво объяснили возможности этого камня!

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

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


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

On 1/26/2023 at 12:23 AM, _pv said:

у tms320c28 АЦП ещё достаточно быстрый, несколько МГц и каналов до 24.

спасибо большое, _pv! С олимексовской девбордой это решение самым простым кажется, по крайней мере я что-то да смог тут уже сегодня запустить.

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


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

В 26.01.2023 в 10:50, jcxz сказал:

В дохлых STM32

Говорят, в NUCLEO-G474RE установлен МК с такой вот начинкой

image.thumb.png.9b4db0db754f29cebadf8867c07c7bba.png

image.thumb.png.a1a81f750245d65fdbb3abfb6963986e.png

Другими словами: пять АЦП, при 12 битах до 4 Мвыб/с, до 42 каналов (причем можно в дифференциальном режиме).

Больше вопросов вызывает способ такой поток куда-то передать.

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


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

3 hours ago, iiv said:

спасибо большое, _pv! С олимексовской девбордой это решение самым простым кажется, по крайней мере я что-то да смог тут уже сегодня запустить.

у олимекса нет отладчика на плате,только уарт через ft232r наружу, и насколько помню были какие-то танцы с бубном чтобы флэш прошить через uart bootloader. с привлечением какого-то стороннего софта от spectrum digital вроде.

посмотрите на платы лаунчпадов от ti, для тех же с28, они стоят столько же если не дешевле, с более новыми камнями и XDS на плате.

и у инфинеона c xmc тоже есть мелкие платы, типа discovery у stm32, там jlink на плате.

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


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

4 hours ago, adnega said:

Больше вопросов вызывает способ такой поток куда-то передать.

Спасибо большое adnega за совет! Верно, полностью с Вами соглашусь! В моем случае мне надо без относительно скорости АЦПшек около 60-100МФлопс на одинарной точности. Обычно это есть у всех или почти у всех. С NUCLEO-G474RE - прикольно - да, тут можно и оверсемплинг при необходимости сделать для повышения точности, хотя при сигнале в 50КГц оцифровывать его на 800КГц - особо оверсамплинком и не побарствуешь. С NUCLEO-G474RE - тоже идея. На всякий случай решил ее тоже заказать, что если на олимексе не смогу быстро проверить то, что хочу.

1 hour ago, _pv said:

у олимекса нет отладчика на плате,только уарт через ft232r наружу, и насколько помню были какие-то танцы с бубном чтобы флэш прошить через uart bootloader. с привлечением какого-то стороннего софта от spectrum digital вроде.

у меня какой-то от олимекса прошивальщик был для tms-ов, я им какой-то демо пример прошил, хотя пока еще не смог понять все прелести этого процессора.

 

Короче на крайняк - у меня есть в загашнике софт для esp32 на DIG ADC, и, как я понимаю, хоть и в доке на esp32-s3 пишут, что только 100кС/с на канал, но через DIG ADC там все честные 1х2 МС/с будет и мне должно совсем в притык, но хватить, а в esp32 всяко на плавающей арифметике при любом раскладе я свои 100МФлопс получу (до 450+МФлопс я уже на ней получал).

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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