stm32 tft lcd interface brands

ST cooperates with Riverdi because we believe that such partnership brings value to our joint customers. On top of this, we also discovered that we shared some business visions about how to make it easier and faster to go from the initial stages of designing a product embedding a graphical user interface to a production ready product. The conclusion was that combining the STM32 High performance microcontrollers, with the free STM32 graphics toolchain and Riverdi displays + PCB and then merge all of this into a board support package ready to run TouchGFX, would be a compelling offering.

Designing and developing a product with an embedded user interface (GUI), can be complex, as it involves many building block and disciplines, which all requires expert knowledge. Riverdi offer is covering a lot of them, allowing the customer to focus on the most important part of the development, the GUI Application itself. And remember that this is the face of your product. Choosing such solution, the customer does not need to worry about sourcing components like the display, microcontrollers, memory, etc. or even writing low-level drivers, development the board support package or porting TouchGFX. Its all ready done. What makes cooperation with Riverdi unique is that Riverdi has been able to drive a 1280*800 display resolution in high colors, with a STM32H7 microcontroller and a TouchGFX application showing a smart home UI. This shows that Riverdi is well aware of how to exploit all the capabilities of the STM32 Graphics offering combining hardware and software in a unique solution. From the first business meetings, it was clear that we shared visions of the market for embedded GUIs. And Riverdi proved that they can go from an idea and concept to actual working hardware, very fast.

stm32 tft lcd interface brands

Most controllers, for panels of this size, have a parallel interface I think; the speed is similar but transferring whole bytes/words at a time is obviously a win. Full speed, full screen video (60FPS) is feasible I think.

Your panel is digital RGB, which requires an external controller (framebuffer, addressing, sync generation, etc.). Some micros have this internal, e.g. STM32F417 I think. Note that sharing video and system RAM (you likely need to add an external SDRAM) will have some performance impact on the CPU; don"t expect the world out of it. (Probably still enough to run Doom, for point of reference.

You can get standalone controllers for these. I"ve played with one before, though the board I made doesn"t quite match your panel"s pinout, so you"d have to make an adapter cable to use it; but I do have spares if you"re interested, and are able to solder SMTs (it"s about 50 components, the most difficult being a 0.4mm pitch TQFP, or a no-lead; hot air or oven reflow is required). It uses an Epson S1D13517F00A100, a... fairly pricey (and, apparently out of stock right now..) controller, which presents a parallel 8/16 bit interface. Would be a good match to an STM32 parallel port, or even FSMC.

stm32 tft lcd interface brands

The demo is developed based on the HAL library. Download the demo, find the STM32 program file directory, and open the LCD_demo.uvprojx in the STM32\STM32F103RBT6\MDK-ARM directory to check the program.

For the screen, if you need to draw pictures, display Chinese and English characters, display pictures, etc., you can use the upper application to do, and we provide some basic functions here about some graphics processing in the directory STM32\STM32F103RB\User\GUI_DEV\GUI_Paint.c(.h)

DEV_Config.cpp(.h): It is the hardware interface definition, which encapsulates the read and write pin levels, SPI transmission data, and pin initialization;

image.cpp(.h): is the image data, which can convert any BMP image into a 16-bit true color image array through Img2Lcd (downloadable in the development data).

The hardware interface is defined in the two files DEV_Config.cpp(.h), and functions such as read and write pin level, delay, and SPI transmission are encapsulated.

stm32 tft lcd interface brands

Features:This is a new 4.8cm series SPI color display module. Supports analog SPI and hardware SPI. SPI series, less I/O port needed. Designed with SD card socket and PCB adapter for LCD. It can be controlled by 8051 / AVR / PIC /ARM/STM32. It can be driven with at least four I/Os.

stm32 tft lcd interface brands

The LCD I am using is a 2.8″ TFT LCD with SPI communication. I also have another 16-bit Parallel TFT LCD but it will be another story for another time. For this post, let’s focus on how to display what you want on the 2.8″ LCD. You can find all details about this LCD from this page:http://www.lcdwiki.com/2.8inch_SPI_Module_ILI9341_SKU:MSP2807

First thing first, this LCD use SPI as the main communication protocol with your MCU. For STM32 users, HAL Library has already implemented this protocol which makes this project easier for us. But, a little knowledge about this protocol does not hurt anyone. SPI is short for Serial Peripheral Interface which, aside from two data lines, also has a clock line and select lines to choose between devices you want to communicate with.

This LCD uses ILI9341 as a single-chip SOC driver for a display with a resolution of 240×320. More details can be found in the official document of ILI9341. But the most important thing is that we have to establish astart sequencein order for this LCD to work. The “start sequence” includes many other sequences which are also defined in the datasheet. Each sequence starts when you send a command to ILI9341 and then some parameters to follow up. This sequence is applied for all communication between MCU and ILI9341.

For this project, I recommend using theSystem Workbench for STM32for coding and building the code. After installing and open the program, go to the source code you have just downloaded and double click the.cprojectfile. It will automatically be open in your IDE. Then build the program by right click on the folder you just open (TFTLCD) and chooseBuild Project. Wait for it to finish and upload it to the board by right clicking the folder, choose Run As and then clickAc6 STM32C/C++ Application. And that’s it for running the example.

The most important library for this project is obviously the ILI9341_Driver. This driver is built from the provided source code in the lcdwiki.com page. I only choose the part that we need to use the most in many applications like writing string, displaying image and drawing symbols. Another library from the wiki page is the TOUCH library. Most of the libraries I got from the Internet were not working properly due to some adjustments to the original one.

To draw symbols or even display images, we need a “byte array” of that image or symbol. As an illustration, to display an image from a game called Transistor, I have a “byte array” of that image stored in a file named transistor.h. You can find this file in the link below. Then, I draw each pixel from the image to the LCD by adding the code in the Display_Picture() function in the Display folder.void Display_Picture()