Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: 2 SPI модуля у dsPIC33
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры > PIC
bullit
Доброго времени суток всем!
Сразу скажу, что с PICами, дела не имел, поэтому ориентируюсь плохо.

Стоит следующая задача:
1) есть 2 АЦП AD7980. (1 MSPS, 16 бит, SPI) Время готовности данных = до 720 нс.
2) необходимо каждые 2 мкс опрашивать АЦП, в течении ~2 мс.
т.е. если запустить одновременно оба АЦП, то есть 1280 нс на получение данных с обоих АЦП.
1280 нс / 32 (=2х16) = 25 МГц (!) клок. Бешеная скорость.

Приглянулися мне dsPIC33FJ. Хотя PIC32 SPI до 25 МГц, а dsPIC33 до 10 максимум.
Вот думаю, может использовать оба модуля SPI? тогда и скорость в два раза ниже. Можно ли использовать одновременно 2 модуля SPI. Даташиту читал, противоречий не увидел. Оба модуля настраиваются своими регистрами...

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

Может даже выбрать что-то попроще можно?

Заранее большое спасибо.
evc
Цитата(bullit @ Sep 8 2008, 13:06) *
Можно ли использовать одновременно 2 модуля SPI.

Конечно, можно. Я так пользую оба модуля i2c.
Цитата(bullit @ Sep 8 2008, 13:06) *
Может даже выбрать что-то попроще можно?

Если вам только читать АЦП и отправлять данные, можно даже и программно сделать (PIC24 - 40MIPS), только нужно задуматься об отправке. На какой скорости будете отправлять 16 битовые данные раз в 2us?
bullit
Отправлять буду после того как оцифрую 2 мс окно.
И ещё вопрос: после того как получил я 16 бит (длину данных там вроде как можно устанавливать = 8, 16, 32) сохраню в оперативу с первого модуля, потом приму со второго и тоже сохраню. Время хватит? работа чисто с бортовой оперативой.

А может хватить время у МК (silabs) с мипс = 25 одним хардварным и одним софтверным spi ? при тех же условиях. скорость передачи особо не волнует. Времени даже на 1 Гц скорости хватит
evc
Цитата(bullit @ Sep 8 2008, 15:15) *
Отправлять буду после того как оцифрую 2 мс окно.
И ещё вопрос: после того как получил я 16 бит (длину данных там вроде как можно устанавливать = 8, 16, 32) сохраню в оперативу с первого модуля, потом приму со второго и тоже сохраню. Время хватит?


Если будете пользовать оба модуля, можете запускать их одновременно, у каждого SPI - свой буфер.
Программно если делаете - "клок" будет общий, а данные тоже будут поступать одновременно на два пина "данные", тоже быстро получается:

unsigned long буфер_SPI;
for (i = 0; i < 16; i++){
пин_клок = 1;
буфер_SPI += PORTX & 3;//Данные поступают на 0 и 1 пин.
пин_клок = 0;
буфер_SPI = буфер_SPI << 2;
}

например ...
bullit
Интересно скока тактов занимает? Ведь это можно спокойно подсчитать? Для конкретного компилятора и МК свои данные будут?

А что, получается каждый чётный бит одно слово, а каждый нечётный другое слово? А потом надо будет помножить на 1010... и убрать промежуточные следующим образом: >>2 ?

Максимальная скорость будет fclk / 4 (или даже походу 6). Нет?
evc
Цитата(bullit @ Sep 8 2008, 16:35) *
... Для конкретного компилятора и МК свои данные будут?

Да, хотя разницы должны быть невеликие...
Цитата(bullit @ Sep 8 2008, 16:35) *
А что, получается каждый чётный бит одно слово, а каждый нечётный другое слово? А потом надо будет помножить на 1010... и убрать промежуточные следующим образом: >>2 ?

Максимальная скорость будет fclk / 4 (или даже походу 6). Нет?


Да, я не учел что вам нужно опрос повторять 10мс, вам лучше сразу отправлять каждый бит соответствующему буферу.
Максимальная скорость в зависимости от того сколько такта будут нужны компилятору... smile.gif
=GM=
Цитата(bullit @ Sep 8 2008, 08:06) *
Приглянулися мне dsPIC33FJ. Хотя PIC32 SPI до 25 МГц, а dsPIC33 до 10 максимум

Где вы смотрите, у dsPIC33 скорость SPI максимум до 40Мбод.
bullit
Тут я думаю надо небольшое уточнение.
В документе DS70286A-page 164 говорится, что макс скорость клока 10МГц. А в документе DS70292B-page 189 об ограничении скорости нечего не говорится. Можно считать, что для dsPIC33FJ32GP302/304, dsPIC33FJ64GPX02/X04, dsPIC33FJ128GPX02/X04 ограничение скорости от клока НЕТ.
Alex B._
Цитата(bullit @ Sep 10 2008, 07:25) *
Тут я думаю надо небольшое уточнение.
В документе DS70286A-page 164 говорится, что макс скорость клока 10МГц. А в документе DS70292B-page 189 об ограничении скорости нечего не говорится.

потому что такие вещи ищут не между строк в описании модуля, а в параграфе "Электрические характеристики". Конкретно для новых малоногих dsPIC33:
The minimum clock period for SCKx is 100 ns. The clock generated in Master mode must not violate this
specification.
bullit
Цитата
потому что такие вещи ищут не между строк в описании модуля, а в параграфе "Электрические характеристики"

ммм. Спасибо! Но я уже понял, что максимальный клок 10МГц. И при такой скорости у меня не как не хватит времени.
Присмотрел PIC32. Там:
Цитата
The minimum clock period for SCKx is 40 nsec. Therefore, the clock generated in Master mode must not
violate this specification.
Т.е. 25 МГц. Но помоему нет на extendet temp range (до 125 градусов), что очень плохо...
=GM=
Цитата(bullit @ Sep 10 2008, 06:36) *
Присмотрел PIC32. Там 25 МГц. Но по-моему нет на extendet temp range (до 125 градусов), что очень плохо...

Тогда присмотритесь к TMS320F2808,..06,..01, там точно работает до 125С и 4 независимых spi со скоростью 20 МГц.
bullit
Прошу прощения за оффтоп.
А что у него за ядро? не ARM7 ведь? А среди ARM7 есть на 125?

Просто мне советовали в сторону АРМов смотреть, но на 125 пока не встречал. Кроме Филипсовских LPC2194 (помоему).
=GM=
Цитата(bullit @ Sep 10 2008, 08:47) *
А что у него за ядро? не ARM7 ведь? А среди ARM7 есть на 125?

Нет, не арм. Там 100-мипсовый дсп со своим ядром и дофига периферии, неплохая машинка, одна из лучших в своём классе. Если писать на си, то какая к шутам разница какое там ядро?
bullit
Цитата
TMS320F2808,..06,..01, там точно работает до 125С и 4 независимых spi со скоростью 20 МГц.

Тут стоит уточнить:
Цитата
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-MAX, slave mode receive 12.5-MHz MAX.
У меня режим Мастер на приём, значит не выше 12,5 МГц.
Некоторые участки кода, где требования к времени выполнения кода высоки, писать наверное уж на асме лучше?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.