Building a 24-bit arcade CRT display adapter from scratch
7 days ago
- #STM32
- #CRT
- #VGA
- Frank and the author acquired an arcade machine (RCade) with a CRT display, initially driven by a Raspberry Pi.
- The CRT required a custom solution due to its non-standard resolution (336x262) and the need for better color depth than the Pi's 18-bit.
- The author decided to build a USB-connected CRT display adapter to interface with a more powerful computer.
- VGA protocol basics were explained, detailing how it syncs with CRT displays using R, G, B, HSYNC, and VSYNC signals.
- First attempt used an RP2040 microcontroller with PIO for precise VGA signal generation, achieving a proof-of-concept but limited by USB FS speed (11 Mbps).
- Discovered the GUD kernel module, a USB display adapter protocol, and adapted it for the project, improving compatibility and efficiency.
- Switched to an STM32H723 for USB HS support but faced issues requiring an external PHY, leading to a redesign with STM32H750IBT.
- Final board design included USB HS, VGA output, 8-bit DACs, and HyperRAM, with meticulous routing for signal integrity.
- Successfully demonstrated the adapter in the RCade, achieving 24-bit color and 60 Hz refresh rate, a significant improvement.
- Future improvements include audio support, better buffering, and protocol documentation.