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

 
 
 
Reply to this topicStart new topic
> Использовать ли аппаратный CS в SPI в AVR?, когда на шине несколько устройств
-=Женек=-
сообщение Dec 4 2010, 22:08
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 559
Регистрация: 6-09-06
Пользователь №: 20 131



Предположим у меня несколько SPI устройств на шине. Одного CS естественно не хватает. Остальные нужно будет на пинах мутить.
Не возникнет ли проблем, если одним CS управлять аппаратно, а остальными программно?

Я раньше по незнанию всегда вручную дергал CS подчиненного устройства, а недавно в одной из тем форума увидел упрек кому-то, что мол почему аппаратный CS не используете.

Может быть мои вопросы кому-то покажутся странными - просто в данный момент развожу плату и возник вопрос - в случае с несколькими подчиненными устройствами на шине SPI использовать ли для какого-нибудь из них аппаратный CS или лучше все под одну гребенку - дергать вручную? Не хочется столкнуться с проблемами, когда плата уже будет готова.

P.S. Шина организована в виде звезды, вариант с Daisy Chain не устраивает.
Go to the top of the page
 
+Quote Post
Itch
сообщение Dec 4 2010, 22:32
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 358
Регистрация: 27-06-06
Из: Новосибирск
Пользователь №: 18 410



а у AVR разве есть аппаратный CS в режиме мастера?
Насколько я знаю, он всегда как вход. Если в режиме мастера дернуть CS извне, то возникнет ошибка и SPI отрубится (типа мультимастер)
Go to the top of the page
 
+Quote Post
V_G
сообщение Dec 4 2010, 23:07
Сообщение #3


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

Группа: Свой
Сообщений: 1 818
Регистрация: 15-10-09
Из: Владивосток
Пользователь №: 52 955



Сигнал называется не CS, а SS (Slave Select). Если ваш проц работает единственным мастером, конфигурируйте эту ногу выходом и дергайте программно для какого-нибудь слейва, как и все остальные CS для других. Аппаратно его за вас никто дергать не будет.
Go to the top of the page
 
+Quote Post
-=Женек=-
сообщение Dec 4 2010, 23:27
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 559
Регистрация: 6-09-06
Пользователь №: 20 131



Тогда я все-таки не пойму - в чем заключается аппаратность этого вывода?

Не будет ли он "шалить", когда я буду отправлять данные для остальных слейвов, программно дергая ихние CS, а про SS забыв?
Go to the top of the page
 
+Quote Post
Itch
сообщение Dec 4 2010, 23:50
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 358
Регистрация: 27-06-06
Из: Новосибирск
Пользователь №: 18 410



Цитата(-=Женек=- @ Dec 5 2010, 05:27) *
Тогда я все-таки не пойму - в чем заключается аппаратность этого вывода?

аппаратность проявляется, когда он сконфигурирован как вход. в режиме слэйв прием без его дерганья впринципе невозможен, в режиме мастера это вызывает ошибку.
Цитата
Не будет ли он "шалить", когда я буду отправлять данные для остальных слейвов, программно дергая ихние CS, а про SS забыв?

нет. сам дергаться не будет
Go to the top of the page
 
+Quote Post
-=Женек=-
сообщение Dec 5 2010, 10:15
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 559
Регистрация: 6-09-06
Пользователь №: 20 131



Цитата
аппаратность проявляется, когда он сконфигурирован как вход. в режиме слэйв прием без его дерганья впринципе невозможен, в режиме мастера это вызывает ошибку.


Минуточку. Я хочу использовать режим мастер.
Допустим от аппаратного SS у меня дорожка разведена к одному из ведомых.
Я хочу сконфигурировать ее как выход и дергать ее программно.

Не получится?
Go to the top of the page
 
+Quote Post
777777
сообщение Dec 5 2010, 10:27
Сообщение #7


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

Группа: Участник
Сообщений: 1 091
Регистрация: 25-07-07
Из: Саратов
Пользователь №: 29 357



Цитата(-=Женек=- @ Dec 5 2010, 13:15) *
Минуточку. Я хочу использовать режим мастер.
Допустим от аппаратного SS у меня дорожка разведена к одному из ведомых.
Я хочу сконфигурировать ее как выход и дергать ее программно.

Не получится?

Нет конечно. А какой SS ты подключишь на остальные ведомые? Как контроллер SPI узнает какой из них включать? Как уже написали, SS имеет смысл только для ведомого. У ведущего ты можешь использовать для этих целей любые другие выводы любых других портов. И разумеется устанавливать их программно перед тем, как начать передачу по SPI.
Go to the top of the page
 
+Quote Post
V_G
сообщение Dec 5 2010, 11:37
Сообщение #8


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

Группа: Свой
Сообщений: 1 818
Регистрация: 15-10-09
Из: Владивосток
Пользователь №: 52 955



Получится. Режим мастер, SS сконфигуририован как выход и в этом смысле аналогичен "любым другим выводам любых других портов". Так что для одного из слейвов - SS, для остальных - любые другие. Все дергаем также аналогично, в смысле программно.
У меня работает на Atmega32, Atxmega32A4
Go to the top of the page
 
+Quote Post
-=Женек=-
сообщение Dec 5 2010, 11:45
Сообщение #9


Знающий
****

Группа: Свой
Сообщений: 559
Регистрация: 6-09-06
Пользователь №: 20 131



Значит, еще раз для тупых - SS оставить в воздухе, это вывод потерянный, так?
Или я все же могу сконфигурировать его как выход и управлять скажем светодиодом? ОДновременно используя аппаратный SPI.

Цитата
Получится. Режим мастер, SS сконфигуририован как выход и в этом смысле аналогичен "любым другим выводам любых других портов". Так что для одного из слейвов - SS, для остальных - любые другие. Все дергаем также аналогично, в смысле программно.
У меня работает на Atmega32, Atxmega32A4


Мнения ученых разошлись...

Короче говоря, будет ли работать такой код?

Код
InitSPI();//настройка SPI
DDRB.4=1; //настройка CS на выход
PORTB.4=1;//настройка CS на выкл


PORTB.4=0; //выбираем ведомого
SendSPI(байт);// посылаем байт
PORTB.4=1;// говорим до свиданья ведомому
Go to the top of the page
 
+Quote Post
Sergey_Aleksandr...
сообщение Dec 5 2010, 16:22
Сообщение #10


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

Группа: Свой
Сообщений: 168
Регистрация: 8-10-08
Из: РФ Смоленск
Пользователь №: 40 764



Код
InitSPI();//настройка SPI
DDRB.4=1; //настройка CS на выход
PORTB.4=1;//настройка CS на выкл


PORTB.4=0; //выбираем ведомого
SendSPI(байт);// посылаем байт
PORTB.4=1;// говорим до свиданья ведомому


Код работать будет. Для SPI в режиме Master этот вывод функционирует как обычный GPIO: хоть слэйвом управляйте, хоть светодиодом моргайте, хоть кнопку на него повесьте. Он ни разу не "потерян")
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Dec 5 2010, 18:16
Сообщение #11


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Цитата(-=Женек=- @ Dec 5 2010, 13:15) *
Минуточку. Я хочу использовать режим мастер.
Допустим от аппаратного SS у меня дорожка разведена к одному из ведомых.
Я хочу сконфигурировать ее как выход и дергать ее программно.

Не получится?
Получтся. Это очень хороший тон по возможности использовать SS как выход чтобы не было нужды инитить его вхолостую (все GPIO - входы после ресета и если забыть про висящий в воздухе SS можно получить танцы с бубном).


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post

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

 


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


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