Multiplexing huge display with TI 5947

Hi,

I'm sure that this application has been tried numerous times before. But I searched through earlier posts and didn't get the answer I was looking for..

Anyway. I'm going to build a very large display with approximately 300 RGB led on it. I plan on using a matrix with multiple TLC5947s for the columns with the rows controlled by shift-registers with FETs. Having 3 TLC5947s will give me enough for 19 columns of RGB leds. Then I'll need to select 16 rows. I'm not too worried about the schematic, but I'll concerned about the performance.

TLC5947 is controlled over SPI. It's got 24 outputs with 12 bit depth, so you need to write 288 bits into it to refresh it. Then multiply it by 3 to make a full row. So it'll take some time to write to each row & this is repeated 16 times. I've read in forums that SPI is slow so I may need to 'bitbang' the data to the port.

I've also thought about adding 3 more TLC5947 and breaking the display into a top & bottom half. So I'd have 2 smaller displays with 8 rows. This would reduce the power disipation of each TLC5947 in half.

So now to my dilema.. I see a few alternatives:-
-1: 3 x TLC5947 (on SPI) with 16 rows
-2: 6 x TLC5947 (on SPI) with 2 x 8 rows
-3: 3 x TLC5947 (on SPI) + 3 x TLC5947 (on output port) with 2 x 8 rows.

1: is the cheapest! But I'm not sure what performance I can reach. It gives the option of using SPI & then improving speed later by 'bitbanging'
2: I think the performance is the same as 1:,
3: This has the potential to be faster since I can refresh 2 rows simultaneously. But then I HAVE to use bitbanging.

I'd appreciate any advice that people can give. I'm trying to get a stable display with 20 to 30 Hz refresh. Do you think that Arduino can make it?

Thanks in Advance

-Andy

I've read in forums that SPI is slow so I may need to 'bitbang' the data to the port.

I am not sure what you read or who posted it but bit banging is slower than using the built in SPI interface.
Anyway the problem you have is the amount of throughput for multiplexing in effect 900 LEDs. Look at the on / off time ratio, I think your project is a non starter.

Does the TLC5940 library work with this chip? can it with a bit of tinkering?

Hi Mike,

Thanks for the feedback. You're confirming my suspicion that the throughput needed to refresh those 900 leds is huge. I'll make some sample code & hook up the scope to SPI and make some measurements before I go forwards. I came across a comment that SPI can transfer '1 byte in 3 microseconds' which would indicate that I'll need 0.324ms (at least) time to write a row of data. 20 rows at 30 fps is 1.67ms per row, so the timing looks tight.

I'll check into alternative drivers. I think that the 12bit resolution of the TLC5947 is a huge overkill. If I find a solution with lower resolution, then the volume of data will drop.

Another thought is to split the panel into smaller chunks and have separate arduinos to control each one. It sounds fiddly, but it works for Rainbowduino.

Another thought is to split the panel into smaller chunks

Yes that is the way to handle so many LEDs