STM32F103 8bit parallel TFT Library for Arduino_STM32
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"
I found that these display cannot follow high-speed GPIO-ON and GPIO-OFF.
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
SPFD5408 + ILI9486
ILI9325 + ILI9481
ILI9341 + ST7793
ILI9342 + R61509V
ST7783 + ST7796
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.