Well, with the DMA solution you're DMA'ing pulse widths. So this is one pulse width per bit being sent to the LED. With DMA you essentially need to take your 24-bit value for each LED and expand it into a 24-byte array. I'm pretty sure that the extra 42 bytes is for the 50 usec reset pulse.fma wrote:Is it a DMA limitation, or only on the current implementation?
You should be able to setup a circular buffer with the DMA, perhaps having 2 x 24 byte buffers (so 2 buffers of 30 usec each) or some multiple thereof, and you fill one buffer, and while the DMA is sending it to the timer, you populate the next buffer. This is essentially how audio playback works.