Electronic – Multiple micro controllers to control LED matrix

ledmicrocontrollerpicaxe

I am planning to use 5 40 pin Picaxe micro-controllers to control a 70×70 LED board matrix. My plan is to use 4 of the micro-controllers to control the LEDs and the 5th to tell the other micro-controllers which lights to turn on and off. first of all is this the best plan for the system and second of all how would I communicate between the main micro-controller and the other ones.

Also is anyone has a better idea to control a 70×70 LED board fire away 🙂

Best Answer

You can easily do this in a small FPGA, provided that you use a shift registers like a 74xx595 to reduce the number of FPGA I/O Pins. Even the smallest Xilinx Spartan-3 could do it. Now, what you want to do with a 70x70 LED display might place additional demands on the FPGA size.

If you wanted to not use an external shift register(s), then you need a lot of pins on the FPGA. A minimum of 140 I/O pins, but possibly 210 or more. That still is not terrible, but will push you into a BGA which you might not want to deal with at this point.

With external shift registers, you might be able to use a single MCU. The trick here is that you want to connect the shift registers to some sort of SPI serial port, and then use DMA to feed the SPI interface. You don't want to bit-bang the serial interface for this. A typical 8-Bit Micro is probably not going to be enough for this. There are lots of ARM Cortex M0, M3, and M4's that are super cheap and would be a good option.

You could also use external latches (74xx374) instead of shift registers with an MCU. You could probably bit-bang an interface to latches, but using shift registers and SPI with DMA would be superior.

I have done a lot of multi-CPU systems and I can safely say that you do NOT want to do this if you can avoid it. There are a lot of synchronization issues that creep up when using several CPU's, and if you don't know what to pay attention to then you will likely just end up with a sub-par result and a lot of frustration.