GithubHelp home page GithubHelp logo

freechw / arduino-stm32-8bittft Goto Github PK

View Code? Open in Web Editor NEW

This project forked from nopnop2002/arduino-stm32-8bittft

0.0 0.0 0.0 478 KB

8bit parallel TFT Library for Arduino_Core_STM32

License: Apache License 2.0

C++ 100.00%

arduino-stm32-8bittft's Introduction

Arduino-STM32-8bitTFT

8bit TFT Library for Arduino_Core_STM32(ST Core)

I ported from here.
https://github.com/prenticedavid/MCUFRIEND_kbv


Software requirement


Wirering for 8bit Parallel TFT

TFT STM32
LCD_RD -- PB0
LCD_WR -- PB1
LCD_RS -- PB5
LCD_CS -- PB6
LCD_RST -- PB7
LCD_D0 -- PA0
LCD_D1 -- PA1
LCD_D2 -- PA2(*1)
LCD_D3 -- PA3
LCD_D4 -- PA4
LCD_D5 -- PA5
LCD_D6 -- PA6
LCD_D7 -- PA7
5V -- 5V(*2)
3.3V -- 3.3V(*2)
GND -- GND

(*1) Serial.print of NUCLEO and DISC1 gose to PA2
If you use NUCLEO or DISC1, you need to change it.

(*2) When a regulator(It's often AMS1117) is mounted on the back, it's operated 5V.
When a regulator is NOT mounted on the back, it's operated 3.3V.

Note:You can change to any pin. To change the pin, change Arduino-STM32-8bitTFT.h.

Note:Keep the wire length as short as possible.


Tested TFT

  • ILI9325 2.4inch 240x320 TFT-Shield
  • ILI9341 2.4inch 240x320 TFT-Shield
  • ILI9342 2.4inch 240x320 TFT-Shield
  • SPFD5408 2.4inch 240x320 TFT-Shield
  • R61505 2.4inch 240x320 TFT-Shield
  • ST7783 2.4inch 240x320 TFT-Shield
  • LGDP4532 2.4inch 240x320 TFT-Shield
  • R61509V 3.6inch 240x400 TFT-Shield
  • ST7793 3.6inch 240x400 TFT-Shield
  • ILI9481 3.5inch 320x480 TFT-Shield
  • ILI9486 3.5inch 320x480 TFT-Shield
  • RM68140 3.95inch 320x480 TFT-Shield
  • ST7796 3.95inch 320x480 TFT-Shield
  • OPEN-SMART ILI9225 TFT-Shield
  • OPEN-SMART ILI9327 TFT-Shield
  • OPEN-SMART ILI9340 TFT-Shield

I found that these display cannot follow high-speed GPIO-ON and GPIO-OFF.

  • OPEN-SMART S6D1121 16Pin-Parallel
  • OPEN-SMART ST7775 16Pin-Parallel
  • OPEN-SMART ST7783 16Pin-Parallel
  • OPEN-SMART R61509V 16Pin-Parallel
  • OPEN-SMART ILI9488 16Pin-Parallel

TFT-SHIELD-2


Boards available

This library uses LL GPIO Generic Driver.
Probably all boards that can use the LL GPIO Generic Driver are available.
Here is support status of low-layer drivers.
https://www.st.com/content/st_com/en/search.html#q=Descriptions%20hal%20and%20ll-t=resources-page=1


Setting your TFT's resolution

The default resolution of this library is 240x320.
If your TFT's resolution is 320x480,
you have to set your TFT's resolution using tft.setResoution.

ID = tft.readID();
tft.setResolution(320, 480); // Set your resolution
Serial.print("Device ID: 0x"); Serial.println(ID, HEX);
tft.begin(ID);
uint32_t width = tft.width();
Serial.print("Width: "); Serial.println(width); // You will see 320
uint32_t height = tft.height();
Serial.print("Height: "); Serial.println(height); // You will see 480

If your TFT's resolution is 240x400,
you have to set your TFT's resolution and TFT's offset.

ID = tft.readID();
tft.setResolution(240, 400); // Set your resolution
tft.setOffset(32); // Set your offset
Serial.print("Device ID: 0x"); Serial.println(ID, HEX);
tft.begin(ID);
uint32_t width = tft.width();
Serial.print("Width: "); Serial.println(width); // You will see 240
uint32_t height = tft.height();
Serial.print("Height: "); Serial.println(height); // You will see 400

  • STM32F103 + R61505 2.4 inch TFT

r61505

  • STM32F103 + SPFD5408 2.4 inch TFT

spfd5408

  • STM32F103 + ILI9325 2.4 inch TFT

ili9325

  • STM32F103 + ILI9341 2.4 inch TFT

ili9341

  • STM32F103 + ILI9342 2.4 inch TFT

ili9342

  • STM32F401 + ILI9341 2.4 inch TFT

STM32F401

  • STM32F407 + ILI9341 2.4 inch TFT

STM32F407

  • NUCLEO F446RE + ILI9341 2.4 inch TFT

8bitTFT


Benchmark using ILI9341(240x320)

Benchmark STM32F103 STM32F303 STM32F401 STM32F407 STM32F446 ATmega328
Screen fill 2241101 1854703 1208997 647337 604184 1379560
Text 138955 106085 69792 38303 35748 344024
Lines 1337689 999535 660532 361830 337721 3390180
Horiz/Vert Lines 185661 152992 99924 53548 49978 144664
Rectangles (outline) 120109 98346 64325 34627 32311 104260
Rectangles (filled) 4756300 3935313 2583183 1386162 1293716 3267476
Circles (filled) 610890 471781 310337 167938 156716 1211484
Circles (outline) 588951 439863 290416 159225 148621 1475108
Triangles (outline) 302008 225153 148665 81285 75894 1075596
Triangles (filled) 1550456 1262459 821918 440290 410928 1721636
Rounded rects (outline) 262224 201583 132647 72231 67431 506428
Rounded rects (filled) 4711541 3899510 2555561 1372596 1281003 3795228

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.