• Stars
    star
    207
  • Rank 189,769 (Top 4 %)
  • Language
    C
  • License
    MIT License
  • Created over 5 years ago
  • Updated 11 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

ST7789 Driver for esp-idf

esp-idf-st7789

ST7789 Driver for esp-idf

The demo video by Dmitry Andreev.
https://www.youtube.com/watch?v=aOyaK0pUiPk&t

Software requirements

ESP-IDF V4.4/V5.x.

Installation for ESP-IDF V4.4

git clone -b v4.4 https://github.com/nopnop2002/esp-idf-st7789
cd esp-idf-st7789/
idf.py set-target {esp32/esp32s2/esp32s3/esp32c3}
idf.py menuconfig
idf.py flash

Note for ESP32-S2
The tjpgd library is not included in the ESP32-S2 ROM because the ROM of the ESP32-S2 is small.
Therefore, JPEG files cannot be displayed.

Note for ESP32-C3
For some reason, there are development boards that cannot use GPIO06, GPIO08, GPIO09, GPIO19 for SPI clock pins.
According to the ESP32C3 specifications, these pins can also be used as SPI clocks.
I used a raw ESP-C3-13 to verify that these pins could be used as SPI clocks.

Installation for ESP-IDF V5.x

git clone https://github.com/nopnop2002/esp-idf-st7789
cd esp-idf-st7789/
idf.py set-target {esp32/esp32s2/esp32s3/esp32c2/esp32c3/esp32c6}
idf.py menuconfig
idf.py flash

Note for ESP32-S2/ESP32-C2
The tjpgd library is not included in the ESP32-S2/ESP32-C2 ROM.
However, you can use this IDF component registry.
JPEG files can be displayed.

Note for ESP32C6
ESP-IDF V5.1 is required when using ESP32C6.

Configuration

config-top

Generic ST7789 1.3 Inch

There is 2 kinds of marking.
The pin marking is written as SCL/SDA, so it looks like i2c, but it is SPI.

st7789-back

config-240x240

MISO is not use.

st7789-1 st7789-2 st7789-3 st7789-4 st7789-5 st7789-6 st7789-7 st7789-8 st7789-9 st7789-10

BMP file
st7789-11

JPEG file(ESP32/ESP32S2/ESP32C3)
st7789-JPEG

PNG file
st7789-PNG

QR-CODE
st7789-QRCODE

Generic ST7789 2.0 Inch

st778-240x320-1 st778-240x320-2 st778-240x320-3 st778-240x320-5

Generic ST7789 1.14 Inch

st7789-135x240-2 st7789-135x240-1

SPI BUS selection

config-spi-bus

The ESP32 series has three SPI BUSs.
SPI1_HOST is used for communication with Flash memory.
You can use SPI2_HOST and SPI3_HOST freely.
When you use SDSPI(SD Card via SPI), SDSPI uses SPI2_HOST BUS.
When using this module at the same time as SDSPI or other SPI device using SPI2_HOST, it needs to be changed to SPI3_HOST.
When you don't use SDSPI, both SPI2_HOST and SPI3_HOST will work.
Previously it was called HSPI_HOST / VSPI_HOST, but now it is called SPI2_HOST / SPI3_HOST.

About Reset Circuit

TFT does not respond even after executing RESET several times.
I think there is an electrical problem around reset circuit.
I pulled up RESET by inserting a 100 ohm resistor between Vcc and RESET.
TroubleShooting st778-240x320-4

Perhaps the reset circuit requires a lot of current.
Ultimately I ended up using the following circuit.
And press the reset button several times.

ESP32 3V3  -------------------------------+
                                          |
                                          | Collector
                                         /
                                        /
ESP32 RES  ------------R(2.2K)---------|    SS8050
                                Base    \
                                         \
                                          | Emitter
                                          |
                                          +------------------------- ST77889 RST
                                          |
                                          |
ESP32 GND  ------------R(220)-------------+

If you know the cause, please let me know.

LILYGO TTGO 1.14 Inch ESP32

ttgo-1 ttgo-2

LILYGO TTGO T8 ESP32-S2

TTGO_T8_ESP32-S2-1 TTGO_T8_ESP32-S2-2

JPEG Decoder

The ESP-IDF component includes Tiny JPEG Decompressor.
The document of Tiny JPEG Decompressor is here.
This can reduce the image to 1/2 1/4 1/8.

PNG Decoder

The ESP-IDF component includes part of the miniz library, such as mz_crc32.
But it doesn't support all of the miniz.
The document of miniz library is here.

And I ported the pngle library from here.
This can reduce the image to any size.

Font File

You can add your original fonts.
The format of the font file is the FONTX format.
Your font file is put in font directory.
Your font file is uploaded to SPIFFS partition using meke flash.

Please refer this page about FONTX format.

Font File Editor(FONTX Editor)

There is a font file editor.
This can be done on Windows 10.
Developer page is here.

FontxEditor

This library uses the following as default fonts:

  • font/ILGH16XB.FNT // 8x16Dot Gothic
  • font/ILGH24XB.FNT // 12x24Dot Gothic
  • font/ILGH32XB.FNT // 16x32Dot Gothic
  • font/ILMH16XB.FNT // 8x16Dot Mincyo
  • font/ILMH24XB.FNT // 12x24Dot Mincyo
  • font/ILMH32XB.FNT // 16x32Dot Mincyo

From 0x00 to 0x7f, the characters image of Alphanumeric are stored.
From 0x80 to 0xff, the characters image of Japanese are stored.
Changing this file will change the font.

How to build your own font file

step1)
download fontxedit.exe.

step2)
download BDF font file from Internet.
I downloaded from here.
fontxedit.exe can ONLY import Monospaced bitmap fonts file.
Monospaced bitmap fonts can also be downloaded here.

step3)
import the BDF font file into your fontxedit.exe.
this tool can convert from BDF to FONTX.
FONTX-EDITTOR-1

step4)
adjust font size.
FONTX-EDITTOR-2

step5)
check font pattern.
FONTX-EDITTOR-13

step6)
save as .fnt file from your fontedit.exe.
FONTX-EDITTOR-14

step7)
upload your font file to $HOME/esp-idf-st7789/fonts directory.

step8)
add font to use

FontxFile fx32L[2];
InitFontx(fx32L,"/spiffs/LATIN32B.FNT",""); // 16x32Dot LATIN

Font file that From 0x80 to 0xff, the characters image of Japanese are stored.
st7789-KANA

Font file that From 0x80 to 0xff, the characters image of Latin are stored.
st7789-LATIN

External input module

You can use these if you need some input.

More Repositories

1

Arduino-STM32-CAN

Can Example for Arduino Core STM32
C++
203
star
2

esp-idf-ssd1306

SSD1306/SH1106 Driver for esp-idf
C
187
star
3

esp-idf-ili9340

SPI TFT and XPT2046 touch screen controller driver for esp-idf
C
128
star
4

esp-idf-CANBus-Monitor

Monitor Canbus traffic
C
114
star
5

esp-idf-mqtt-broker

MQTT Broker for esp-idf
C
113
star
6

esp-idf-parallel-tft

8bit parallel TFT & 4-line resistance touch screen Driver for esp-idf using i2s paralell mode
C
100
star
7

esp-idf-json

Example of JSON Serialize and Deserialize in ESP-IDF
C
96
star
8

esp-idf-sx126x

SX1262/SX1268/LLCC68 Low Power Long Range Transceiver driver for esp-idf
C
83
star
9

esp-idf-sx127x

SX1276/77/78/79 Low Power Long Range Transceiver driver for esp-idf
C
73
star
10

STM32_TFT_8bit

STM32F103 8bit parallel TFT Library for Arduino_STM32
C++
53
star
11

esp-idf-mirf

nRF24L01 Driver for esp-idf
C
51
star
12

Raspberry-ili9325

Parallel TFT Shield Library for wiringPi
C
49
star
13

esp-idf-mpu6050-dmp

A demo showing the pose of the mpu6050 in 3D using esp-idf
C++
43
star
14

esp-idf-cc1101

CC1101 Low-Power Sub-1 GHz RF Transceiver driver for esp-idf
C
42
star
15

esp-idf-video-streaming

Capture video from a USB camera using ESP-IDF
C
42
star
16

esp8266_ethernet

Example of using SPI Ethernet module with esp8266
C++
42
star
17

esp-idf-net-logging

Redirect esp-idf logging to the network
C
41
star
18

Raspberry-ssd1306

ssd1306 Command Line Tool for Raspberry Pi
C
40
star
19

esp-idf-can2mqtt

CANbus to mqtt bridge using esp32
C
40
star
20

Raspberry-W25Q64

SPI Flash Memory W25Q64 Access Library for RaspberryPi
C
39
star
21

esp-idf-ftpClient

ftp client for esp-idf
C
37
star
22

esp-idf-w25q64

SPI Flash Memory W25Q64 Access Library for esp-idf
C
36
star
23

esp-idf-can2http

CANbus to http bridge using esp32
C
36
star
24

Arduino-ESPAT-TCP

TCP/UDP Applicaton for Arduino using ESP8266's AT firmware.
C++
35
star
25

wiringpi-tft-tool

TFT Command Line Tool for Raspberry Pi
C
35
star
26

esp-idf-ftpServer

ftp server for esp-idf using FAT file system
C
34
star
27

Raspberry-ili9340spi

ILI9340 SPI TFT Library & XPT2046 Touch Screen Library for Raspberry
C
33
star
28

Arduino-LoRa-Ra01S

An Arduino Library for LoRa Communication using SX1262/1268
C++
33
star
29

Arduino-STM32-Ethernet-LAN8720

Ethernet on STM32 using external PHY
C++
32
star
30

esp-idf-protocol-buffer

Example of Google Protocol Buffers Serialize and Deserialize with ESP-IDF
C
30
star
31

esp-idf-espnow-gateway

Gateway between esp-now and MQTT using esp-idf
C
27
star
32

esp-idf-m5stickC

M5StickC ST7735S Driver for esp-idf
C
27
star
33

esp-idf-ds3231

DS3231 RTC Driver for esp-idf
C
26
star
34

Arduino-CANBus-Monitor

mcp2515 canbus module to Monitor Canbus traffic
C++
26
star
35

esp-idf-can2usb

CANbus to USB bridge using esp32
C
26
star
36

esp-idf-uart2bt

UART to Bluetooth bridge for ESP-IDF
C
25
star
37

SC16IS752

Driver for SC16IS752
C
24
star
38

Robotell-USB-CAN-Python

Python program for USB-CAN Adapter
Python
24
star
39

esp-idf-web-form

WEB Form example for ESP-IDF
C
23
star
40

esp-idf-http-camera

Take a picture and Publish it via HTTP
C
23
star
41

esp-idf-rc-switch

315/433MHz ASK RF driver for esp-idf
C
21
star
42

esp-idf-smb-client

SMB client example for esp-idf
C
21
star
43

OrangePi-ZERO-FAN-HAT

Cooling FAN HAT for OrangePi ZERO
20
star
44

esp-idf-GPS-Repeater

Transfer GPS NMAE messages over Wifi
C
19
star
45

esp-idf-24c

Two-Wire Serial EEPROM Access Library for esp-idf
C
18
star
46

Raspberry-ili9225spi

ILI9225 SPI TFT Library for RaspberryPi/OrangePi
C
18
star
47

esp-idf-wifi-apsta

WIFI_MODE_APSTA example with esp-idf
C
18
star
48

esp-idf-GPS-View

GPS NMEA Viewer for M5Stack
C
17
star
49

Arduino-STM32-8bitTFT

8bit parallel TFT Library for Arduino_Core_STM32
C++
17
star
50

esp-idf-pwm-slider

PWM Slider Bar Control using ESP-IDF
C
16
star
51

esp-idf-mqtt-camera

Take a picture and Publish it via MQTT
C
16
star
52

esp-idf-ftp-camera

Take a picture and Publish it via FTP
C
15
star
53

esp-idf-web-chart

Real-time data visualization using esp-idf
C
15
star
54

esp-idf-benchmark

Dhrystone/Whetstone benchmark for esp-idf
C
15
star
55

esp-idf-ssh-client

ssh client for esp-idf
C
15
star
56

esp-idf-m5stickC-Plus

M5StickC-Plus ST7789V2 Driver for ESP-IDF
C++
15
star
57

esp-idf-web-serial

Serial Monitor for esp-idf
C
14
star
58

esp-idf-a2dp-source

ESP32 Bluetooth A2DP-SOURCE for esp-idf
C
14
star
59

Arduino-SI4432

Arduino library for SILICON LABS SI443x
C++
14
star
60

Arduino-STM32-nRF24L01

Arduino stm32 support files for nRF24L01 RF modules
C++
13
star
61

esp-idf-multipart-upload

A multipart file upload example for esp-idf
C
13
star
62

esp-idf-irSend

M5Stick and M5StickC(+) as a remote control transmitter
C
12
star
63

esp-idf-can2websocket

Brows CAN-Frame using esp-idf
C
12
star
64

esp-idf-ds1302

DS1302 RTC Driver for esp-idf
C
12
star
65

Raspberry-pcd8544

pcd8544 Command Line Tool for Raspberry Pi / Orange Pi
C
12
star
66

esp-idf-nrf905

nRF905 Single chip 433/868/915MHz Transceiver Driver for esp-idf
C
11
star
67

esp-idf-candump

CAN Dump for esp-idf
C
11
star
68

esp-idf-sh1107

sh1107 Driver for esp-idf
C
11
star
69

esp-idf-bmi160

A demo showing the pose of the bmi160 6DoF IMU sensor in 3D using esp-idf
C
11
star
70

esp-idf-vs1053

VS1053 Driver for esp-idf
C
10
star
71

Arduino-STM32-Ethernet

Arduino stm32 example for W5x00 ethernet modules
C++
10
star
72

esp-idf-ultrasonic

Ultrasonic distance sensor for ESP-IDF
C
10
star
73

esp-idf-lsm6ds3

A demo showing the pose of the lsm6ds3 6DoF IMU sensor in 3D using esp-idf
C
10
star
74

esp-idf-zlib

Example compression and decompression using zlib
C
10
star
75

esp-idf-pcf8563

PCF8563 RTC Driver for esp-idf
C
10
star
76

STM32_GD2

FT800/FT81X TFT Library for Arduino_STM32
C
9
star
77

esp-idf-Bluetooth-SPP

Classic Bluetooth SPP example for esp-idf
C
9
star
78

esp-idf-web-gpio

GPIO control using web browser
C
9
star
79

ESP8266-UART-to-UART-Bridge

C++
9
star
80

esp-idf-qr-code-generator

QR Code generator for esp-idf
C
9
star
81

esp-idf-rf69

RFM69 ISM Transceiver driver for esp-idf
C
9
star
82

esp8266-mpd-client

MPD client example for ESP8266/ESP32.
C++
9
star
83

esp-idf-cc2500

CC2500 Low-Cost Low-Power 2.4 GHz RF Transceiver driver for esp-idf
C
8
star
84

esp-idf-video-snapshot

Capture still images from a USB camera using ESP-IDF
C
8
star
85

esp-idf-sql-client

SQL database access example for esp-idf
C
8
star
86

pwmlib-opi

PWM C Library for H3/H2+ Sunxi SoC
C
8
star
87

esp-idf-DFPlayerMini

DFPlayer - A Mini MP3 Player For ESP-IDF
C
8
star
88

Raspberry-at24c

Two-Wire Serial EEPROM Access Library for RaspberryPi
C
8
star
89

esp-idf-mqtt-client

GUI MQTT Client for esp-idf
C
8
star
90

esp-idf-voice-control

Demonstration of voice control of esp32
C
7
star
91

esp-idf-mpr121

MPR121 Capacitive Touch Driver for esp-idf
C
7
star
92

esp-idf-smtp-camera

Take a picture and Publish it via SMTP.
C
7
star
93

esp-idf-93Cx6

Three-Wire Serial EEPROM Access Library for esp-idf
C
7
star
94

esp-idf-sc16is750

sc16is750/752 driver for esp-idf
C
7
star
95

esp-idf-world-weather

Display the weather forecast on M5STACK
C
7
star
96

esp-idf-ds1307

DS1307 RTC Driver for esp-idf
C
6
star
97

esp-idf-mcp3002

Driver for A/D converter with SPI serial interface
C
6
star
98

Raspberry-93Cx6

Three-Wire Serial EEPROM Access Library for RaspberryPi
C
6
star
99

Raspberry-HT1621B

HT1621B Segment LED Example Code for RaspberryPi
C
6
star
100

esp-idf-irAEHA

M5Stick and M5StickC as a remote control transmitter
C
6
star