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

 
 
 
Reply to this topicStart new topic
> AT91RM9200 SPI Peripheral Mode, Variable Peripheral Mode или Fixed Peripheral Mode?
junkl
сообщение Nov 16 2007, 07:51
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 69
Регистрация: 12-10-05
Из: Калуга
Пользователь №: 9 539



Кто-нибудь использовал более одного Slave-устройства на шине SPI? Какой режим переключения между периферийными устройствами лучше использовать? И возможно ли вообще использовать Fixed Peripheral Mode? Чем грозит вот этот пункт из Errata Sheet?
Цитата
14. SPI: No chip select configuration change before end of current transfer
If the SPI is programmed in Master Mode and in Fixed Peripheral Mode, and data is
being sent to a slave, the user has to wait for completion of the transfer before
changing the slave number. Programming a new slave number (PCS) and/or a new
DLYBCS field locks the SPI on the current slave.
Problem Fix/Workaround
The user should use the Variable Peripheral Mode.

В каком случае SPI будет заблокрован? Только если изменить PCS в процессе передачи данных от мастера слэйву?

Может быть, у кого-нибудь есть пример работы со SPI в Variable Peripheral Mode с использованием PDC?
Буду очень благодарна!
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Nov 16 2007, 18:17
Сообщение #2


Гуру
******

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



Для того чтобы ответить на Ваши вопросы, желательно знать конфигурацию аппаратной части: что именно планируется повесить на SPI, какие будут потоки/объемы данных и т.п.
Например, SPI в Variable Peripheral Mode с использованием PDC очень удачно подходит для работы с ЦАП/АЦП, но работать с памятью будет неудобно.
Go to the top of the page
 
+Quote Post
Ruslan1
сообщение Nov 23 2007, 20:49
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025



Цитата(junkl @ Nov 16 2007, 09:51) *
Кто-нибудь использовал более одного Slave-устройства на шине SPI? Какой режим переключения между периферийными устройствами лучше использовать? И возможно ли вообще использовать Fixed Peripheral Mode? Чем грозит вот этот пункт из Errata Sheet?

В каком случае SPI будет заблокрован? Только если изменить PCS в процессе передачи данных от мастера слэйву?

Может быть, у кого-нибудь есть пример работы со SPI в Variable Peripheral Mode с использованием PDC?
Буду очень благодарна!


Использую 8 слейвов (то есть еще с внешним дешифратором). Именно в указанном тобой режиме. Девайсы разные- АЦП, ЦАП, синтезаторы частоты, DataFlash. С этого же SPI и гружусь.
Пользую ПДП, переключаю адрес только после окончания обмена. Никаких проблем не заметил.

Пример- это сложнее, у меня идет поток с возможностью вставки стороннего запроса от других задач, наворочено чуть, может испугать. smile.gif
А так- ничего сложного. Загоняешь в PDC и далее ждешь прерывания по окончанию запроса.
Нюанс- если быстро подряд послать два запроса к одному и тому же адресу, то может не устанавливать CS в "1" между этими запросами. Каким-то устройствам это может быть критично. В таких случаях я вставлял принудительный таймаут.
Go to the top of the page
 
+Quote Post
junkl
сообщение Nov 24 2007, 20:53
Сообщение #4


Участник
*

Группа: Новичок
Сообщений: 69
Регистрация: 12-10-05
Из: Калуга
Пользователь №: 9 539



Большое спасибо. У меня всего два устройства: DataFlash и температурный датчик. Вроде бы разобралась: использую Fixed Peripheral Mode и PDC, также как и вы переключаю адрес только после окончания обмена. Все работает.
Go to the top of the page
 
+Quote Post
Ruslan1
сообщение Nov 25 2007, 19:37
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025



Цитата(junkl @ Nov 24 2007, 22:53) *
Большое спасибо. У меня всего два устройства: DataFlash и температурный датчик. Вроде бы разобралась: использую Fixed Peripheral Mode и PDC, также как и вы переключаю адрес только после окончания обмена. Все работает.

Кстати, из личного опыта. Если одновременно активно работаете с SPI PDC и пользуете аппаратный ТWI, то не пугайтесь, если TWI зависнет. Я напоролся на глюки TWI именно когда стал гонять безостановочный поток запросов-ответов по SPI. Вылечилось отказом от аппаратного TWI и заменой его софтовым.
Go to the top of the page
 
+Quote Post
romashko
сообщение Nov 26 2007, 01:09
Сообщение #6


Частый гость
**

Группа: Свой
Сообщений: 85
Регистрация: 25-12-06
Пользователь №: 23 865



у кого-нить на сабжевом контроллере удавалось задействовать АППАРАТНЫЙ SPI с ножкой npcs0 ?

у меня он блокируется (повисает в цикле опроса статус-байта). По другим чипселектам работает нормально.
Go to the top of the page
 
+Quote Post
Ruslan1
сообщение Nov 26 2007, 06:12
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025



Цитата(romashko @ Nov 26 2007, 03:09) *
у кого-нить на сабжевом контроллере удавалось задействовать АППАРАТНЫЙ SPI с ножкой npcs0 ?

у меня он блокируется (повисает в цикле опроса статус-байта). По другим чипселектам работает нормально.

Да, конечно. У меня на нем через дешифратор висит загрузочный DataFlash. То есть при включении его номер (#0) декодируется дешифратором как 14 (0b1110), когда в программе включаю работу с дешифратором, то обращение к нему идет уже как к #14. Ну и конечно при работе с дешифратором NPCS0 участвует в формировании остальных CS.
Никаких проблем не заметил.
Go to the top of the page
 
+Quote Post
romashko
сообщение Nov 26 2007, 06:45
Сообщение #8


Частый гость
**

Группа: Свой
Сообщений: 85
Регистрация: 25-12-06
Пользователь №: 23 865



Цитата(Ruslan1 @ Nov 26 2007, 16:12) *
Ну и конечно при работе с дешифратором NPCS0 участвует в формировании остальных CS.
Никаких проблем не заметил.

я тоже с Npcs0 автоматически гружусь (at45db011) smile.gif
попробуй оттудова чё-нить считать или записать
уверен, что аппаратным SPI не получится, токо софтверно sad.gif

если я не прав, то приаттачь плиз фрагмент кода, работающий с npcs0 rm9200 help.gif
а то npcs 1,2,3 -работают у меня, а 0 - нет...

P.S. видать Atmel софтварно с npcs0 грузится...

Сообщение отредактировал romashko - Nov 26 2007, 06:46
Go to the top of the page
 
+Quote Post
Ruslan1
сообщение Nov 26 2007, 14:07
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025



Цитата(romashko @ Nov 26 2007, 08:45) *
я тоже с Npcs0 автоматически гружусь (at45db011) smile.gif
попробуй оттудова чё-нить считать или записать
уверен, что аппаратным SPI не получится, токо софтверно sad.gif

если я не прав, то приаттачь плиз фрагмент кода, работающий с npcs0 rm9200 help.gif
а то npcs 1,2,3 -работают у меня, а 0 - нет...

P.S. видать Atmel софтварно с npcs0 грузится...

Что-то я тебя не понял. Ты грузишься, но у тебя не работает? А как тогда ты код загружаешь?
Или у тебя весь код программы в внутреннюю RAM лезет? Счастливый smile.gif
Обычно у народа сначала автоматом грузится маленький кусок программы, который производит как минимум тестирование и настройку для загрузки основной части кода (например, SDRAM). Дальше уже эта программка загружает основной код, и передает на него управление. У меня точно так же. И все великолепно работает. Ну и конечно потом пишу-читаю всякую всячину из этой же памяти.
Хм. Хотя нет, у меня не так просто. Я сразу дешифратор адреса SPI включаю, чтобы остальная периферия не хулиганила. Так что да, напрямую на npcs0 у меня ничего не висит, таких простых систем не было. :-)
Так что может кто другой напрямую опровергнет твое в высшей мере спорное утверждение о неработоспособности npcs0. У меня оно работает, но в режиме с вкл.дешифратором, другие варианты не проверял.
Go to the top of the page
 
+Quote Post
romashko
сообщение Nov 27 2007, 01:31
Сообщение #10


Частый гость
**

Группа: Свой
Сообщений: 85
Регистрация: 25-12-06
Пользователь №: 23 865



Цитата(Ruslan1 @ Nov 27 2007, 00:07) *
Что-то я тебя не понял. Ты грузишься, но у тебя не работает? А как тогда ты код загружаешь?

Работает!

Цитата(Ruslan1 @ Nov 27 2007, 00:07) *
Обычно у народа сначала автоматом грузится маленький кусок программы, который производит как минимум тестирование и настройку для загрузки основной части кода (например, SDRAM). Дальше уже эта программка загружает основной код, и передает на него управление. У меня точно так же.

и у меня также smile.gif

Попробуй в какой-нибудь последний сектор загрузочного датафлеша что-нибудь считать/записать!

а я на NPCS0 вешал ММС-карточку - нифига не работает!!! Проверил на npcs1,2,3 - работает
Go to the top of the page
 
+Quote Post
romashko
сообщение Nov 27 2007, 07:28
Сообщение #11


Частый гость
**

Группа: Свой
Сообщений: 85
Регистрация: 25-12-06
Пользователь №: 23 865



мне нужно чтобы мой прошивальщик шил датафлеш. По npcs0 не шьёт, перекидываю временно на npcs1
могу шить флеш по npcs0, но софтварно
Go to the top of the page
 
+Quote Post

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

 


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


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