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

 
 
> вопрос по SPI.
Metallist64
сообщение Oct 15 2008, 06:57
Сообщение #1


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

Группа: Участник
Сообщений: 103
Регистрация: 29-01-08
Пользователь №: 34 558



Здравствуйте!Уважаемые знатоки.
Помогите определиться со следующими вопросами по интерфейсу SPI.
На графиках передачи данных можно заметить, что Master и Slave могут осуществлять передачу данных одновременно.
т.е и Master и Slave передают данные друг другу.
В связи с этим возникли следующие вопросы :
- Как сделать одновременно прием и передачу? Ведь регистр данных один и адрес у него один.
- Что будет если прочитать регистр данных Slave если передача от Master еще не закончена?Ведь флаг SPIF устанавливается для передатчика, а не приемника.

- Что будет если во время приема байта от мастера я буду записывать в регистр данных байт который я хочу передать мастеру.
- Как убедиться,в том, что мастер закончил прием байта от slave?
- Не получится ли так, что придется самому придумывать протокол обмена м\у устройствами. Я имею в виду пересылать флаги окончания передачи, готовности и т.д.?
- Какое максимальное расстояние м/у приемником и передатчиком?
Большое спасибо.
PS MK - ATMega8.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Metallist64
сообщение Oct 15 2008, 10:21
Сообщение #2


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

Группа: Участник
Сообщений: 103
Регистрация: 29-01-08
Пользователь №: 34 558



Всем участникам ОГРОМНОЕ спасибо!
Но прошу добить меня до конца.
Вот следующий вопрос:
- допустим мастер решил передать данные( slave`а он не спрашивает готов ли тот передавать или нет). Выставляет лог.0 на SS. и процесс пошел. НО как определить слейву когда можно выставлять свой байт, ведь во время выставления может начаться передача и тогда со slave придет мусор. Или мастер все-таки подождет пока slave выставит свой байт? Помогите, никак не могу понять данный вопрос.

Сообщение отредактировал Metallist64 - Oct 15 2008, 11:16
Go to the top of the page
 
+Quote Post
Палыч
сообщение Oct 15 2008, 12:21
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(Metallist64 @ Oct 15 2008, 13:21) *
НО как определить слейву когда можно выставлять свой байт, ведь во время выставления может начаться передача и тогда со slave придет мусор. Или мастер все-таки подождет пока slave выставит свой байт? Помогите, никак не могу понять данный вопрос.
Когда я говорил выше: нужно придумать протокол обмена - имелось в виду, что Вы и определитесь: как Ваши устройства будут обмениваться информацией... Когда слейву выставлять и какие данные для передачи и должно быть определено в протоколе. Послольку, всем рулит мастер - инициатива обмена байтами по SPI будет исходить только от него. Может быть, Вам посмотреть для примера на что-нибудь из памяти с интерфейсом SPI? Скорость "работы" с SPI должна быть выше у слейва по сравнению с мастером (возможно, на мастере нужно предусмотреть задержки, для того, чтобы слейв успел положить нужный байт в регистр данных). Если слейв - не успел положить данные до обмена байтов с мастером - мастер может это узнать по принятому байту (он тот же, что и был передан мастером при предыдущем обмене байтами), слейв узнает это (что не успел положить) по биту WCOL... В протоколе д.б. предусмотрено: как этого по-возможности избежать и что делать, если это все-таки случилось.

P.S. Кстати, программирование по SPI AVR, которое описано в DS - можно взять как пример, и, переработав под свои нужды, придумать свой протокол...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Metallist64   вопрос по SPI.   Oct 15 2008, 06:57
- - kamil yaminov   Хоть регистр и один, но данные на передачу выдвига...   Oct 15 2008, 07:08
- - garbuz   Цитата(Metallist64 @ Oct 15 2008, 10:57) ...   Oct 15 2008, 07:13
- - Stanislav_S   Цитата(Metallist64 @ Oct 15 2008, 11:57) ...   Oct 15 2008, 07:19
|- - Палыч   Цитата(garbuz @ Oct 15 2008, 10:13) Скоре...   Oct 15 2008, 07:51
- - Metallist64   В даташите в режме slave при приеме байта ждут 1 ...   Oct 15 2008, 07:56
|- - Палыч   Цитата(Metallist64 @ Oct 15 2008, 10:56) ...   Oct 15 2008, 08:08
|- - Metallist64   Большое спасибо! Смутило отсутствие "по о...   Oct 15 2008, 08:14
|- - Stanislav_S   Цитата(Metallist64 @ Oct 15 2008, 13:14) ...   Oct 15 2008, 08:56
|- - Палыч   Цитата(Metallist64 @ Oct 15 2008, 11:14) ...   Oct 15 2008, 09:05
|- - mdmitry   Может не придумывать свой, а взять идеи из готовых...   Oct 15 2008, 12:51
|- - Metallist64   Большое спасибо за оказанную помощь!   Oct 15 2008, 12:58
- - mdmitry   Рассмотрите два варианта: 1. Прерывание при перехо...   Oct 15 2008, 12:17


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

 


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


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