“Recently the internet noticed the Raspberry Pi could drive LCD panels using DPI. This allows very inexpensive displays to be used with basically no additional hardware. In this post we dive into the hardware required, the software configuration, how to read screen datasheets, and basic troubleshooting.
A quick word of warning, this is an advanced project. The rewards are significant but it’s difficult to get right.
There are no specific prerequisite skills necessary, but a reasonable understanding of Linux and digital signals is extremely helpful.
DPI is awesome
The main reason is because it’s wonderfully stupid.
DPI stands for Display Parallel Interface (or possibly Display Pixel Interface depending on who you ask). It allows you to use very cheap displays by driving them manually. The Raspberry Pi supports this but it may not be right for every project.
Very fast, easily driving our display at 60hz.
No complicated interface hardware.
Pixel perfect output. Digital, not analog.
Easy to understand protocol.
No bulky connectors.
Eats a lot of GPIO pins (All of them at true color, but more on this later.)
Not widely adopted on the Raspberry Pi, making online help hard to find.
Ribbon cables are easy to break if you’re not careful.
Short range. If you want your screen 10 meters from the Pi use HDMI.
There will be maths, this isn’t plug-n-play.
Almost zero official documentation.
Bill of materials
40-pin TFT Friend
5.0″ 40-pin 800×480 TFT Display without Touchscreen
Premium Female/Female Jumper Wires – 40 x 6″ (Optional, but great for prototyping.)
Total cost at time of writing is less than $50, putting this into impulse buy/weekend project territory. You can also use the 7-inch screen Adafruit sells or any 40pin DPI screen, but some of the numbers later are probably not going to jive with it. You will have to find your own way there. Similarly, I’m not using touch screens because I’ve never seen a touch interface that wasn’t terrible, and it lowers the cost a bit. If you want to add touch you’re going to need a touch controller, but that’s another blog post.”