Hello all,
I could use some help from somebody with good SPI experience. I am building a rather large LED matrix display comprised of many MAX7219 matrix drivers daisy chained in a row. These drivers are controlled from my Arduino Uno using SPI and the SPI.h library.
The MAX7219 chips have a 16bit shift register, and all of them are connected to each other with less than 2 inches of SPI wires. When I turn everything on and send it data, the SPI seems to stop working after a certain distance/# of MAX7219s. I have a feeling the problem is due to 1 of two things:
- Timing/synchronization between CLK and DATA becomes degraded as the DATA is shifted through more and more MAX7219's.
- The voltage level of CLK or SS drops too much over the length of conductor (wire + pcb traces of all connected MAX7219s).
But those two scenarios are just my best guess. I'm a mechanical engineer, not an EE so I'm just speculating Anyways, I have 60 MAX7219's daisy chained together, and I am only able to control the first 8-12 of MAX7219's in the daisy chain reliably.
Anybody have any insight on how many MAX7219's can be daisy chained, how far SPI can be successfully achieved, or if a logic level shifter configured as a logic booster would help?
Also, just to note, I have tried increasing the SPI clock divider (and thus decreasing the CLK frequency) to see if that would help the synchronization issues. It seems to have a minor positive effect, but does not get the whole chain working.
Thanks a bunch guys, looking forward to your suggestions.