|
|
  |
2 SPI модуля у dsPIC33, могут одновременно? |
|
|
|
Sep 8 2008, 09:06
|

пуля
   
Группа: Свой
Сообщений: 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у.
Может даже выбрать что-то попроще можно?
Заранее большое спасибо.
|
|
|
|
|
Sep 8 2008, 10:12
|

Местный
  
Группа: Свой
Сообщений: 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?
--------------------
УЭР
|
|
|
|
|
Sep 8 2008, 12:26
|

Местный
  
Группа: Свой
Сообщений: 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; } например ...
--------------------
УЭР
|
|
|
|
|
Sep 8 2008, 12:46
|

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

|
Цитата(bullit @ Sep 8 2008, 16:35)  ... Для конкретного компилятора и МК свои данные будут? Да, хотя разницы должны быть невеликие... Цитата(bullit @ Sep 8 2008, 16:35)  А что, получается каждый чётный бит одно слово, а каждый нечётный другое слово? А потом надо будет помножить на 1010... и убрать промежуточные следующим образом: >>2 ?
Максимальная скорость будет fclk / 4 (или даже походу 6). Нет? Да, я не учел что вам нужно опрос повторять 10мс, вам лучше сразу отправлять каждый бит соответствующему буферу. Максимальная скорость в зависимости от того сколько такта будут нужны компилятору...
--------------------
УЭР
|
|
|
|
|
Sep 10 2008, 07:36
|

пуля
   
Группа: Свой
Сообщений: 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 градусов), что очень плохо...
|
|
|
|
|
Sep 24 2008, 03:23
|

пуля
   
Группа: Свой
Сообщений: 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 МГц. Некоторые участки кода, где требования к времени выполнения кода высоки, писать наверное уж на асме лучше?
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|