A few years ago, [Frans-Willem] bought a few RGB LED panels. Ten 32×16 panels is a lot of LEDs, and to drive all of these panels requires some sufficiently powerful hardware. He tried working with an FPGA development board, but that didn’t have enough memory for 24-bit color. The microcontroller du jour – a TI Stellaris – couldn’t get more than 16 bits of color without flickering. With a bunch of LEDs but no way to drive them, [Frans-Willem] put the panels in a box somewhere, waiting for the day they could be used to their fullest capacity.
This day came when [Frans-Willem] was introduced to the STM32 series of chips with the F1 Discovery board. While looking for some electronic playthings to use with this board, he stumbled upon the LED panels and gave them one more try. The results are spectacular, with 33 bits of color, with animations streamed over a router over WiFi.
The panels in question are HUB75 LED panels. In the 32×8 panels, there are six data pins – two each for each color – four row select pins, and three control pins. The row select pins select which row of pixels is active at any one time. Cycle through them fast enough, and it will seem like they’re all on at once. The control pins work pretty much like the control pins of a shift register, with the data pins filling in the obvious role.
The code that actually drives the LEDs all happens on an STM32F4 with the help of DMA and FSMC, or the Flexible Static Memory Controller found on the chip. This peripheral takes care of the control lines found in memory, so when you toggle the write strobe the chip will dump whatever is on the data lines to a specific address in memory. It’s a great way to take care of generating a clock signal.
For sending pixels to this display driver, [Frans-Willem] is using the ever-popular TP-Link WR703N. He had originally planned to send all the pixel data over the USB port, but there was too much overhead, a USB 1.1 isn’t fast enough. That was fixed by using the UART on the router with a new driver and a recompiled version of OpenWRT.
All the software to replicate this project is available on Github, and there’s a great video showing what the completed project can do. You can check that out below.
At some point it just becomes a poor resolution OLED monitor.
I guess this is designed for ads on those soccer game fences.
Except it’s not OLED, but conventional LED. LEDs are bit brighter and last a bit longer.
yeah the leds are a lot brighter, our panels are 12,000 NITS they are blinding so you can do some really nice HDR stuff with them
This does show how complicated it was for the companies to design OLED TV’s, that’s a shitload of LED to drive.
But they have the advantage that they can put the driving electronics next to each led, in a way not very different from how TFTs work.
Wow 33 bit color…
I used also a Cortex… but from TI… I mangen it with DMA and the parallel Interface… The 32×32 Panel emulate WS2801 LED strings and could be also daisy chaind.
Here is the project and the sourcecode availible [German]:
http://sebastianfoerster86.wordpress.com
This is really useful. I have a few of these panels as well. I now drive them with a ZedBoard, but this is much smaller.
Wow, great work. I’ll be blocking our some time to dig into the code. Lots to learn from this one.
I’d like to see the end product when he gets the other nine panels running with this…his own “Jumbotron”
I think these are 3×3 panels in his display.
Hmm those panels look very similar to the ones we have, and they use 16 bit constant current drivers.
ws2811 on stm32F4 without FSMC
https://github.com/ain101/SedecimWS2811
Need to look into this FSMC thing.
Am I the only one borderline livid there are STILL no monitors with this kind of setup for the backlight?
I’d love to see how far this could push a nice 120Hz+ TN panel in terms of colour space.
i have one.
basically i have one of these http://www.benq.com/product/digitalsignage/TL320C/design/ but a newer model thats just the frame of the lcd panel and display, no backlight then behind it similar LED panels as a backlight
Why router is used? Why cant’t we send data from Glediator via USB/UART converter to STM32F4?
Can I use it with 64×64 ledmatrix panel?
Would it work to drive a hub75 LED matrix with an USB to parallel FIFO chip, such as FT245? This one is for USB full speed and that might be a bit slow, perhaps there are similar chips for USB high speed too?