реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> 32х битный SPI, чем и как принять поток?, АЦП AD7764
draqon
сообщение Sep 27 2010, 14:32
Сообщение #1





Группа: Новичок
Сообщений: 8
Регистрация: 27-09-10
Пользователь №: 59 763



Доброго времени суток.
Необходимо получать поток от АЦП AD7764, он работает по SPI, длина слова 32 бита, АЦП - мастер, сигнал словной синхронизации активен в течение передачи всех 32 бит. Скорость потока 10 (20) Мбит/c.

Использовать плис оочень не хочется, по скорости обработки вполне подходят Picolo (F28ая серия), да и MSP430, их и хотелось использовать, но как втащить в них 32битный SPI поток??? У F28 16-битный SPI, у MSP430 - 8битный.

Подскажите пожалуйста какое-нибудь решение, может есть процы с 32битным SPI, или можно как-то принять такой поток на F28?
Go to the top of the page
 
+Quote Post
MALLOY2
сообщение Sep 27 2010, 15:02
Сообщение #2


Знающий
****

Группа: Validating
Сообщений: 838
Регистрация: 31-01-05
Пользователь №: 2 317



Какая разница какой SPI хоть 8 хоть 16, рулите чипселектом и запускаете сколько вам надо посылок.
Go to the top of the page
 
+Quote Post
rezident
сообщение Sep 27 2010, 15:07
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Не понял сути затруднений. cranky.gif SPI интерфейс синхронный, никто не мешает хоть по 1 биту принимать. Лишь бы успевать из буфера SPI-slave эти биты/байты/слова выгребать. Используйте любой подходящий МК с требуемой частотой приема в режиме slave. От МК требуется лишь возможность успевать извлекать байты или слова из буфера SPI с темпом 2.5*10^6 байт/с или 1,25*10^6 слов/сек. То бишь тактовая частота МК должна быть ориентировочно не ниже 25МГц. А если у МК будет DMA, да еще и с отдельной шиной, то вообще ноу проблемс.
Go to the top of the page
 
+Quote Post
jorikdima
сообщение Sep 27 2010, 15:12
Сообщение #4


тут может быть ваша реклама
*****

Группа: Свой
Сообщений: 1 164
Регистрация: 15-03-06
Из: Санкт-Петербург/CA
Пользователь №: 15 280



Согласен, проблемы не видно. Читать то можно байтами, не обязательно словами.
Но МСП430 загнется на таком потоке.
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Sep 27 2010, 20:05
Сообщение #5


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Мда... а что потом делать с этим потоком? Надо ж еще что-то обрабатывать?
Go to the top of the page
 
+Quote Post
draqon
сообщение Sep 27 2010, 23:19
Сообщение #6





Группа: Новичок
Сообщений: 8
Регистрация: 27-09-10
Пользователь №: 59 763



Цитата(MALLOY2 @ Sep 27 2010, 19:02) *
Какая разница какой SPI хоть 8 хоть 16, рулите чипселектом и запускаете сколько вам надо посылок.

Там нет чипселекта, мастер - АЦП


Цитата(rezident @ Sep 27 2010, 19:07) *
Не понял сути затруднений. cranky.gif SPI интерфейс синхронный, никто не мешает хоть по 1 биту принимать. Лишь бы успевать из буфера SPI-slave эти биты/байты/слова выгребать. Используйте любой подходящий МК с требуемой частотой приема в режиме slave. От МК требуется лишь возможность успевать извлекать байты или слова из буфера SPI с темпом 2.5*10^6 байт/с или 1,25*10^6 слов/сек. То бишь тактовая частота МК должна быть ориентировочно не ниже 25МГц. А если у МК будет DMA, да еще и с отдельной шиной, то вообще ноу проблемс.

Тоесть, если я правильно понял, 16 бит приняли > по прерыванию обработали, дальше принимаем слудующие 16 бит, ну и по словной синхронизации контроллируем слова..
Я так понимаю ДМА в таком режиме тоже настроить вполне реально?

А откуда взялись эти цифры 2.5 и 1.25? Почему не 2 и 1 М? Почему именно такой запас?
Picolo сейчас еще раз посмотрел, там DMA нет, тогда дельфино остается или DSC типа tms320f28234, по даташиту он вполне будет работать и на 40MHz клоке

Вообще задача, принять сигнал, перенести на ноль, децемировать-отфильтровать с 312кГц до 1кГц.. почти всё


_Pasha, jorikdima
У меня получилось, что msp430 переваривает до 10Мбит/c поток (при 25МГц клоке), но это совсем впритык..

Прошу прощения, если я где-то туплю, ибо пока только учусь smile.gif))
Go to the top of the page
 
+Quote Post
rezident
сообщение Sep 27 2010, 23:46
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(draqon @ Sep 28 2010, 05:19) *
Тоесть, если я правильно понял, 16 бит приняли > по прерыванию обработали, дальше принимаем слудующие 16 бит, ну и по словной синхронизации контроллируем слова..
Приняли столько бит, сколько позволяет модуль SPI или SSP.
Цитата(draqon @ Sep 28 2010, 05:19) *
Я так понимаю ДМА в таком режиме тоже настроить вполне реально?
Вопрос бессмысленный, т.к. не указан кристалл. Обычно - да, DMA имеет возможность складывать в память принятое по SPI или SSP автоматически, без участия ядра. Только при отсутствии отдельной шины доступа DMA подтормаживает его (ядра) работу. Хотя даже и в этом случае по сравнению с работой по прерыванию от SPI или SSP у DMA имеется некоторый выигрыш за счет отсутствия необходимости сохранения контекста при вызове прерывания.
Цитата(draqon @ Sep 28 2010, 05:19) *
А откуда взялись эти цифры 2.5 и 1.25? Почему не 2 и 1 М? Почему именно такой запас?
Дык банальная арифметика. laughing.gif 20Мбит/с / 8 бит=2,5МБайт/с и соответственно 1,25Мслов/с.
Цитата(draqon @ Sep 28 2010, 05:19) *
У меня получилось, что msp430 переваривает до 10Мбит/c поток (при 25МГц клоке), но это совсем впритык..
По прерыванию? У MSP430 вход в прерывание и выход из него, даже без сохранения контекста, 9 тактов занимает. Не очень хорошо это. Для быстродействия получается, что выгоднее по опросу флага готовности работать.
Go to the top of the page
 
+Quote Post
draqon
сообщение Sep 28 2010, 00:11
Сообщение #8





Группа: Новичок
Сообщений: 8
Регистрация: 27-09-10
Пользователь №: 59 763



Цитата
Вопрос бессмысленный,

Ну получается c28 (например DSC tms320f28234) или msp430f5x серия

Цитата
Дык банальная арифметика. laughing.gif 20Мбит/с / 8 бит=2,5МБайт/с и соответственно 1,25Мслов/с.

Ааа, понял smile.gif
Там странная передача только сделана, тактовая частота 10 (20 Мгц) (просто в дш в двух местах написано по разному, пока что точно не выяснил, скорее всего 20), причем поток данных 32бита x 312500 SPS = 10 Мбит/c. То есть получается в первом случае передается всё время, а во-втором передача только половину времени.

Цитата
По прерыванию? У MSP430 вход в прерывание и выход из него, даже без сохранения контекста, 9 тактов занимает. Не очень хорошо это. Для быстродействия получается, что выгоднее по опросу флага готовности работать.

Виноват, считал только по таймингам установки-удержания

Пойду еще в даташиты зароюсь smile.gif

Сообщение отредактировал draqon - Sep 28 2010, 00:12
Go to the top of the page
 
+Quote Post
rezident
сообщение Sep 28 2010, 00:29
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(draqon @ Sep 28 2010, 06:11) *
Ну получается c28 (например DSC tms320f28234) или msp430f5x серия
Почему только продукцией TI ограничились? Сейчас ARM на ядре Cortex более популярны.
Цитата(draqon @ Sep 28 2010, 06:11) *
Виноват, считал только по таймингам установки-удержания

Пойду еще в даташиты зароюсь smile.gif
Угу, нужно уточнить. Я по памяти писал и наврал немного smile.gif 6 тактов вход и 5 тактов выход, итого 11 тактов. laughing.gif
Go to the top of the page
 
+Quote Post
Абырвалг
сообщение Oct 5 2010, 03:43
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 55
Регистрация: 23-08-06
Пользователь №: 19 752



Цитата(draqon @ Sep 28 2010, 03:19) *
Тоесть, если я правильно понял, 16 бит приняли > по прерыванию обработали, дальше принимаем слудующие 16 бит, ну и по словной синхронизации контроллируем слова..
Я так понимаю ДМА в таком режиме тоже настроить вполне реально?


В пикале у spi есть fifo 4 слова по 16 бит, так что прерывание требуется реже. в семействе 2812 fifo на 16 слов.
Go to the top of the page
 
+Quote Post
draqon
сообщение Oct 5 2010, 23:36
Сообщение #11





Группа: Новичок
Сообщений: 8
Регистрация: 27-09-10
Пользователь №: 59 763



Да, это я уже нашел, спасибо, и там есть McBSP в режиме SPI с поддержкой ДМА, проблема в тактировании SPI
А какой процессор Вы можете посоветовать, который переверит 20 МГц тактирование в режиме SPI Slave? (Причем сам поток данных 10 Мбит/с)
Смотрел семейство TMS320F28x3x, но насколько понял они выше 12.5Мгц на приеме в слэйве не потянут (

Это из ДШ на TMS320F28x3x
"Internal clock prescalers must be adjusted such that the SPI clock speed is limited to the following SPI clock rate:
Master mode transmit 25-MHz MAX, master mode receive 12.5-MHz MAX
Slave mode transmit 12.5 -MHz MAX, slave mode receive 12.5 -MHz MAX."
Причем одновременно:
"MAX LSPCLK = 75 MHz for 150 MHz devices and 100 MHz for 100 MHz devices."
"tc(SPC) = SPI clock cycle time = LSPCLK/4 or LSPCLK/(SPIBRR + 1)

Блин, там обработки на 10, ну может 20 с хорошим запасом MMACS, а вот чем втянуть такой поток - не могу найти (

Сообщение отредактировал draqon - Oct 5 2010, 23:39
Go to the top of the page
 
+Quote Post
rezident
сообщение Oct 6 2010, 00:38
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(draqon @ Oct 6 2010, 05:36) *
Блин, там обработки на 10, ну может 20 с хорошим запасом MMACS, а вот чем втянуть такой поток - не могу найти (
Если ARMы рассматривать, то считайте, что тактовая как минимум 4-х кратная должна быть. Или даже 8-ми кратная, то. бишь 160МГц. Например, SSP у LPC32x0 в режиме SPI до Fclk/2 в режиме master и до Fclk/12 в режиме slave поддерживает, то бишь 266МГц/12=22МГц. Но это ARM9 и корпус не совсем гуманный у них - BGA. А может вам все же на ПЛИС реализовать прием данных?
Go to the top of the page
 
+Quote Post
Абырвалг
сообщение Oct 6 2010, 07:48
Сообщение #13


Участник
*

Группа: Участник
Сообщений: 55
Регистрация: 23-08-06
Пользователь №: 19 752



Цитата(draqon @ Oct 6 2010, 03:36) *
Это из ДШ на TMS320F28x3x
"Internal clock prescalers must be adjusted such that the SPI clock speed is limited to the following SPI clock rate:
Master mode transmit 25-MHz MAX, master mode receive 12.5-MHz MAX
Slave mode transmit 12.5 -MHz MAX, slave mode receive 12.5 -MHz MAX."


Вот те нате, хрен из под кровати. В ревизиях даташита от October 2005 и May 2006: SPI clock Frequency MAX 20 MHz

А в MAY 2010 есть та приписка, что ты привел. У меня в приборе TMS через SPI опрашивает АЦП с частотой 18.75 МГц. Работает исправно но, как выясняется, имеет право не работать. wacko.gif


Цитата(draqon @ Oct 6 2010, 03:36) *
Причем одновременно:
"MAX LSPCLK = 75 MHz for 150 MHz devices and 100 MHz for 100 MHz devices."
"tc(SPC) = SPI clock cycle time = LSPCLK/4 or LSPCLK/(SPIBRR + 1)


Здесь нет противоречия. tc(SPC) определяется по этой формуле, но на него распространяется ограничение, что выше.

Цитата(draqon @ Oct 6 2010, 03:36) *
А какой процессор Вы можете посоветовать, который переверит 20 МГц тактирование в режиме SPI Slave? (Причем сам поток данных 10 Мбит/с)



У Delfino Microcontrollers (TMS320C28346, TMS320C28345, TMS320C28344, TMS320C28343, TMS320C28342, TMS320C28341):

Master mode transmit 25-MHz MAX, master mode receive 12.5-MHz MAX
Slave mode transmit 20-MHz MAX, slave mode receive 20-MHz MAX.
Go to the top of the page
 
+Quote Post
sysel
сообщение Oct 7 2010, 08:55
Сообщение #14


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 3-07-07
Пользователь №: 28 852



У меня есть 2 проекта на данных АЦПшках

В первом проекте ODR(output data rate) = 65536 sps. Сигналы интерфейса принимаю на ПЛИС. Проблем нет.

Во втором проекте ODR(output data rate) = 3600 sps. Сигналы интерфейса принимаю на SPI порт LPC1754.
Здесь проблема: после приёма первых 16 бит надо очень быстро (за 1 такт клока SPI) среагировать на окончание приёма данных и считать принятое значение. Т.к. у этого МК нет FIFO на SPI.

В режиме SSP с первой попытки принять не удалось: в требуемом режиме (CPOL = не помню чему,CPHA = не помню чему, но соответствует таймингам AD7764) SSP почему-то хочет, чтобы линию CS после первых 16 бит дёрнул на 1 такт в 1, а потом пришли бы оставшиеся 16 бит.

Вот и пришлось принимать на SPI, благо ODR маленькая.

Вообще AD7764 имеют интерфейс удобный для использования со "SPORT"-интерфейсом ADшных DSP(например Blackfin).

Есть аналогичные АЦПшки у TI (ADS12xx), с которыми связь с МК организовывать гораздо проще:

На шине SPI они SLAVE, можно этот SPI 3.3 В запитать.
Ловите прерывание, а потом до следующего неспешно читаете данные с удобной для Вас скоростью.
Go to the top of the page
 
+Quote Post
draqon
сообщение Oct 10 2010, 20:51
Сообщение #15





Группа: Новичок
Сообщений: 8
Регистрация: 27-09-10
Пользователь №: 59 763



Абырвалг
Понял, спасибо...

sysel
Так у LPC1754 12.5 МГц максимальная скорость SPI, какая скорость тактирования SPI у AD7764 вообще? В даташите в одном месте написано MCLK/2, а в другом ICLK/2..
Мне отцифровать 66.6 кГц надо, клок 40 МГц, ОДР 312.5к будет, техасовские АЦПшки не потянут...

Была мысль еще либо взять АД7762, либо АД7764 + конвертер СПИ-паралллельный код на простенькой ПЛИС и цепануть к TMS320F28x3x на интерфейс внешней памяти...
Еще как вариант всё реализовать на плисе конечно, ну уж очень не хочется...
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th June 2025 - 23:00
Рейтинг@Mail.ru


Страница сгенерированна за 0.01524 секунд с 7
ELECTRONIX ©2004-2016