“I recently bought few Plannar EL640.480-AM series panels. They are monochrome 10.4” 640x480 TFEL panels with an STN LCD interface. It is similar to DPI (sometimes called RGB), the screen is timed with HVSync signals, and needs to be continuously refreshed. But, as a monochrome screen, the pixel is 1bpp, so the data bus transmits multiple pixels at a time. These screens are also dual-scan: there are two “raster beams” at the same time, one refresh from the top of the screen, the other one refreshes from the middle of the screen. They are supposed to be refreshed at 120 Hz.
This creates some interesting challenges: It expects to be driving with an STN LCD controller. However, where can I find one?
- There used to be dedicated graphics controllers such as NM128 or CT65530 that could drive STN LCDs directly. But they have been long obsolete.
- ARM SoCs from the early 2000s typically has an LCD controller that is capable of driving STN LCDs. However many of these SoCs are also being deprecated or obsolete.
- There used to display controller chips that could convert VGA into STN LCD signals. But I don’t know any specific models. I suspect they are also being deprecated.
If not using dedicated hardware (and I am not too interested in buying one anyway), there are several alternative ways to drive it:
- Use a really fast microcontroller with a large SRAM to Bit-Bang the GPIO to generate the video signal.
- Use a CPLD/FPGA to generate the timing
I have used both methods before. The first method:
The second method:
am going to use the microcontroller way this time again. But this time I am going to use the RP2040, which has a very powerful IO engine called PIO. We will see how it would help us with driving the screen and offload the CPU core.
Claimer: The methods described here are provided as-is. Use at your own risk.
I am new to RP2040, this is the first time I use the PIO. So the program provided here is likely not optimal.”