How to drive DBI LCDs with a Raspberry Pi

What is a DBI LCD?

If you are going to search about TFT LCDs for raspberry pi, chances are you will find a lot of boards featuring small 1.8 – 3.5″ tft lcds and plugs onto RPi’s GPIO header. If you used to use MCS-51 or AVR or things like, you might have already know this type of LCD since they are possibly the only type of LCD that can be driven by those MCUs (means DBI LCD also include those 12864s and 1602s though we are not going to discuss them today). They are called DBI (Display Bus Interface) LCDs, and the bus can be i80 parallel, 68k parallel, i2c serial and spi serial. They have Framebuffer inside their controllers, so they can be self-refreshed, thus enables slow devices like MCU to drive them. Most of this type of display are smaller than 4″ and have a resolution less than 480×320.

Just something more about refresh. Believe or not, LCDs are just like CRTs, which need to be constantly refreshed. If the refresh rate is low enough, you can see it flicker. This requires the controller to periodically send pixel data to the LCD, usually, 60 times per second, and need to be carefully timed. Most MCUs don’t have LCD controller integrated, sending pixel data periodically with software can be very CPU intensive, so in most cases, an external controller is required. And DBI LCD, is type of LCD which have controller and framebuffer integrated.

Continue reading