How to drive parallel style TFT's from microcontroller? - Page 1
Forum section: electronics / projects

author: alank2
author_rank: Super Contributor
timestamp: July 01, 2016, 07:59:27 pm
content: I've noticed some of them are 18bit, 24bit, etc. I have a couple of questions:#1 - if you stop refreshing it, does it go black, like stopping driving a vga crt for example?#2 - can you recommend any ic/drivers that allow spi/i2c comm from a microcontroller that will drive the parallel tft?

author: bktemp
author_rank: Super Contributor
timestamp: July 01, 2016, 08:14:43 pm
content: Quote from: alank2 on July 01, 2016, 07:59:27 pmThe last image will stay for a short time and fade out, showing all kinds of weird colourpatterns. It even may get damaged it you do this often.QuoteIt depends on the resolution you need.Typically you don't use i2c for TFTs because it is too slow: Even for a small 320x240@16bpp display you need at least 13 seconds to write the whole screen when using 100kHz i2c.There are many 240x320 and 320x240 TFTs with embedded controllers with SPI interface, for example ILI9341 controllers.Most TFT controllers support only 8/16bit parallel bus (S1D13748, S1D13517, SSD1961/2/3). Only S1D13513 supports SPI, but I wouln't recommend SPI for driving a large TFT screen. It is too slow.

author: Yansi
author_rank: Super Contributor
timestamp: July 01, 2016, 08:18:16 pm
content: Get yourself a proper MCU with TFT controller builtin. (STM32F429, STM32F746,...),build the video refresh controller yourself using suitable CPLD/FPGA and a memory chip orbuy yourself SSD1963. It's a quite good TFT controller chip with integrated videoRAM.(note: The SSD1963 can drive I think up to 800x600 LCD, but the internal video memory is not so great, so only a singleframe at such high resolution)

author: danadak
author_rank: Super Contributor
timestamp: July 02, 2016, 02:24:11 am
content: Cypress PSOC 5LP family has display interface controller, and USB,SPI, I2C, One Wire, UARTs.........and lots of analog, A/D to 20 bits,digital filter, OpAmps, Comparators, Mixers........Regards, Dana.

author: newbrain
author_rank: Super Contributor
timestamp: July 02, 2016, 09:15:08 am
content: Quote from: alank2 on July 01, 2016, 07:59:27 pmDepends very much on the TFT controller capabilities and the way the module vendor sets it.One common example is the ILI9481 controller, used in 320x480 TFTs.Depending on the logic level of some external pins, it can be set to a variety of interfaces:'DPI' (Display Pixel Interface) meaning that you need to continuously refresh the display, and provide synch signals and clock; the advantage is the complete control on the image and fast updates, the disadvantage is the memory occupied by a frame buffer and the need for refresh'DBI' (Display Bus Interface) an MCU bus interface, one writes command and data and the refresh is taken care of by the controller, no frame buffer needed, simpler handling (no strict timings) but slower updatesSPI compatible interface (a 1 bit, clocked mode of the DBI), even slower updates, low wires countTo continue the ILI9481 example, a popular module sold on eBay/Aliexpressetc. is hardwired for a 16bit (RGB 565) DBI interface, and no other mode is available (without physical modification).Quote from: Yansi on July 01, 2016, 08:18:16 pmI second that. Quite easy to work with and the DMA2D (color conversion and blending) helps too.For the module above, though, a chip with an external memory controller (FMC/FSMC) is enough (e.g. F407), after FSMC setup the writes are simply something like:Code:*pCmd = ILI_RAMWRITE;*pData = color;With simple random rectangle fills, I managed to get about 7Mpixels/second from the above.Of course, a bunch of GPIOs would have been enough, at the expense more complicated/slow software.The F429 and F746 Discovery boards are other good examples of the different interfaces one can find:The former uses an ILI9341 (240x320) and can be set by SW both as an SPI and/or a parallel DPI interface, the latter includes a display that works only with a DPI interface.

author: Fungus
author_rank: Super Contributor
timestamp: July 02, 2016, 11:40:39 am
content: Basic questions:a) What exactly do you want to show on the screen? (ie. how much information update is needed)b) How big is it?

author: alank2
author_rank: Super Contributor
timestamp: July 03, 2016, 02:10:11 pm
content: I don't have a particular project in mind just yet, just want to understand how they work and how it could be done. Thanks everyone for excellent answers!

author: amyk
author_rank: Super Contributor
timestamp: July 03, 2016, 03:13:02 pm
content: You don't need a framebuffer nor separate controller:http://www.linusakesson.net/scene/craft/

author: Kilrah
author_rank: Unknown
timestamp: July 03, 2016, 03:52:43 pm
content: Yeah but that's using VGA, not driving the display directly on its native interface.In other words there is a controller, it's just built in the monitor.

author: mino-fm
author_rank: Regular Contributor
timestamp: July 05, 2016, 04:24:22 pm
content: Quote from: alank2 on July 01, 2016, 07:59:27 pmI'm using only 6 bits (and one extra bit for blinking) since years with CPUs with internal DMA controller: Renesas H8SX / RX or STM32F407. Renesas called it 'direct drive'.Please use a translator programm or only look at the schematics and pictures:http://mino-elektronik.de/TFT-direct-drive/TFT-direct-drive.htmEspecially STM32F407-board (point 5) is a very fast and cheap solution for terminal applications.