|
32х битный SPI, чем и как принять поток?, АЦП AD7764 |
|
|
|
Sep 27 2010, 14:32
|
Группа: Новичок
Сообщений: 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?
|
|
|
|
|
Sep 27 2010, 23:19
|
Группа: Новичок
Сообщений: 8
Регистрация: 27-09-10
Пользователь №: 59 763

|
Цитата(MALLOY2 @ Sep 27 2010, 19:02)  Какая разница какой SPI хоть 8 хоть 16, рулите чипселектом и запускаете сколько вам надо посылок. Там нет чипселекта, мастер - АЦП Цитата(rezident @ Sep 27 2010, 19:07)  Не понял сути затруднений.  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МГц клоке), но это совсем впритык.. Прошу прощения, если я где-то туплю, ибо пока только учусь  ))
|
|
|
|
|
Sep 27 2010, 23:46
|
Гуру
     
Группа: Свой
Сообщений: 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 М? Почему именно такой запас? Дык банальная арифметика.  20Мбит/с / 8 бит=2,5МБайт/с и соответственно 1,25Мслов/с. Цитата(draqon @ Sep 28 2010, 05:19)  У меня получилось, что msp430 переваривает до 10Мбит/c поток (при 25МГц клоке), но это совсем впритык.. По прерыванию? У MSP430 вход в прерывание и выход из него, даже без сохранения контекста, 9 тактов занимает. Не очень хорошо это. Для быстродействия получается, что выгоднее по опросу флага готовности работать.
|
|
|
|
|
Sep 28 2010, 00:11
|
Группа: Новичок
Сообщений: 8
Регистрация: 27-09-10
Пользователь №: 59 763

|
Цитата Вопрос бессмысленный, Ну получается c28 (например DSC tms320f28234) или msp430f5x серия Цитата Дык банальная арифметика.  20Мбит/с / 8 бит=2,5МБайт/с и соответственно 1,25Мслов/с. Ааа, понял  Там странная передача только сделана, тактовая частота 10 (20 Мгц) (просто в дш в двух местах написано по разному, пока что точно не выяснил, скорее всего 20), причем поток данных 32бита x 312500 SPS = 10 Мбит/c. То есть получается в первом случае передается всё время, а во-втором передача только половину времени. Цитата По прерыванию? У MSP430 вход в прерывание и выход из него, даже без сохранения контекста, 9 тактов занимает. Не очень хорошо это. Для быстродействия получается, что выгоднее по опросу флага готовности работать. Виноват, считал только по таймингам установки-удержания Пойду еще в даташиты зароюсь
Сообщение отредактировал draqon - Sep 28 2010, 00:12
|
|
|
|
|
Sep 28 2010, 00:29
|
Гуру
     
Группа: Свой
Сообщений: 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)  Виноват, считал только по таймингам установки-удержания Пойду еще в даташиты зароюсь  Угу, нужно уточнить. Я по памяти писал и наврал немного  6 тактов вход и 5 тактов выход, итого 11 тактов.
|
|
|
|
|
Oct 5 2010, 03:43
|
Участник

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

|
Цитата(draqon @ Sep 28 2010, 03:19)  Тоесть, если я правильно понял, 16 бит приняли > по прерыванию обработали, дальше принимаем слудующие 16 бит, ну и по словной синхронизации контроллируем слова.. Я так понимаю ДМА в таком режиме тоже настроить вполне реально? В пикале у spi есть fifo 4 слова по 16 бит, так что прерывание требуется реже. в семействе 2812 fifo на 16 слов.
|
|
|
|
|
Oct 5 2010, 23:36
|
Группа: Новичок
Сообщений: 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
|
|
|
|
|
Oct 6 2010, 00:38
|
Гуру
     
Группа: Свой
Сообщений: 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. А может вам все же на ПЛИС реализовать прием данных?
|
|
|
|
|
Oct 6 2010, 07:48
|
Участник

Группа: Участник
Сообщений: 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 МГц. Работает исправно но, как выясняется, имеет право не работать. Цитата(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.
|
|
|
|
|
Oct 10 2010, 20:51
|
Группа: Новичок
Сообщений: 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 на интерфейс внешней памяти... Еще как вариант всё реализовать на плисе конечно, ну уж очень не хочется...
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|