Skip to content

Commit c90f6a4

Browse files
Add 7789 color invert option
1 parent cbb08b2 commit c90f6a4

File tree

3 files changed

+29
-21
lines changed

3 files changed

+29
-21
lines changed

lvgl_tft/Kconfig

+18-17
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ menu "LVGL TFT Display controller"
109109
bool
110110
help
111111
ST7789 display controller.
112-
112+
113113
config LV_TFT_DISPLAY_CONTROLLER_GC9A01
114114
bool
115115
help
@@ -211,14 +211,14 @@ menu "LVGL TFT Display controller"
211211

212212
config LV_TFT_DISPLAY_X_OFFSET
213213
depends on LV_TFT_DISPLAY_OFFSETS
214-
int
214+
int
215215
default 40 if LV_PREDEFINED_DISPLAY_TTGO && (LV_DISPLAY_ORIENTATION_LANDSCAPE || LV_DISPLAY_ORIENTATION_LANDSCAPE_INVERTED)
216216
default 53 if LV_PREDEFINED_DISPLAY_TTGO && (LV_DISPLAY_ORIENTATION_PORTRAIT || LV_DISPLAY_ORIENTATION_PORTRAIT_INVERTED)
217217
default 0
218218

219219
config LV_TFT_DISPLAY_Y_OFFSET
220220
depends on LV_TFT_DISPLAY_OFFSETS
221-
int
221+
int
222222
default 53 if LV_PREDEFINED_DISPLAY_TTGO && (LV_DISPLAY_ORIENTATION_LANDSCAPE || LV_DISPLAY_ORIENTATION_LANDSCAPE_INVERTED)
223223
default 40 if LV_PREDEFINED_DISPLAY_TTGO && (LV_DISPLAY_ORIENTATION_PORTRAIT || LV_DISPLAY_ORIENTATION_PORTRAIT_INVERTED)
224224
default 0
@@ -284,7 +284,7 @@ menu "LVGL TFT Display controller"
284284
config LV_TFT_DISPLAY_USER_CONTROLLER_GC9A01
285285
bool "GC9A01"
286286
select LV_TFT_DISPLAY_CONTROLLER_GC9A01
287-
select LV_TFT_DISPLAY_PROTOCOL_SPI
287+
select LV_TFT_DISPLAY_PROTOCOL_SPI
288288
config LV_TFT_DISPLAY_USER_CONTROLLER_ST7735S
289289
bool "ST7735S"
290290
select LV_TFT_DISPLAY_CONTROLLER_ST7735S
@@ -441,7 +441,7 @@ menu "LVGL TFT Display controller"
441441
config LV_FT81X_CONFIG_EVE_SUNFLOWER
442442
bool "EVE_SUNFLOWER"
443443
config LV_FT81X_CONFIG_EVE_CONNECTEVE
444-
bool "EVE_CONNECTEVE"
444+
bool "EVE_CONNECTEVE"
445445
endchoice
446446

447447
choice
@@ -585,10 +585,11 @@ menu "LVGL TFT Display controller"
585585
If text is backwards on your display, try enabling this.
586586

587587
config LV_INVERT_COLORS
588-
bool "Invert colors in display" if LV_TFT_DISPLAY_CONTROLLER_ILI9341 || LV_TFT_DISPLAY_CONTROLLER_ST7735S || LV_TFT_DISPLAY_CONTROLLER_ILI9481
588+
bool "Invert colors in display" if LV_TFT_DISPLAY_CONTROLLER_ILI9341 || LV_TFT_DISPLAY_CONTROLLER_ST7735S || LV_TFT_DISPLAY_CONTROLLER_ILI9481 || LV_TFT_DISPLAY_CONTROLLER_ST7789
589589
default y if LV_PREDEFINED_DISPLAY_M5STACK || LV_PREDEFINED_DISPLAY_M5STICKC
590590
help
591591
If the colors look inverted on your display, try enabling this.
592+
If it didn't help try LVGL configuration -> Swap the 2 bytes of RGB565 color.
592593

593594
config LV_M5STICKC_HANDLE_AXP192
594595
bool "Handle Backlight and TFT power for M5StickC using AXP192." if LV_PREDEFINED_DISPLAY_M5STICKC || LV_TFT_DISPLAY_CONTROLLER_ST7735S
@@ -769,7 +770,7 @@ menu "LVGL TFT Display controller"
769770
depends on LV_DISPLAY_USE_SPI_MISO
770771
range 0 39 if IDF_TARGET_ESP32
771772
range 0 43 if IDF_TARGET_ESP32S2
772-
773+
773774
default 19 if LV_PREDEFINED_PINS_TKOALA
774775
default 0
775776

@@ -790,7 +791,7 @@ menu "LVGL TFT Display controller"
790791
depends on LV_TFT_DISPLAY_SPI_TRANS_MODE_QIO
791792
range -1 39 if IDF_TARGET_ESP32
792793
range -1 43 if IDF_TARGET_ESP32S2
793-
794+
794795
default 22 if LV_PREDEFINED_PINS_TKOALA && LV_TFT_DISPLAY_SPI_TRANS_MODE_QIO
795796
default -1
796797
help
@@ -801,7 +802,7 @@ menu "LVGL TFT Display controller"
801802
depends on LV_TFT_DISPLAY_SPI_TRANS_MODE_QIO
802803
range -1 39 if IDF_TARGET_ESP32
803804
range -1 43 if IDF_TARGET_ESP32S2
804-
805+
805806
default 21 if LV_PREDEFINED_PINS_TKOALA && LV_TFT_DISPLAY_SPI_TRANS_MODE_QIO
806807
default -1
807808
help
@@ -811,7 +812,7 @@ menu "LVGL TFT Display controller"
811812
int "GPIO for CLK (SCK / Serial Clock)" if LV_TFT_DISPLAY_PROTOCOL_SPI
812813
range 0 39 if IDF_TARGET_ESP32
813814
range 0 43 if IDF_TARGET_ESP32S2
814-
815+
815816
default 18 if LV_PREDEFINED_DISPLAY_M5STACK || LV_PREDEFINED_DISPLAY_M5STICK
816817
default 13 if LV_PREDEFINED_DISPLAY_M5STICKC
817818
default 18 if LV_PREDEFINED_DISPLAY_ATAG
@@ -838,7 +839,7 @@ menu "LVGL TFT Display controller"
838839
depends on LV_DISPLAY_USE_SPI_CS
839840
range 0 39 if IDF_TARGET_ESP32
840841
range 0 43 if IDF_TARGET_ESP32S2
841-
842+
842843
default 5 if LV_PREDEFINED_PINS_38V1
843844
default 14 if LV_PREDEFINED_DISPLAY_M5STACK || LV_PREDEFINED_DISPLAY_M5STICK
844845
default 5 if LV_PREDEFINED_DISPLAY_M5STICKC
@@ -865,7 +866,7 @@ menu "LVGL TFT Display controller"
865866
int "GPIO for DC (Data / Command)" if LV_TFT_DISPLAY_PROTOCOL_SPI
866867
range 0 39 if IDF_TARGET_ESP32
867868
range 0 43 if IDF_TARGET_ESP32S2
868-
869+
869870
depends on LV_DISPLAY_USE_DC
870871
default 19 if LV_PREDEFINED_PINS_38V1
871872
default 17 if LV_PREDEFINED_PINS_38V4
@@ -887,7 +888,7 @@ menu "LVGL TFT Display controller"
887888
int "GPIO for Reset" if LV_TFT_DISPLAY_PROTOCOL_SPI
888889
range 0 39 if IDF_TARGET_ESP32
889890
range 0 43 if IDF_TARGET_ESP32S2
890-
891+
891892
default 18 if LV_PREDEFINED_PINS_38V1
892893
default 25 if LV_PREDEFINED_PINS_38V4
893894
default 33 if LV_PREDEFINED_DISPLAY_M5STACK || LV_PREDEFINED_DISPLAY_M5STICK
@@ -908,7 +909,7 @@ menu "LVGL TFT Display controller"
908909
int "GPIO for Busy" if LV_TFT_DISPLAY_CONTROLLER_IL3820 || LV_TFT_DISPLAY_CONTROLLER_JD79653A || LV_TFT_DISPLAY_CONTROLLER_UC8151D
909910
range 0 39 if IDF_TARGET_ESP32
910911
range 0 43 if IDF_TARGET_ESP32S2
911-
912+
912913
default 35 if LV_TFT_DISPLAY_CONTROLLER_IL3820 || LV_TFT_DISPLAY_CONTROLLER_JD79653A || LV_TFT_DISPLAY_CONTROLLER_UC8151D
913914
default 35
914915

@@ -946,7 +947,7 @@ menu "LVGL TFT Display controller"
946947
depends on LV_ENABLE_BACKLIGHT_CONTROL
947948
range 0 39 if IDF_TARGET_ESP32
948949
range 0 43 if IDF_TARGET_ESP32S2
949-
950+
950951
default 23 if LV_PREDEFINED_PINS_38V1
951952
default 26 if LV_PREDEFINED_PINS_38V4
952953
default 32 if LV_PREDEFINED_DISPLAY_M5STACK
@@ -966,7 +967,7 @@ menu "LVGL TFT Display controller"
966967
int "GPIO for I2C SDA" if LV_TFT_DISPLAY_PROTOCOL_I2C
967968
range 0 39 if IDF_TARGET_ESP32
968969
range 0 43 if IDF_TARGET_ESP32S2
969-
970+
970971
default 5 if LV_PREDEFINED_DISPLAY_WEMOS_LOLIN
971972
default 5
972973

@@ -977,7 +978,7 @@ menu "LVGL TFT Display controller"
977978
int "GPIO for I2C SCL" if LV_TFT_DISPLAY_PROTOCOL_I2C
978979
range 0 39 if IDF_TARGET_ESP32
979980
range 0 43 if IDF_TARGET_ESP32S2
980-
981+
981982
default 4 if LV_PREDEFINED_DISPLAY_WEMOS_LOLIN
982983
default 4
983984

lvgl_tft/st7789.c

+10-4
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,13 @@ void st7789_init(void)
6565
{ST7789_CABCCTRL, {0xBE}, 1},
6666
{ST7789_MADCTL, {0x00}, 1}, // Set to 0x28 if your display is flipped
6767
{ST7789_COLMOD, {0x55}, 1},
68-
{ST7789_INVON, {0}, 0},
68+
69+
#if ST7789_INVERT_COLORS == 1
70+
{ST7789_INVON, {0}, 0}, // set inverted mode
71+
#else
72+
{ST7789_INVOFF, {0}, 0}, // set non-inverted mode
73+
#endif
74+
6975
{ST7789_RGBCTRL, {0x00, 0x1B}, 2},
7076
{0xF2, {0x08}, 1},
7177
{ST7789_GAMSET, {0x01}, 1},
@@ -86,7 +92,7 @@ void st7789_init(void)
8692
gpio_set_direction(ST7789_DC, GPIO_MODE_OUTPUT);
8793
gpio_pad_select_gpio(ST7789_RST);
8894
gpio_set_direction(ST7789_RST, GPIO_MODE_OUTPUT);
89-
95+
9096
#if ST7789_ENABLE_BACKLIGHT_CONTROL
9197
gpio_pad_select_gpio(ST7789_BCKL);
9298
gpio_set_direction(ST7789_BCKL, GPIO_MODE_OUTPUT);
@@ -219,15 +225,15 @@ static void st7789_set_orientation(uint8_t orientation)
219225

220226
ESP_LOGI(TAG, "Display orientation: %s", orientation_str[orientation]);
221227

222-
uint8_t data[] =
228+
uint8_t data[] =
223229
{
224230
#if CONFIG_LV_PREDEFINED_DISPLAY_TTGO
225231
0x60, 0xA0, 0x00, 0xC0
226232
#else
227233
0xC0, 0x00, 0x60, 0xA0
228234
#endif
229235
};
230-
236+
231237
ESP_LOGI(TAG, "0x36 command value: 0x%02X", data[orientation]);
232238

233239
st7789_send_cmd(ST7789_MADCTL);

lvgl_tft/st7789.h

+1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ extern "C"
2626
#define ST7789_BCKL CONFIG_LV_DISP_PIN_BCKL
2727

2828
#define ST7789_ENABLE_BACKLIGHT_CONTROL CONFIG_LV_ENABLE_BACKLIGHT_CONTROL
29+
#define ST7789_INVERT_COLORS CONFIG_LV_INVERT_COLORS
2930

3031
#if CONFIG_LV_BACKLIGHT_ACTIVE_LVL
3132
#define ST7789_BCKL_ACTIVE_LVL 1

0 commit comments

Comments
 (0)