Здравствуйте,
правильно ли я понимаю, что при использовании SPI (например для SD карты),
испоьзовании регистров сдвига для ввода, и регистров для вывода, я могу использовать один тактовый пин, например 13 (Uno/Nano) для работы со всеми устройствами?
Пример:
SD card: SCK (13) + MISO(12)+MOSI(11)+CS (10)
регистр вывода SCK (13)+LATCH (9)+DATA(8)
регистр ввода SCK(13) + LATCH(7)+DATA(6)
или для карты, и обоих регистров надо использовать свой тактовый пин?
Откройте библиотеку SPI для Уно и посмотрите, как там инициируется тактовый пин. Это даст вам более точный ответ. Хотя, поскольку в АВР для SCK не требуется каких-то особых режимов пина, скорее всего все будет работать.
Еще раз спасибо, но что то никак не найду, где это
пример в среде посмотретьь могу, а вот, где лежат эти SPI-библиотеки ума не приложу. Дополнительные установленные библиотеки есть, а именно SPI - не вижу… :((
я имел в виду глянуть, в каком состоянии остается SCK после окончания работы СПИ. И после использования сдвигового регистра не забывать переводить SCK в то состояние, в каком он был до.
там в SPI.cpp 5К текста, но упоминание про SCK только при обьявлении режима
pinMode(SCK,OUTPUT);
не думаю, что есть еще какие установки.
… посмтреть в каком уровне он остаётся после окончания - не знаю как. Не нашел.
… вот с просторов Инета:
Управление сдвиговым регистром 74HC595 можно реализовать как программно, так и аппаратно, используя SPI модуль микроконтроллера AVR. Последнее возможно благодаря тому, что временная диаграмма сигналов управления 74HC595 совпадает с диаграммой формируемой модулем SPI в нулевом режиме (SPI mode 0). Что собственно неудивительно, поскольку SPI модуль содержит сдвиговый регистр в своем составе.
…
судя по этому, режим работы совпдает для SPI и 74HC595 (регистр сдвига вывод) … ну и в конце становится LOW … так?
Вопрос в том, не будет ли мешать друг другу. Схема как таковая не принципиальна.
Я думаю, вопрос решён, спасибо. Идея в том, что бы сэкономить пины
при подключении SD карты и регистра вывода
А каким образом?
Надо только учитывать, что если что-то передаёшь - значит что-то и принимаешь, даже если это какой-то мусор, или нули. Можно регистр отключать на время, если не нужен
Ответить на Ваш вопрос невозможно. В общем случае, для сферической “например карты” и сферических сдвиговых регистров, скорее нет, чем да, т.к. это может потребовать очень нетривиального программирования. Если бы Вы назвали конкретные устройства, можно было бы и ответить.
А вообще, SPI он не то, что бы “и в Африке” – он бывать разный. Если все Ваши устройства работают одной полярности тактового сигнала (SPI_MODE0-1 или SPI_MODE2-3), то пожалуйста. А вот если у устройств полярность разная, то … можно, но это будет серьёзным трюкачеством.