cancel
Showing results for 
Search instead for 
Did you mean: 

Confused: which tools/libraries do I need for TFT applications?

NNar
Associate II

So there's LTDC, STemWin, ili9341 drivers (and others), ChromArt, etc and I'm gathering that there's a lot of overlap on these. Some of the tutorials get into discussion of DSI, DPI, etc displays, which I don't have AFAIK. Is there a good tutorial on how to choose one of these paths and implement an example with it? And NOT using a BSP as that seems to have a lot already setup so I don't learn from it.

Example starting point: I'd like to use say a ili9341 display with an F4 or F0 processor, and SPI mode. I don't need any fancy graphics for now, just the ability to draw pixels/lines and show bitmaps. Any text can also just be bitmaps for now. AFAIK, I don't need LTDC or DMA, right? There are ili9341 drivers in the BSP section of the CubeF4 package... are these usable as is without the specific board (for my own board)? Or are there separate non-board-specific drivers?

Most importantly, is there a tutorial that explains this without using a pre-setup discovery or nucleo board?

Thanks.

4 REPLIES 4
Mon2
Senior III

Yes !!

Start here:

1) Source the low cost STM32F429i-DISC1 kit. You can use IAR (commercial compiler) or SW4STM32 (freeware) compiler. KEIL is not properly supported with these integrated tools. That is, if you plan to use TouchGFX + CubeMX then your choices are limited on what is actually working at this time. You will consume weeks if not more in debugging the tools if you take the wrong path.

2) Here is the first draft document of the full procedure to support the STM32F429i-DISC1 target that we followed:

https://s3.amazonaws.com/axxonshare/my_combo_tutorial.zip

Welcome feedback on this document and if it works for you. Good luck! 😀

There's a Reference Manual that described the functionality of the hardware, and the assorted display controllers also have Data Sheets/Manuals. Learn how to interpret them and you won't need to be walked through the process. People aren't going to make random tutorials covering things that people aren't commonly using, they focus on DISCO/NUCLEO boards because they are common and consistent.

For example there are SPI based displays, the BSP typically has a small SPI interface library, ie for the NUCLEO, and then for display shields from AdaFruit using fairly common controllers, and BSP\Components.

ST has App Notes describing the graphics hardware.

DSI is a very high speed serial connection instead of using 16 or 24 lines for RGB parallel data.

LTDC is the rastering engine, taking a frame buffer, painting a screen

ChromeArt is the frame buffer processor, like a BitBlit device.

SPI/I2C is typically used on small displays which come with their own controller with a built in display buffer.

The libraries for other displays have portable code for drawing lines, circles and bitmaps.

The underlying concepts for these things hasn't changed for decades, the speed, size and integration has improved, but the mechanics remain the same.

Tips, buy me a coffee, or three.. PayPal Venmo Up vote any posts that you find helpful, it shows what's working..
NNar
Associate II

Will check it out, thanks.

Thanks Clive, but I'm not sure what your direction is here. I understand the display hardware concepts (mostly) such as frame buffers, controllers, bare glass, etc. I know that the display I want to use for a first test has SPI and and ILI9341 controller so I don't need separate frame buffer memory or controller. And I know that my (intended) processor has SPI. My goal is just to have functioning graphics for now and I don't care about performance for now.

I'm new to ST's tools/environment so what I don't know is what ST tools/software/libs I need (or can use) to get a display working with this setup. I'd like to have CubeMX setup the framework for me, but the only thing I've found so far for graphics in CubeMX is STemWin, so that means I need to use STemWin? Or should I modify one of the BSP ILI9341 driver files for my specific wiring/pinout? Does LTDC even come into play here? From what I've read it should not, but then I noticed that the F429 discovery uses a SPI display and has LTDC enabled. Is this just for better performance?

FWIW, I tried following the STemWin tutorial in the CubeMX doc (UM1718) and got an error about framewindlg.c missing. Other paths I've tried give me errors I'm not sure how to resolve. The examples in the Cube repositories I can't compile as they're too large for the free Keil, and I started working with Atollic as that's my intended IDE, but the examples aren't setup for Atollic and I don't know any of this this enough yet to port the code. So rather than a lot of trial and a lot of error in what has been a significant learning curve so far, I was hoping there was some doc or someone (not just "people", but ST support perhaps) who could direct me to (a) which tools/software I need to learn for my minimal initial example case, and (b) which docs have the info I need.