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

 
 
> вопрос по 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, 07:56
Сообщение #2


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

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



В даташите в режме slave при приеме байта ждут 1 во флаге SPIF. ОН ЧТО ПРИ ПРИЕМЕ УСТАНАВЛИВАЕТЯ В 0 ???.

while(!(SPSR & (1<<SPIF)))

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


Гуру
******

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



Цитата(Metallist64 @ Oct 15 2008, 10:56) *
В даташите в режме slave при приеме байта ждут 1 во флаге SPIF. ОН ЧТО ПРИ ПРИЕМЕ УСТАНАВЛИВАЕТЯ В 0 ???.
Цитата из DS
Цитата
When a serial transfer is complete, the SPIF flag is set. An interrupt is generated if SPIE in SPCR is set and global interrupts are enabled. If SS is an input and is driven low when the SPI is in Master mode, this will also set the SPIF flag. SPIF is cleared by hardware when executing the corresponding interrupt handling vector. Alternatively, the SPIF bit is cleared by first reading the SPI Status Register with SPIF set, then accessing the SPI Data Register (SPDR).
По окончанию приёма (и передачи, раз они идут одновременно) этот бит будет поднят в 1. Сбросится в ноль аппаратно 1) при прерывании или 2) чтении SPSR, а затем SPDR.
Go to the top of the page
 
+Quote Post
Metallist64
сообщение Oct 15 2008, 08:14
Сообщение #4


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

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



Большое спасибо!
Смутило отсутствие "по окончании приема SPIF уст. в 1." :-), хотя конечно напрашивалось само собой.
Еще один небольшой вопрос к Палычу. Немного не ясна фраза:

"Если Slave - не положил ничего в регистр для передачи - попавший в регистр сдвига байт от мастера при предыдущем приёме - уйдёт от Slave мастеру."
Нельзя ли немного перефразировать? Что будет если Slave ничего не отправит?То что получит master?
И если slave не успел так сказать "до конца" положить байт в регистр, то это равносильно, что он ничего не положил?

Сообщение отредактировал Metallist64 - Oct 15 2008, 08:41
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
|- - Stanislav_S   Цитата(Metallist64 @ Oct 15 2008, 13:14) ...   Oct 15 2008, 08:56
|- - Палыч   Цитата(Metallist64 @ Oct 15 2008, 11:14) ...   Oct 15 2008, 09:05
- - Metallist64   Всем участникам ОГРОМНОЕ спасибо! Но прошу доб...   Oct 15 2008, 10:21
|- - Палыч   Цитата(Metallist64 @ Oct 15 2008, 13:21) ...   Oct 15 2008, 12:21
|- - 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 Текстовая версия Сейчас: 26th June 2025 - 03:58
Рейтинг@Mail.ru


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