Using SPI to control multiple devices (that support an SPIish interface)
Here’s a quick video of the circuit in action:
The ShiftDriveSPI project demonstrated how hardware SPI can be used to control a system with a 74HC595 interface. The proposed benefit was that SPI allows multiple devices to be controlled with a minimal (+1) extension to the number of pins required.
This project is a test of SPI to control multiple (2) devices that support an “SPI-like” interface.
It’s interesting how far you can push the definition of “SPI-like”. In this case I’m using two devices:
These modules are all connected to the SPI interface of an Arduino, with a seperate latch (SS/slave select) for each. The data to each module actually passes down the same wire (MOSI).
The demo sketch does two things:
- runs a 0-9 counter on the 7-segment LED module (with decimal point enabled for even numbers)
- runs a countdown counter that cycles for each change on the LED module
Credits and References
- 7-segment LED module
- Arduino SPI library
- SPI - wikipedia
- 74HC595 Datasheet
- Sharing Clock and Data for 74HC595 and CD4021B Shift Registers? - electronics.stackexchange
- Driving 595 Shift Registers - good article with AVR implementation details
- Using Serial Peripheral Interface (SPI) Master and Slave with Atmel AVR Microcontroller - well explained code