Via Reasonably Correct.
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.Disclaimer and thanks
I am not an electrical engineer. This post was my first adventure into display technology. I managed to cobble it together from the wonderful posts on the Raspberry Pi forum. Specifically this post: http://www.raspberrypi.org/forums/viewtopic.php?f=100&t=86658. It’s great reading on it’s own, and most of the information here was derived from it.
A special thanks to forum users “Fat D”, “ceteras”, and most of all “Gert van Loo” for this project: https://github.com/fenlogic/vga666. With out it this wouldn’t be possible.
Additional thanks is due to Shannon Geis for editing this post, and Lady Ada at Adafruit Industries who posted the video that brought this to my attention.
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.
Pros:
- 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.
- Very inexpensive.
Cons:
- 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.
Featured Adafruit Products!
40-pin TFT Friend – FPC Breakout with LED Backlight Driver: This breakout board is something we designed in-house to help us work with ‘dot-clock’ 40-pin TFT displays that require the RGB pixel data to be clocked in continuously. These displays have 40-pin Flex PCB (FPC) cables and often require a boost converter for the backlight LED, which makes them annoying to breadboard. To make them breadboardable, we stuck a 40-pin FPC and a FAN5333-based backlight driver with adjustable current onto a labeled breakout board. Now you can poke and probe each pin! Read more.
5.0″ 40-pin 800×480 TFT Display without Touchscreen: This 5.0″ TFT screen has lots of pixels, 800×480 to be exact, and an LED backlight. Its great for when you need a lot of space for graphics. These screens are commonly seen in consumer electronics, such as miniature TV’s, GPS’s, handheld games car displays, etc. A 40-pin connector has 8 red, 8 green, and 8 blue parallel pins, for 24 bit color capability. Read more.
Each Friday is PiDay here at Adafruit! Be sure to check out our posts, tutorials and new Raspberry Pi related products. Adafruit has the largest and best selection of Raspberry Pi accessories and all the code & tutorials to get you up and running in no time!