SPI reliability over ~120 cm total (100 cm PCB trace + 2 board-to-board connectors + 20 cm cable) at 100 kHz — real-world experience?
Hi all,
I'm designing the control electronics for an automatic egg-candling machine (150 positions). An STM32F411 drives everything over a single shared SPI bus:
- A 74HC595 daisy-chain (shift registers → ULN2803A → solenoid valves)
- MCP3208 ADCs (reading LDR light sensors) on the same SPI bus, CS-selected
The process is strictly sequential (read all sensors first, then actuate valves — never at the same time), so valve-switching noise never coincides with an ADC read, and SPI speed is not time-critical. That's why I want to keep the clock slow.
Physical signal path (my concern):
- ~100 cm total PCB trace
- 2 board-to-board connectors (PCB-to-PCB)
- then a 20 cm cable that enters the target IC (74HC595 / MCP3208)
- Planned SPI clock: 100 kHz, SPI mode 0, 3.3 V logic
Mitigations planned: series termination on SCLK/MOSI/LATCH at the source, ground interleaving in the cable, star grounding (valve PGND separated from SPI/logic GND), local 3.3 V regulation at the far end.
My own bench test: I ran an SPI loopback (MOSI→MISO) over a 2 m unshielded cable hanging in free air, no termination, sweeping the clock. Result: zero errors from 100 kHz up to 8 MHz; errors only appeared from 12 MHz upward, and those look like the round-trip propagation delay of the loopback (MISO arriving late vs. the sample edge), not signal degradation. So the fundamental margin looks large.
Questions:
- Has anyone run SPI reliably over a similar path (~120 cm total: PCB + connectors + cable) at low clock (100 kHz–1 MHz)? "Just works" or horror stories?
- With a real 74HC595 chain + MCP3208 as the load (not a loopback), any gotchas over this distance — SCLK integrity, edge rates, reflections at the connectors?
- Is series termination + slow clock enough, or would you add a buffer/re-driver (e.g. a 74HC buffer at the cable entry) for SCLK/LATCH?
- Any recommendation on cable type / grounding scheme?
