Страница 1 из 1
Прием данных Мастером со слева SPI-avr
Добавлено: Ср июн 05, 2013 15:31:17
cas2010
Добрый день всем!
По ссыке очень хорошо разжевано как передать инфу от мастера к слеву,
http://avr-start.ru/?p=647#comment-928
А как прочитать инфу мастером? от слейва?
Re: Прием данных Мастером со слева SPI-avr
Добавлено: Ср июн 05, 2013 23:00:57
YS
Зависит от протокола. Например, при чтении SD-карточки мастер засылает команду чтения, а потом генерирует тактирование, непрерывно посылая 0xFF, и в процессе этого принимает фактические данные.
В SPI ведь посылка и прием идут одновременно.
Re: Прием данных Мастером со слева SPI-avr
Добавлено: Ср июн 05, 2013 23:52:56
SmarTrunk
Да, мастер выдает сигнал CS, генерирует CLK, передает 8 бит команды по MOSI (очевидно, должна быть команда считывания данных) и, после этого, принимает данные от слейва по MISO.
Другой вопрос, как мастер узнает, что слейв хочет передать ему данные? Думаю, слейв может делать запрос мастеру, меняя уровень на некой дополнительной линии.
Re: Прием данных Мастером со слева SPI-avr
Добавлено: Ср июн 05, 2013 23:58:14
YS
как мастер узнает, что слейв хочет передать ему данные?
Опять же, зависит от используемого протокола.
Есть варианты:
1. Отдельная линия прерывания. Так обычно делают в радиомодулях, например, для оповещения о принятом пакете.
2. Проверка бита в соответствующем регистре состояния ведомого устройства.
3. Просто периодическое чтение, например, если это термометр.
Re: Прием данных Мастером со слева SPI-avr
Добавлено: Сб фев 01, 2014 07:24:58
Denkot
у меня вопрос по этой теме, конкретно - по меге48
у нее, если я правильно понял, в SPI для данных предназначен единственный регистр SPDR
задача: нужно отправить 1 байт запроса и принять 1 байт ответа
чтобы что-то принять, нужно тактировать SCK, а тактирование идет только при передаче.
но регистр данных - один!
правильно ли я понял, что надо положить в SDPR 0xFF, передать это, а потом забрать из того же SPDR принятый байт?
Re: Прием данных Мастером со слева SPI-avr
Добавлено: Сб фев 01, 2014 14:34:57
YS
правильно ли я понял, что надо положить в SDPR 0xFF, передать это, а потом забрать из того же SPDR принятый байт?
Да.
Единственно, бывают экзотические случаи, когда нужно передавать какой-то конкретный байт в процессе приема. Но обычно подходит 0xFF.