I want to drive numerous chips (L9823, TLC5925, ADG1414, MCP23S08) from an Arduino Micro as well as read input from analog pins connected to momentary buttons, toggles, potentiometers and such. The chips and input controls will be on various boards connected to the Arduino using ribbon cables.
The current idea is to have two sets of 8 pin FFC connectors with the following pins:
FFC digital "bus" conductors: -- SCLK VL SDI RST SDO LE3 LE2 LE1
The clock, VL (5V), SDI and SDO will be shared by both connectors but I still need 6 latches (which can also be commandeered for an interrupt or analog input) and 2 reset pins. This will allow me to run up to 3 types of chips per connector (minus latches used for something else).
I will also have a third 8-conductor FFC connector for 7 analog inputs (the eighth conductor is 5V analog ref).
So my question is, does anyone see any holes in this strategy? I don't think I'm going to try to even breadboard something like this. PCB fab is so easy now (and the first run is always wrong anyway) so I'm just going to make the boards and go from there.
So I just need to settle on what pins to use. Here is a diagram of the Arduino Micro:
So the connectors could use pins:
Connector 1 - Digital I/O: -- SCLK SCK VL 5V SDI MOSI RST 11 SDO MISO LE3 A8 LE2 A7 LE1 SS Connector 2 - Digital I/O: -- SCLK SCK VL 5V SDI MOSI RST 13 SDO MISO LE3 A9 LE2 7 (Arduino INT) LE1 5 Connector 3 - Analog Inputs: 5V A0 A1 A2 A3 A4 A5 A6
A10 and A11 are reserved for other purposes as well.
Does this look ok?
I have updated the text of this question to consider many of the great comments. The changes include:
- Share MISO and MOSI between connectors. Not sure why I thought I needed to use separate ports for the different connectors. SLCK, MISO and MOSI should indeed be shared by both connectors.
- Moved 5V to be in between SCK and MISO and moved RST to be in between MISO and MOSI. The idea is that the low impedance of these lines will shield from capacitive crosstalk described by Majenko. The connectors are 1mm pitch which isn't terribly small so hopefully this will not be an issue. It does make routing a little harder since the data pins tend to be next to each other but the same bus is going to connect to multiple boards in a daisy chain fashion so capacitive crosstalk could definitely be an issue. Fortuntely things don't have to run really fast since everything is ultimately for interfacing with humans who are relatively slow.