I am interfacing an arduino with a sure electronics 6432 led array. This is basically a red / green 64 by 32 led array board.
The board is broken into 64 x 16 led arrays and divided by color then serially controlled by a multiplexer running into shift registers.
So I am bit banging out the serial data to control the 4 panes. upper / lower and red / green respectively.
I have forsaken the arduino digital write functions in favor of hardware level pin toggling... but I still have speed issues with the refresh rate on the led array.
I am planning a total rewrite of the pixel buffer. I am curious what you knowledgeable folks might recommend for storing the pixel buffer before pushing it out to the LED array. And ideas for ensuring that the refresh rate is maxed out on the led array.
I built a one color LED array of 16 x 16 LED's back in the day, with drivers, latches, and serial shift registers. I used a computer running some GUI type software that let me create a mirror image of my display on the screen, which allowed me to toggle on and off LED's, save and load countless frames of data to a File, and best of all... animate it!
Initially I did everything wrong in C programming, and the data was slow as ever.
Then I used pointers to access multi-array integers and everything got really fast.
Are you still programming in C or are you trying to write it all in assembler?
If you are using C, lets see your code so we can try to help. If you are using assembler, I would think you should have no problem maxing out the refresh rate. Make sure you store all of your pixel data in RAM, before you try sending it to the display.
I'm pretty sure bitwise operators within C will translate to faster assembler code, for trying to shift out data.
The only thing you may have trouble with is just refreshing your RAM with the next set of pixel data (the next Frame, if you are trying full frame animation vs. individual pixel manipulation).
One thing you could do is implement a double buffer, and send out the first one using a background interrupt routine, while you are loading the next frame into the second buffer, and set off a ready flag for the interrupt to push out the second frame. You might need a sub-counter or second interrupt to coordinate the refresh rate, or period between updating the frames.