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

 
 
> 2 SPI скорость, алгоритм, LPC2194/LPC2294 /01
bullit
сообщение Sep 18 2008, 12:08
Сообщение #1


пуля
****

Группа: Свой
Сообщений: 674
Регистрация: 10-05-06
Из: Уфа
Пользователь №: 16 959



Доброго времени суток всем!
Сразу скажу, что с АРМами, дела не имел, поэтому ориентируюсь плохо.

Стоит следующая задача:
1) есть 2 АЦП AD7980. (1 MSPS, 16 бит, SPI) Время готовности данных = до 720 нс - макс.
2) необходимо каждые 2 мкс опрашивать обе АЦП (одновременно или со сдвигом 1 мкс), в течении ~2( и до 16) мс.
3) как вариант uC выбрал LPC2194(2294)/01 (на 125 градусов)
т.е. если запустить одновременно оба АЦП, то есть 1280 нс на получение данных с обоих АЦП на два SPI.
1280 нс / (16+1)= 13 МГц с копейками (!) клок. Не маленькая скорость.

Выбрал я LPC2194(2294) из-за АРМ (охота его освоить) и температуры применения 125 град. Тем более /01 могут работать и с 16 бит данных SPI.
Вот думаю, можно ли использовать оба модуля SPI одновременно?
В мануале:
Цитата
In Master mode, this register must be an even number greater than or equal to 8.
Violations of this can result in unpredictable behavior. The SPI SCK rate may be
calculated as: PCLK / SnSPCCR value. The PCLK rate is CCLK /APB divider rate as
determined by the APBDIV register contents (see Table 6–76).

Но что-то дальше теряется мысль... какова максимальная скорость SPI клока?

Я вижу картину так:
1) запускаем конвертирование обоих АЦП
2) разрешаем внешнее прерывания на выход SDO АЦП (см. даташит стр. 18 или 20)
3) как только пришло прерывание (без разницы от первого или второго), запускаем SPI
4) ждём прерывание от второго АЦП
5) ждем прерывание на "готовность" данных по SPI - т.е. прерывание на то что данные пришли.
6) записываем в память
7) таймер с переодичностью 2 мкс запускает преобразования.
Можно ли реализовать такой алгоритм?

Полученные данные обрабатывать не нужно. Просто по запросу передать по UARTу.

PS реализацию на PIC обсуждалось здесь, но скорость 10 МГц мне мало...

Заранее большое спасибо.
Прикрепленные файлы
Прикрепленный файл  AD7980.pdf ( 632.13 килобайт ) Кол-во скачиваний: 31
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 11)
avva
сообщение Sep 18 2008, 12:41
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 15-02-07
Из: Москва
Пользователь №: 25 386



ну так даташит смотрите, сколько максимальная частота SPI может быть в этом чипе, а также сколько AD7980 держит.

The SPI SCK rate may be calculated as: PCLK / SnSPCCR value.

мне кажется так:

минимальное значение делителя SPCCR для мастер мода =2.
таким образом, вам надо, чтобы PCLK был минимум 30мГц, (чтобы частота SPI 15мГц) то есть для делителя APB=1 надо внешний кварцевый резонатор иметь 30мГц, что НЕ совсем рекомендуется для кристаллов LPC21xx (10-25мГц входной кварцевый резонатор рекомендован, но можно и 30) (я лично не пробовал больше 20)

таким образом имхо вроде как всё проходит.

Сообщение отредактировал avva - Sep 18 2008, 12:50


--------------------
С уважением,
Go to the top of the page
 
+Quote Post
vesago
сообщение Sep 18 2008, 13:32
Сообщение #3


Тутэйшы
****

Группа: Свой
Сообщений: 708
Регистрация: 30-11-04
Пользователь №: 1 263



Наверное по SPI с данным чипом вам трудно будет выжать крутую скорость. Мегагерц 8 в среднем порядок если память не изменяет.
Go to the top of the page
 
+Quote Post
Alex03
сообщение Sep 18 2008, 14:54
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 359
Регистрация: 9-12-05
Пользователь №: 12 034



60/8=7.5МГц максимум частота для SPI.
Если остановитесь именно на этих процах (они в линейке LPC довольно старые и дорогие) то не зубудте про обязательное подтягивание slave select для каждого SPI.
В более новых есть более шустрые SSP
Go to the top of the page
 
+Quote Post
esaulenka
сообщение Sep 18 2008, 15:49
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877



Цитата
минимальное значение делителя SPCCR для мастер мода =2.

Странно. А вот тут написано другое...
Цитата
In Master mode, this register must be an even number greater than or equal to 8.

Итого: SPI у филипсов небыстрый. Весьма небыстрый...
У меня под рукой нету даташитов на 2194 - там есть пара SSP ? Тот же SPI, но в 4 раза быстрее и с небольшим FIFO.


Цитата
надо внешний кварцевый резонатор иметь 30мГц

Или надо научиться пользоваться PLL'ем.


--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
Go to the top of the page
 
+Quote Post
bullit
сообщение Sep 19 2008, 07:27
Сообщение #6


пуля
****

Группа: Свой
Сообщений: 674
Регистрация: 10-05-06
Из: Уфа
Пользователь №: 16 959



SSP всего один. А потянет он 25 МГц? Чтоб на него два последовательно (см даташит) АЦП посадить?
Скорость SPI как я понял не может быть выше 60/8 = 7,5 МГц.

Походу надо смотреть в сторону АЦП с паралельным выходом. Что не есть гут.
Go to the top of the page
 
+Quote Post
avva
сообщение Sep 19 2008, 09:09
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 15-02-07
Из: Москва
Пользователь №: 25 386



Bullit, извините, я в прошлом сообщении ступил и ввёл вас в заблуждение, esaulenka и Alex03 абсолютно правы, максимальная частота на шине pclk 60мГц, а делитель минимальный для мастера SPI составляет 8 (в отличие от режима для чипа, в котором есть SSP, здесь действительно 2 минимум).

Сообщение отредактировал avva - Sep 19 2008, 09:10


--------------------
С уважением,
Go to the top of the page
 
+Quote Post
bullit
сообщение Sep 19 2008, 12:06
Сообщение #8


пуля
****

Группа: Свой
Сообщений: 674
Регистрация: 10-05-06
Из: Уфа
Пользователь №: 16 959



Да не чего страшного, я всё равно уже разобрался в SPI, а вот SSP.
Остаётся тока узнать что такое SSP, и можно ли его юзать по рисунку 42, страница 22 (только в моём случае это 2 АЦП, а не три).

По расчётам получается, что для получение данных у меня скорость должна быть порядка (1280 нс/34..35)= 26..27 МГц. С учётом того что SSP работает на половине частоты pclk, то получается что хватит.
Go to the top of the page
 
+Quote Post
esaulenka
сообщение Sep 19 2008, 14:28
Сообщение #9


Профессионал
*****

Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877



Цитата
Остаётся тока узнать что такое SSP, и можно ли его юзать по рисунку 42, страница 22 (только в моём случае это 2 АЦП, а не три).

Не могу сообразить, как покрасивее сбрасывать busy indicator. SPI не предназначен для однократного дерганья ноги Clk.

Вариант на рис.39 попроще.
И скорость (1280 / 32) с чуть большим запасом smile.gif

смотри:
запускаем таймер, запускаем преобразование.
-через 720 наносекунд - прерывание от таймера, запускаем чтение 2 слов из АЦП
-через 2000 наносекунд - прерывание от таймера. настроить сброс таймера в этом прерывании
запускаем преобразование
разбираем данные


--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
Go to the top of the page
 
+Quote Post
bullit
сообщение Sep 19 2008, 16:31
Сообщение #10


пуля
****

Группа: Свой
Сообщений: 674
Регистрация: 10-05-06
Из: Уфа
Пользователь №: 16 959



Бизи будем вайлом ждать. Если конечно из-за тормозов не проглядим старший бит.
затем... всё на приложенном рисунке описано...

Канает такой вариант?

Хотя Ваш вариант тоже неплох.

Но какой выбрать.....
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
esaulenka
сообщение Sep 23 2008, 12:53
Сообщение #11


Профессионал
*****

Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877



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

Разве что внешний клок, SSP в режиме SPI slave, и запускать его, когда потребуется. Но как не пропустить начало, непонятно.

Мой вариант проще smile.gif


--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
Go to the top of the page
 
+Quote Post
bullit
сообщение Sep 24 2008, 05:33
Сообщение #12


пуля
****

Группа: Свой
Сообщений: 674
Регистрация: 10-05-06
Из: Уфа
Пользователь №: 16 959



Я вот что-то недопонимаю: можно ли клок включить "мгновенно"? Т.е. пришло прирывание, и запускаем клок и принимаем битики. Каких-то особых требований к времени запуска я не видел в доках.
Go to the top of the page
 
+Quote Post

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

 


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


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