I have to drive a TFT display with an ARM7 ST MCU (STR750 family). The application must show some color images (8 bit per color) on a320x240 QVGA.
The choosen MCU has up to 256KB internal flash and 16KB internal RAM. I plan to add one external serial flash (ST serial flash connected to the MCU's SMI interface) and maybe an external RAM (always ST product).
The TFT is a 12 bit-depth color TFT and has to be driven with an external clock @ 6.5MHz in order to obtain the classical 50Hz refresh rate. Specs says that each pixel must be presentet to TFT pin every 154ns.
One possible solution is to read each pixel value directly from the FLASH memory, presenting it to TFT pins as soon as possible: but I'm worried about external FLASH accessing and elaboration time, outputs must be ready in 154ns. With this solution I can omit the external RAM with it busses (something like 30 wires @20MHz minimum).
The second solution uses external RAM to create a double buffered software architecture: each time I have to change the image, I load the back buffer from FLASH then I swap these buffers. TFT inputs are read from RAM.
Now I have some questions:
- STR750 clock is driven by an external oscillator @ 4 (or 8) MHz, then with the internal PLL I can obtain PLL_CLOCK up to 64MHz: there's a "normal" PLL range or I have to calculate it based on timimgs?
- Is there any better solution to the problem?
- Where can I find info about TFT driving?