Stacking two shields with different communication protocols


I wanted to stack Adafruit's Data Logging Shield and the RFID/NFC Shield and was wondering if this would be possible since the Data Logging Shield uses SPI while the RFID/NFC Shield uses I2C.

I'm very new to this topic so if you could explain the difference between SPI and I2C, that would be really helpful! I've been very confused about the difference when searching online.

Thanks for your help!

SPI uses D10, D11, D12, D13
I2C uses A4 and A5

no overlap

The pins not specifically used by a shield should act as pass through to the next one up. This means the stack can be in any order. An exception may occur where a shield uses the 6-pin ICSP cluster without corresponding males. I think this only means it may have to go on the bottom of the stack, there may be only one of them, but it is pretty hard for this to be a problem.

I doubt that the Ada shield uses SPI exclusively, it may simply need it for an on-board SD card, which you may or may not require, and can use all the other pins as you may require.

Adafruit datalogger doesn’t have to use the SPI header if you are using an UNO. It can use pins 10-13.

They do make, though the datalogger does not come with them, 3x2 passthrough connectors that couldextend the SPI header or you can make your own by cutting a 8x1 into a 3x2.

Thanks for all your replies!

Another thing I realized is that the data logging shield has a real time clock that uses I2C (analog pin 4 and 5). As a result, should I use the 3x2 ICSP cluster on the data logging shield (rev B) and then change the protocol on the RFID reader from I2C to SPI so that none of the pins overlap?

The SD card uses SPI and the RTC uses I2C. There is no "changing it" unless you find a different RTC that uses SPI.

Furthermore, there is no overlap between SPI and I2C in terms of pins usage.