Прием данных Мастером со слева SPI-avr

Все прочитали, вроде даже поняли, взяли паяльник - а нифига не получается? Скорее сюда! Поможем. Чем можем...
Ответить
Первый раз сказал Мяу!
Сообщения: 33
Зарегистрирован: Вт апр 23, 2013 16:46:07

Сообщение cas2010 »

Добрый день всем!
По ссыке очень хорошо разжевано как передать инфу от мастера к слеву, http://avr-start.ru/?p=647#comment-928
А как прочитать инфу мастером? от слейва?
Реклама
YS
Друг Кота
Аватара пользователя
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05

Сообщение YS »

Зависит от протокола. Например, при чтении SD-карточки мастер засылает команду чтения, а потом генерирует тактирование, непрерывно посылая 0xFF, и в процессе этого принимает фактические данные.

В SPI ведь посылка и прием идут одновременно.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Контактная информация:
Реклама
Друг Кота
Сообщения: 6014
Зарегистрирован: Чт ноя 26, 2009 11:16:50
Откуда: Москва

Сообщение SmarTrunk »

Да, мастер выдает сигнал CS, генерирует CLK, передает 8 бит команды по MOSI (очевидно, должна быть команда считывания данных) и, после этого, принимает данные от слейва по MISO.

Другой вопрос, как мастер узнает, что слейв хочет передать ему данные? Думаю, слейв может делать запрос мастеру, меняя уровень на некой дополнительной линии.
YS
Друг Кота
Аватара пользователя
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05

Сообщение YS »

как мастер узнает, что слейв хочет передать ему данные?
Опять же, зависит от используемого протокола.

Есть варианты:

1. Отдельная линия прерывания. Так обычно делают в радиомодулях, например, для оповещения о принятом пакете.

2. Проверка бита в соответствующем регистре состояния ведомого устройства.

3. Просто периодическое чтение, например, если это термометр.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Встал на лапы
Сообщения: 82
Зарегистрирован: Вт дек 14, 2010 16:07:50

Сообщение Denkot »

у меня вопрос по этой теме, конкретно - по меге48
у нее, если я правильно понял, в SPI для данных предназначен единственный регистр SPDR
задача: нужно отправить 1 байт запроса и принять 1 байт ответа
чтобы что-то принять, нужно тактировать SCK, а тактирование идет только при передаче.
но регистр данных - один!
правильно ли я понял, что надо положить в SDPR 0xFF, передать это, а потом забрать из того же SPDR принятый байт?
Реклама
YS
Друг Кота
Аватара пользователя
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05

Сообщение YS »

правильно ли я понял, что надо положить в SDPR 0xFF, передать это, а потом забрать из того же SPDR принятый байт?
Да.

Единственно, бывают экзотические случаи, когда нужно передавать какой-то конкретный байт в процессе приема. Но обычно подходит 0xFF.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Контактная информация:
Реклама
Ответить

Вернуться в «Практика»