Today’s microcontrollers are high-speed powerhouses that can do absolutely wonderous things. By virtue of fast clock speeds and special DMA hardware, it’s often possible to achieve great feats that seem almost ridiculous at face value. [Bitluni] decided to demonstrate just that, running six (6!) VGA displays from a single ESP32. (Video, embedded below.)
The ESP32 clocks in at 240 MHz at top speed. It also features some nifty DMA hardware along with GPIO mapping that makes it perfectly suited to this task. [Bitluni] was thus able to set it up to drive up to six VGA displays at one bit per pixel monochrome output. Alternatively, ganging up six output pins into two sets of three, he was able to run two VGA displays with 3-bit color. The resolution is an impressive 640 x 400 in both cases, and [Bitluni] demonstrated the hardware by driving six projectors with a starfield display.
Is it useful? Perhaps not yet, but there’s certainly a few applications we could think of. Share your own ideas in the comments. In the meantime, check out [Bitluni]’s other great works for the ESP32.
[Thanks to anacierdem for the tip!]
“features some nifty DMA hardware along with GPIO mapping”
What makes that DMA nifty? GPIO mapping?
So many questions. Thanks Lewin for the technical bread crumbs.
i need GPU VGA from 6 esp
I don’t get what the appeal is, using something that isn’t good for the job. FPGAs or dedicated boards are the general go tos for driving VGA or hdmi displays, so why would you use a microcontroller that at max colour depth only has 3 bit colour when with and FPGA or similar you could have full colour depth or drive more than 6 displays at 1 bit monochrome, theoretically with an FPGA you may be able to drive as many VGA displays as you have gpio pins as long as you have enough resources. Some FPGAs out there would be able to drive 6 VGA displays at full colour depth.
Of course it is impressive that someone did this but at the same time what was the point, why not use something that’s better for the job.
Then it wouldn’t be a fun hack.
Never underestimate the value of “because I can”
If you must have a practical value, here’s one example: it gives you a general idea about this controller capabilities. You can compare it with similar projects done on other controllers and decide if you should pick one or another. Another: the code can be picked apart and reused for anything that might require pumping some data. It’s not always just video.
As for picking things that are right for the job — reality is often not so by the books. You often pick what you have available and do what is required, or someone else does it.