Jump to content
    

Внешний АЦП и задержки

Рассматриваю возможность сопряжения малины и ацп (например AD7606-8). 
Вопросы:
1) малина имеет потенциальную возможность генерить стабильный клок для внешнего АЦП (200кГц)

2) сможет ли малина вовремя складывать данные в буфер 

Я вот очень сомневаюсь что линукс сможет так быстро данные заглатывать. Какие варианты возможны?

Share this post


Link to post
Share on other sites

Да по параллельному врядли получится, пользуют другие интерфейсы, тот же SPI и др.

Share this post


Link to post
Share on other sites

хорошо, AD7606 поддерживает SPI. 
Я вот сомневаюсь что малина сможет вовремя забирать данные по прерыванию от АЦП на частоте 200кГц даже по SPI

Share this post


Link to post
Share on other sites

23 часа назад, TigerSHARC сказал:

стабильный клок для внешнего АЦП

требования к тактовому генератору определяются разрядностью и частотой выборок гулите "SNR vs jitter"

Share this post


Link to post
Share on other sites

6 hours ago, vervs said:

требования к тактовому генератору определяются разрядностью и частотой выборок гулите "SNR vs jitter"

на малине есть что-то вроде конфигурируемого таймера с выводом на GPIO?
дергать GPIO программно на малине и думать что это хороший клок не хочется :)

Share this post


Link to post
Share on other sites

Говоря об АЦП - а может, бывают модули с АЦП и памятью, позволяющие организовать осциллограф? Чтобы через Малинку задать скорость записи отсчётов в быструю память модуля и задать стартовое или стоповое условие; а потом не спеша прочитать отсчёты, обсчитать и нарисовать на экране картинку.

Share this post


Link to post
Share on other sites

On 3/16/2021 at 9:11 AM, TigerSHARC said:

хорошо, AD7606 поддерживает SPI. 
Я вот сомневаюсь что малина сможет вовремя забирать данные по прерыванию от АЦП на частоте 200кГц даже по SPI

Для 16бит*200кГц*8каналов надо как минимум 25.6МГц spi клока, АЦП умеет только 23.5 и то только при 5В питании выходных драйверов, что "малине" не очень понравится,

поэтому spi там "сдвоенный" и по-человечески запихнуть его в малину будет скорее всего ещё сложнее чем параллельный интерфейс.

18 hours ago, Alex163 said:

Говоря об АЦП - а может, бывают модули с АЦП и памятью, позволяющие организовать осциллограф? Чтобы через Малинку задать скорость записи отсчётов в быструю память модуля и задать стартовое или стоповое условие; а потом не спеша прочитать отсчёты, обсчитать и нарисовать на экране картинку.

Бывают, осциллограф называется :), через usb/ethernet подключиться и данные забирать.

 

Если не хочется самому писать модули линукс ядра, или городить снаружи мелкий "труъ-realtime" микроконтроллер с памятью чтобы АЦП читать, а потом неспешно по запросу отдавать данные, и если месье понимает толк в извращениях, можно обойтись каким-нибудь костылями вроде FT232H. Буфер там несколько кБ, но для нескольких МБайт/с вроде хватает с highspeed USB, я им какой-то похожий ads1278 как-то читал с ПК.

Share this post


Link to post
Share on other sites

22 часа назад, Alex163 сказал:

а может, бывают модули с АЦП и памятью, позволяющие организовать осциллограф? Чтобы через Малинку задать скорость записи отсчётов в быструю память модуля и задать стартовое или стоповое условие; а потом не спеша прочитать отсчёты

Берём LPC4370. Пишем ему простейшую прошивку. Которая будет просто делать захват из его АЦП на скорости <= 80MS/s во внутренние <=282KB ОЗУ LPC4370. Затем вычитываем полученные сэмплы через любой удобный интерфейс (USB, SPI, UART, ...).

Только со стартовым условием будет затруднительно (если на большой скорости sample rate). Но тоже можно что-то придумать.

А "стоповое условие" - зачем? Просто читать от старта макс. возможное число сэмплов и всё.

22 часа назад, Alex163 сказал:

может, бывают модули

Если хочется "модуль", то вот и модуль: https://www.nxp.com/design/design-center/development-boards-and-designs/OM13054

 

PS: Только получается очередная "Каша из топора". В которой малина - в роли топора. Потому как и сам LPC4370 вполне способен осциллограмму на LCD нарисовать.

Share this post


Link to post
Share on other sites

16 часов назад, jcxz сказал:

будет просто делать захват из его АЦП на скорости <= 80MS/s во внутренние <=282KB ОЗУ LPC4370. Затем вычитываем полученные сэмплы через любой удобный интерфейс (USB, SPI, UART, ...).

80MS/s - при 12 битах, это 160мегабайт\сек, через какой уарт вы собираетесь это вычитывать?))) Это не осцилл будет, а просто стоп-кадр-буфер, типа лог анализатора в аналоговом виде с короткой памятью...

Share this post


Link to post
Share on other sites

2 часа назад, mantech сказал:

80MS/s - при 12 битах, это 160мегабайт\сек, через какой уарт вы собираетесь это вычитывать?)))

Вы бы хоть википедию почитали, что-ли. :unknw: Почитайте в ней - что такое "осциллограф". А то ведь рассуждаете как кухарка, впервые услышавшая это слово.

2 часа назад, mantech сказал:

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

А что по вашему такое этот загадочный "осциллограф"? И как он работает?

 

В качестве ликбеза для кухарок: Осциллограф - это прибор, который делает захват блока сэмплов исследуемого сигнала и отображение его на экране. Захват стартует по некоторому условию (триггер-условие). Осц. как правило имеют следующие режимы старта захвата: авто, ждущий, однократный. После каждого захвата, блок сэмплов должен быть показан на экране в течение какого-то времени. Как правило - нет смысла стартовать захват нового блока чаще, чем ~20Гц (нужно же какое-то время его отображать). Теперь предположим, что размер экрана осц. по X = 512 пикселей. Разрядность пикселей = 8 бит (более - также не имеет особого смысла). Итого - берём калькулятор и считаем: 512*10*20 = 102400 бод. Именно такая скорость передачи нужна для передачи блока захваченных данных осциллографа в автоматическом режиме развёртки, при размере экрана по X=512.

Вы считаете, что 102400 бод для UART - это нечто запредельное??? :shok:  Т.е. - видимо ваш любимый AllWinner не потянет такую "запредельную" скорость по UART? :sarcastic:

Так бросьте тогда его! Упоминаемый выше LPC4370 запросто выдаст по UART скорость и в 10 раз выше и даже ещё больше. Сможете сделать осциллограф с частотой развёртки в авт.режиме аж = ~200Гц! Мечту мух. :sarcastic:  Если вам 20Гц мало.

 

ЗЫ: Надеюсь хоть немного развеял темноту кухаркиного невежества в электронике... :sarcastic:

Share this post


Link to post
Share on other sites

22 часа назад, _pv сказал:

можно обойтись каким-нибудь костылями вроде FT232H. Буфер там несколько кБ, но для нескольких МБайт/с вроде хватает с highspeed USB

Можно без костылей: Простейшая CY7C68013A + подключенный прямо к ней параллельный АЦП. CY7C68013A работает с тактовой до 48МГц с шириной шины до 16 бит. Если хорошенько помозговать, то можно придумать схему сопряжения CY7C68013A с параллельным АЦП. Диаграмму сопряжения с АЦП можно нарисовать в GPIF-редакторе. В идеале наверное можно получить скорость чтения АЦП до половины тактовой CY7C68013A (сомневаюсь что выше) = 24 MS/s. До LPC4370 далеко.

В любом случае - шина от внешнего АЦП всегда будет узким местом. Которое сильно зарежет скорость. И дёшево на внешнем АЦП ничего сравнимого по скорости с LPC4370 - не сделать. Именно по этой причине.

Да и какой смысл? LPC4370 стоит даже дешевле чем CY7C68013A. Не говоря уже о АЦП.

 

PS: Можно сделать дорого: параллельный АЦП + FIFO-память (что-то типа 72V245L15TFGI или подобная; на нужную частоту / ширину шины; с раздельными шинами чтения/записи или с совмещённой) + схема сопряжения АЦП-FIFO. Кроме FIFO-чипа, можно также использовать какую-либо 2-х-портовую ОЗУ. Но всё это будет гораздо дороже.

Share this post


Link to post
Share on other sites

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

ЗЫ: Надеюсь хоть немного развеял темноту кухаркиного невежества в электронике... :sarcastic:

Ммм, да, шикарно, расскажите теперь почему для скоростных "комповых" осциллов применяют усб 3.0, там же уарта через переходник будет достаточно))))))

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

Теперь предположим, что размер экрана осц. по X = 512 пикселей. Разрядность пикселей = 8 бит

А, теперь понял, для карманной игрушки, наверно сойдет)))

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

Так бросьте тогда его!

Нет не брошу, он хороший, лучше всяких ваших там))))

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...