I've pretty much got my R500 LCD panel working how I want it at this stage, so I probably won't look at any more panels for now. I've definitely learned a lot about how LCD panels work though!
Continuing on from my last post, I managed to solve all the issues I had:
- Messed up colours
- RIoTBoard & EDID
- Configuring the RIoTBoard's output resolution
- Backlight Driver
Firstly, the messed up colours was a pretty easy fix - I had two of the LVDS channels mixed up because the wire colours were very faint and hard to distinguish. After swapping them the display worked beautifully!
Secondly I wanted to know whether the RIoTBoard could make use of the display's built-in EDID chip, which contains information to tell the host computer exactly how to drive it at the correct resolution. Unfortunately it seems my build doesn't implement EDID (at least not within U-Boot), so I was forced to hard-code the resolution into U-Boot env. This isn't really an issue since I intend to only use this display with the board. Interestingly I can indeed read the EDID info within user-space once I'm in linux.
Finally I wanted to implement the backlight driver. This took a lot more effort than I was expecting, as the circuit turned out to be very unstable, and my poor selection in components caused excessive overheating. It took me a bit of trial and error to find an appropriate MOSFET, diode, and inductor that would work at the high frequencies that it was operating at (~500kHz). I did manage to get it working in the end, with an unholy amount of bodge-wires:
I might have a look at some more LCD panels and driving methods in the future, but it looks like I'll be focusing on the Hackaday prize for now!
If you'd like more information about anything here, I'm happy to share.