Red Echo

October 31, 2012

LED board driver progress

I’ve spent the last couple of evenings working on the chandelier project driver board firmware. I rigged up some very simple demo software a couple of weeks ago to make sure the hardware worked, but it was only driving 3 bits per pixel. I haven’t introduced the 24-bit color driver yet, but I’ve gotten the scanline blit time down to 1 microsecond, which means I can theoretically do 8-bit linear PWM across all 192 LEDs at about 244 Hz. Nice. But I plan to take this further: given the STM32F103RBT6 controller’s 72 MHz clock rate, I should be able to do a full scanline update in 140 nanoseconds, which correlates to 12-bit linear PWM at 120 Hz. I’ll then apply gamma correction, yielding a perceptually linear color space, for a working resolution of 6 bits per channel, or 18 bits per pixel. That’s better than most LCD projectors, which can only do 15 bits.

It’s still not quite as good as the Groovik’s Cube drivers, which did 8-bit gamma-corrected PWM, for a perceptually linear 24-bit colorspace – but it doesn’t need to be that good, and to be quite honest neither did the cube drivers. I pushed them as hard as they could go out of personal pride; I was at a real low point in my career back then, and pushing that code as close to the limits of the hardware as it could possibly go made me feel like I still had skills that were worth something. But really, it could have run 15-bit color and I doubt I could have told the difference.

In any case, each cube driver could only manage five lights at a time; the whole cube needed eleven of them. Just one of these chandelier drivers can wrangle 192 lights at a time – so while it may only be doing 18-bit color, each one of these chandelier controllers could theoretically drive three whole cubes at once, with capacity to spare. What I’m losing in per-pixel resolution I’m more than making up in overall display resolution. It’s going to look amazing.