Вопросы по SPI, 1 Master > 1 Slave

Nya
Offline
Зарегистрирован: 05.02.2020

Хочу подключить Arduino Nano как мастер к единственному ведомому устройству, и только для MOSI. Надо сэкономить два вывода на ардуино.

1) Нужно ли подключать вывод D10 "SS" (как я понял это Slave Select) от ардуино к единственному устройству? Или можно постоянно повесить вывод /CS в устройстве на землю, и ардуино своими датами-клоками будет все нормально передавать? А "SS" ардуины использовать как обычный цифровой пин (см. ниже).

2) Вывод D12 "MISO" мне не нужен, и если сделать pinMode(12, INPUT) или pinMode(12, OUTPUT), он будет вести себя как обычный цифровой пин независимо от работы шины SPI?

rkit
Offline
Зарегистрирован: 23.11.2016

SPI в атмеге работает именно как SPI, а не какой-то обрезнный кусок экономии. По двум проводам есть i2c. А если не полениться написать софтварно, то можно и одним проводом обойтись.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Nya пишет:

1) Нужно ли подключать вывод D10 "SS" (как я понял это Slave Select) от ардуино к единственному устройству? Или можно постоянно повесить вывод /CS в устройстве на землю,

Зависит от того, что там за устройство такое. некоторым достаточно, а некоторым для начала сеанса нужен именно falling фронт на SS

Nya пишет:

2) Вывод D12 "MISO" мне не нужен, и если сделать pinMode(12, INPUT) или pinMode(12, OUTPUT), он будет вести себя как обычный цифровой пин независимо от работы шины SPI?

При инициализации SPI он сам настроится в INPUT 

Nya
Offline
Зарегистрирован: 05.02.2020

В документации ардуино написано что D10 SS должен быть установлен как OUTPUT, иначе арудино будет слейвом. А в примерах скетчей SS вешают на любой пин, а D10 SS не используют и в OUTPUT не ставят. Может эти скетчи не для Nano, и непонятно что делать с D10.

Цитата:
При инициализации SPI он сам настроится в INPUT
Дак его на практике можно digitalRead? Или сделать PULLUP/OUTPUT?

Green
Offline
Зарегистрирован: 01.10.2015

Всё верно написано, противоречий нет.
Для мастера SS должен быть выходом, а чем вы будете трогать SS ведомого - это ваше дело.
SS мастера вы можете использовать для своих целей, но только как выход. 
Да, MISO можно читать через digitalRead(12).

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Nya пишет:

В документации ардуино написано что D10 SS должен быть установлен как OUTPUT, иначе арудино будет слейвом. 

Не так однозначно.

Он может быть и INPUT, но тогда должен всего оставаться HIGH. Дословно сказано вот так:

When the SPI is configured as a Master (MSTR in SPCR is set), the user can determine the direction of the SS pin.

If SS is configured as an output, the pin is a general output pin which does not affect the SPI system. Typically, the pin will be driving the SS pin of the SPI Slave.

If SS is configured as an input, it must be held high to ensure Master SPI operation. If the SS pin is driven low by peripheral circuitry when the SPI is configured as a Master with the SS pin defined as an input, the SPI system interprets this as another master selecting the SPI as a slave and starting to send data to it.