8bit TFT Library for Arduino_STM32(MAPLE Core)
I ported from here.
https://github.com/prenticedavid/MCUFRIEND_kbv
-
Core library
https://github.com/rogerclarkmelbourne/Arduino_STM32 -
Adafruit GFX Library
https://github.com/adafruit/Adafruit-GFX-Library
Using GPIOA as Data Port
#define TFT_DATA GPIOA
TFT | STM32F103 | |
---|---|---|
LCD_RST | -- | PB7 |
LCD_CS | -- | PB6 |
LCD_RS | -- | PB5 |
LCD_WR | -- | PB4(*2) |
LCD_RD | -- | PB3(*2) |
LCD_D0 | -- | PA0 |
LCD_D1 | -- | PA1 |
LCD_D2 | -- | PA2 |
LCD_D3 | -- | PA3 |
LCD_D4 | -- | PA4 |
LCD_D5 | -- | PA5 |
LCD_D6 | -- | PA6 |
LCD_D7 | -- | PA7 |
5V | -- | 5V(*1) |
3.3V | -- | 3.3V(*1) |
GND | -- | GND |
Using GPIOC as Data Port
#define TFT_DATA GPIOC
TFT | STM32F103 | |
---|---|---|
LCD_RST | -- | PB7 |
LCD_CS | -- | PB6 |
LCD_RS | -- | PB5 |
LCD_WR | -- | PB4(*2) |
LCD_RD | -- | PB3(*2) |
LCD_D0 | -- | PC0 |
LCD_D1 | -- | PC1 |
LCD_D2 | -- | PC2 |
LCD_D3 | -- | PC3 |
LCD_D4 | -- | PC4 |
LCD_D5 | -- | PC5 |
LCD_D6 | -- | PC6 |
LCD_D7 | -- | PC7 |
5V | -- | 5V(*1) |
3.3V | -- | 3.3V(*1) |
GND | -- | GND |
(*1)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.
(*2)By several boards, This port is used as JTAG.
You need remap.
afio_cfg_debug_ports(AFIO_DEBUG_NONE)
Pin define is "STM32_TFT_8bit.h"
- 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
If your TFT's resolution is 320x480,
you have to set your TFT's resolution using tft.setResoution.
Example:
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.
Example:
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
If you want more faster, plase use this.
F4 board is very fast.
Viewer of a JPEG file in the SD card.
-
Arduino FAT16/FAT32 Library
https://github.com/greiman/SdFat -
JPEG decoder library
https://github.com/Bodmer/JPEGDecoder
TFT | STM32F103 | |
---|---|---|
SD_SS | -- | PB12 |
SD_SCK | -- | PB13 |
SD_DI | -- | PB15 |
SD_DO | -- | PB14 |
5V | -- | 5V(*) |
3.3V | -- | 3.3V(*) |
GND | -- | GND |
*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.
Copy JPEGS file to your SD-CARD.
*The biggest length of the JPEG file name is 32 character.
Wire TFT built-in SD-CARD Reader to STM32.
Execute JpegView_240x320_SMT32.