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

BF548+ацп

Дано

1) процессор ADSP-BF548, есть 2 свободных SPORT

2) ацп ADS1278, работают все 8 каналов, режим TDM, формат FRAME SYNC,

тактируется от 25MHz (картинка 1)

3) гальваническая развязка

Задача

Подключить используя минимум дополнительных вещей

 

 

Здесь видится несколько трудностей и мешающих взаимозависимостей:

1) На SCLK нужно непрерывно подавать тактовый сигнал 25 или 12.5Мгц (меньше уже нельзя т.к. тогда не успеть все 8 каналов вычитать)

На FSYNC ацп нужно подавать строб чтения каждые 512(или 256) тактов SCLK

2) Очевидно придется использовать режим SPORT Multichannel mode.

Этот режим имеет кучу взаимозавязок между приёмником и передатчиком,

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

3) ацп даёт задержку между FSYNC и DOUT до 20нс (tMSBPD)

т.е. почти пол периода 25MHz, следовательно лучше считывать данные на частоте 12.5MHz

4) внутренняя частота периферии процессора 131.25MHz, следовательно 25MHz "изнутри"-SPORT не получить,

поэтому 25MHz будет браться от "внешнего" источника (кварцевого генератора)

 

В результате всех измышлений родилась вот такая схема (картинка 2)

Деление частоты требует 1 триггер - возьму из одногейтовой логики (SN74LVC1G... в SOT23)

 

Может что-то не учел ? Может лучше как-то по другому ? Главное чтобы без ПЛИС.

 

ЗЫ Для меня это семейство новое, но раньше много работал с MsBSP в TMS320 и поэтому примерно представляю физику процесса.

SPORT после изучения мануалов показался менее гибким чем MsBSP, поэтому закрались сомнения.

post-9352-1398016546_thumb.png

post-9352-1398020457_thumb.png

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

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


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

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

 

там же обычный SPI, его кстати и использовать даже можно, а не SPORT. АЦП дергает за прерывание блэкфин, тот в прерывании настраивает DMA на 24 байта и данные забираются по SPI.

 

чтобы процессор не дергать на каждый сэмпл АЦП, у SPORT есть multichannel режим когда от единственного fsynca забирается сколько надо подряд данных (см. регистр SPORTx_MCMC).

 

так что можно обойтись лишь одним SPORTом и 4мя каналами развязки, клоки 25МГц последовательному порту блэкфина не нужны их можно целиком со стороны АЦП оставить, а RSCLK блэкфина могут быть выходом для SCLK ацп.

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


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

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

там же обычный SPI, его кстати и использовать даже можно, а не SPORT. АЦП дергает за прерывание блэкфин, тот в прерывании настраивает DMA на 24 байта и данные забираются по SPI.

чтобы процессор не дергать на каждый сэмпл АЦП, у SPORT есть multichannel режим когда от единственного fsynca забирается сколько надо подряд данных (см. регистр SPORTx_MCMC).

так что можно обойтись лишь одним SPORTом и 4мя каналами развязки, клоки 25МГц последовательному порту блэкфина не нужны их можно целиком со стороны АЦП оставить, а RSCLK блэкфина могут быть выходом для SCLK ацп.

 

SPI и прерывания на каждый сэмпл это очень накладно

 

Клоки и fsync таскаются туда-сюда т.к. задержка в изоляторе только в одну сторону 18...32нс групповая плюс 10нс разброс между каналами (учитывая что прибор с расширенным температурным диапазоном мне показалось это важным) - все эти цифры уже не совместимы с 12.5Mhz, а тем более с 25Mhz

 

SPORT на приём как раз и будет работать в multichannel режиме, на один fsync приходят 8 слов по 24 бита, это понятно

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


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

может просто развязку более подходящую подобрать тогда, среди тексасовских ISO74x вроде есть с <10нс задержками.

ну или поставить какой-нибудь самый мелкий МК между блэкфином и АЦП, который для блэкфина будет полноценным spi мастером, чтобы все критичные по задержкам сигналы через развязку в одну сторону направлены были, чтобы групповая задержка не мешала.

какой-нибудь MSP430F5131 или STM32F0 будет дешевле пары каналов развязки.

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


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

SPI и прерывания на каждый сэмпл это очень накладно

Клоки и fsync таскаются туда-сюда т.к. задержка в изоляторе только в одну сторону 18...32нс групповая плюс 10нс разброс между каналами (учитывая что прибор с расширенным температурным диапазоном мне показалось это важным) - все эти цифры уже не совместимы с 12.5Mhz, а тем более с 25Mhz

SPORT на приём как раз и будет работать в multichannel режиме, на один fsync приходят 8 слов по 24 бита, это понятно

Что-ж Вы от тексаса отказались?

Пару лет назад делал очень похожую схему: тоже подключение 8-канального АЦП (только ADS1298), тоже через ADUM-ы,

только частота пониже (~2МГц) и CPU техасовский - OMAP-L137. Подключал на McASP (аналог McBSP, только многоканальный).

Только я задержку ADUM обратил себе во благо - на этих задержках как раз и построил интерфейс. Т.е. - без задержек фронт тактового сигнала

попадал как раз на момент переключения линии данных, а за счёт неё фронт такта сдвигался на неск. десятков нс и попадал на установившееся значение бита данных.

Так что - обошёлся только одним McASP и одним набором ADUM-ов. А сдвиг сигналов управления относительно сигналов данных сделал выбрав разные ADUM-ы для сигналов

данных и сигналов управления с разными задержками.

Прерывания от DMA обслуживающего McASP у меня не на каждый сэмпл конечно, а на блок из 64 сэмплов. И один этот McASP обслуживает сразу 3 таких ADS.

Так что - считываются сразу 3*8=24 канала АЦП одним McASP. И DMA с автоинициализацией.

И ещё этот-же McASP обслуживает исходящий поток на 2-канальный ЦАП.

 

И всё это - на одном McASP + 2 канала DMA. И конфигурится эта связка только один раз - при старте работы.

Так что - очень хорошая это вещь - McASP :)

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


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

ну или поставить какой-нибудь самый мелкий МК между блэкфином и АЦП, который для блэкфина будет полноценным spi мастером, чтобы все критичные по задержкам сигналы через развязку в одну сторону направлены были, чтобы групповая задержка не мешала.

какой-нибудь MSP430F5131 или STM32F0 будет дешевле пары каналов развязки.

А вот действительно, на цену я и не посмотрел. Изоляторы на большую скорость стоят недешево.

Тогда уж не МК, а самый простой max3000a в 44-ногом корпусе. Им выгребать по SPI и преобразовывать в SPORT проще чем МК.

Жалко что появляется лишняя операция по флэшеванию, но в целом идея кажется оптимальной, спасибо!

 

Что-ж Вы от тексаса отказались?

...

Прерывания от DMA обслуживающего McASP у меня не на каждый сэмпл конечно, а на блок из 64 сэмплов. И один этот McASP обслуживает сразу 3 таких ADS.

...

Так что - очень хорошая это вещь - McASP :)

Ну обсуждать почему от тексаса отказался - это целая тема с холиворами и метанием нечистотами друг в друга. Лучше не надо =)

Запустил SPORT+DMA , всё нормально работает со всеми блочными автоинициализациями, всё как у McBSP, просто настройки непривычные.

post-9352-1398432757_thumb.png

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

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


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

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

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

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

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

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

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

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

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

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