Go Down

Topic: SPI: Shields vs. breakout boards (Read 160 times) previous topic - next topic


Let me get this straight (please correct me if I am wrong):

In Arduino Due, the SPI communication can only be handled by the SPI header pins in the middle of the board (SCK, MISO, MOSI). In addition, a CS pin is needed which should be one of the pins (4, 10, 52) to enable the Extended SPI. Now, if I am using a shield that is compatible with other Arduinos as well, the pins (11, 12, 13) cannot be used for other purposes since they are reserved for the SPI by the shield (even though not used for that in Due).

However, a breakout board with SPI communication can be connected to the Due SPI header pins (and to the CS pin), and the pins (11, 12, 13) remain free to be used e.g. as PWM outputs?

So if I connect e.g. the Arduino Wifi shield or Adafruit CC3000 shield to Due, the pins (11, 12, 13) are reserved, but if I use the Adafruit CC3000 breakout board, the pins (11, 12, 13) are still available?


You need to use a multimeter to find out if the shield shorted the SPI pins to the digital pins 11-13. Usually the answer is not likely as only Arduino Uno have this behavior, Mega2560 have SPI pins at digital pins 51-53 and Leonardo, like Due, have SPI pins only at the SPI/ICSP header. Shield designers want their produces be as universal as possible, so they will usually keep ping 11-13 clear, even it is used as SPI pins on Uno.


Thanks. According to the Arduino Uno schematic the SPI/ICSP header pins are shorted to pins 11-13 in Uno (just found this out), so either of them can be used in shields with Uno.

It really seems that the SPI connections vary from shield to shield. For example, the Arduino Wifi shield uses only the SPI/ICSP pins, whereas in the Adafruit CC3000 SPI is always fixed to pins 11-13 with an optional connection to SPI/ICSP pins.

Go Up