I'm using a
Genuino MKR1000 and I want to use the
SPI interface, which I've seen that there is no
Slave Select (SS)/Chip Select(CS) pin usage.
How can I use the
SPI interface with multiple slaves then?
Arduino Stack Exchange is a question and answer site for developers of open-source hardware and software that is compatible with Arduino. It only takes a minute to sign up.Sign up to join this community
The Arduino doesn't care what pin you use for SS since you just use
digitalWrite() on it anyway. You use any pin you like for one slave, so you can use any other pin you like for another slave.
The ATMega-based boards need pin 10 to be set as an output for SPI to function, but you don't then have to use that for the actual slave select. The only time it becomes a real slave-select pin is when using the Arduino itself as a slave.
If the number of slaves is large, consider using a multiplexed arrangement for select lines. As an example, the 16-pin 74LS138 Decoder/Demultiplexer pulls one of eight lines low depending on the state of its three address lines, while the 24-pin 74LS154 pulls one of sixteen lines low depending on the state of its four address lines. Both of these chips have two or three enable lines, allowing use of two to four of them together to multiply the number of output lines by two to four via use of one or two more address lines.