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

 
 
 
Reply to this topicStart new topic
> 2 SPI модуля у dsPIC33, могут одновременно?
bullit
сообщение Sep 8 2008, 09:06
Сообщение #1


пуля
****

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



Доброго времени суток всем!
Сразу скажу, что с 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у.

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

Заранее большое спасибо.
Go to the top of the page
 
+Quote Post
evc
сообщение Sep 8 2008, 10:12
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 206
Регистрация: 17-03-07
Из: Москва
Пользователь №: 26 266



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

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

Если вам только читать АЦП и отправлять данные, можно даже и программно сделать (PIC24 - 40MIPS), только нужно задуматься об отправке. На какой скорости будете отправлять 16 битовые данные раз в 2us?


--------------------
УЭР
Go to the top of the page
 
+Quote Post
bullit
сообщение Sep 8 2008, 11:15
Сообщение #3


пуля
****

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



Отправлять буду после того как оцифрую 2 мс окно.
И ещё вопрос: после того как получил я 16 бит (длину данных там вроде как можно устанавливать = 8, 16, 32) сохраню в оперативу с первого модуля, потом приму со второго и тоже сохраню. Время хватит? работа чисто с бортовой оперативой.

А может хватить время у МК (silabs) с мипс = 25 одним хардварным и одним софтверным spi ? при тех же условиях. скорость передачи особо не волнует. Времени даже на 1 Гц скорости хватит
Go to the top of the page
 
+Quote Post
evc
сообщение Sep 8 2008, 12:26
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 206
Регистрация: 17-03-07
Из: Москва
Пользователь №: 26 266



Цитата(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;
}

например ...


--------------------
УЭР
Go to the top of the page
 
+Quote Post
bullit
сообщение Sep 8 2008, 12:35
Сообщение #5


пуля
****

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



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

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

Максимальная скорость будет fclk / 4 (или даже походу 6). Нет?
Go to the top of the page
 
+Quote Post
evc
сообщение Sep 8 2008, 12:46
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 206
Регистрация: 17-03-07
Из: Москва
Пользователь №: 26 266



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

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

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


Да, я не учел что вам нужно опрос повторять 10мс, вам лучше сразу отправлять каждый бит соответствующему буферу.
Максимальная скорость в зависимости от того сколько такта будут нужны компилятору... smile.gif


--------------------
УЭР
Go to the top of the page
 
+Quote Post
=GM=
сообщение Sep 9 2008, 22:59
Сообщение #7


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(bullit @ Sep 8 2008, 08:06) *
Приглянулися мне dsPIC33FJ. Хотя PIC32 SPI до 25 МГц, а dsPIC33 до 10 максимум

Где вы смотрите, у dsPIC33 скорость SPI максимум до 40Мбод.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
bullit
сообщение Sep 10 2008, 03:25
Сообщение #8


пуля
****

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



Тут я думаю надо небольшое уточнение.
В документе DS70286A-page 164 говорится, что макс скорость клока 10МГц. А в документе DS70292B-page 189 об ограничении скорости нечего не говорится. Можно считать, что для dsPIC33FJ32GP302/304, dsPIC33FJ64GPX02/X04, dsPIC33FJ128GPX02/X04 ограничение скорости от клока НЕТ.
Go to the top of the page
 
+Quote Post
Alex B._
сообщение Sep 10 2008, 06:45
Сообщение #9


Знающий
****

Группа: Свой
Сообщений: 943
Регистрация: 6-07-04
Из: Санкт-Петербург
Пользователь №: 274



Цитата(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.
Go to the top of the page
 
+Quote Post
bullit
сообщение Sep 10 2008, 07:36
Сообщение #10


пуля
****

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



Цитата
потому что такие вещи ищут не между строк в описании модуля, а в параграфе "Электрические характеристики"

ммм. Спасибо! Но я уже понял, что максимальный клок 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 градусов), что очень плохо...
Go to the top of the page
 
+Quote Post
=GM=
сообщение Sep 10 2008, 09:24
Сообщение #11


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(bullit @ Sep 10 2008, 06:36) *
Присмотрел PIC32. Там 25 МГц. Но по-моему нет на extendet temp range (до 125 градусов), что очень плохо...

Тогда присмотритесь к TMS320F2808,..06,..01, там точно работает до 125С и 4 независимых spi со скоростью 20 МГц.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
bullit
сообщение Sep 10 2008, 09:47
Сообщение #12


пуля
****

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



Прошу прощения за оффтоп.
А что у него за ядро? не ARM7 ведь? А среди ARM7 есть на 125?

Просто мне советовали в сторону АРМов смотреть, но на 125 пока не встречал. Кроме Филипсовских LPC2194 (помоему).
Go to the top of the page
 
+Quote Post
=GM=
сообщение Sep 10 2008, 14:16
Сообщение #13


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(bullit @ Sep 10 2008, 08:47) *
А что у него за ядро? не ARM7 ведь? А среди ARM7 есть на 125?

Нет, не арм. Там 100-мипсовый дсп со своим ядром и дофига периферии, неплохая машинка, одна из лучших в своём классе. Если писать на си, то какая к шутам разница какое там ядро?


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
bullit
сообщение Sep 24 2008, 03:23
Сообщение #14


пуля
****

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



Цитата
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 МГц.
Некоторые участки кода, где требования к времени выполнения кода высоки, писать наверное уж на асме лучше?
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 19th July 2025 - 04:43
Рейтинг@Mail.ru


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