Skip to content

Commit 21f81d1

Browse files
committed
Support ILI9163c (Sparkfun LCD-15143)
1 parent 147cacc commit 21f81d1

File tree

9 files changed

+365
-7
lines changed

9 files changed

+365
-7
lines changed

CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ elseif(CONFIG_LV_TFT_DISPLAY_CONTROLLER_RA8875)
4141
list(APPEND SOURCES "lvgl_tft/ra8875.c")
4242
elseif(CONFIG_LV_TFT_DISPLAY_CONTROLLER_GC9A01)
4343
list(APPEND SOURCES "lvgl_tft/GC9A01.c")
44+
elseif(CONFIG_LV_TFT_DISPLAY_CONTROLLER_ILI9163C)
45+
list(APPEND SOURCES "lvgl_tft/ili9163c.c")
4446
else()
4547
message(WARNING "LVGL ESP32 drivers: Display controller not defined.")
4648
endif()

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ swap of RGB565 color on the LVGL configuration menuconfig (it's not handled auto
1717
| Display Controller | Type | Interface | Color depth (LV_COLOR_DEPTH) | Swap RGB565 color (LV_COLOR_16_SWAP) |
1818
|---------------------------------------------|------------|------------------------|------------------------------|----------------------------------------|
1919
| ILI9341 | TFT | SPI | 16: RGB565 | Yes |
20+
| ILI9163C | TFT | SPI | 16: RGB565 | Yes |
2021
| ILI9486 | TFT | SPI | 16: RGB565 | Yes |
2122
| ILI9488 | TFT | SPI | 16: RGB565 | No |
2223
| HX8357B/HX8357D | TFT | SPI | 16: RGB565 | Yes |

lvgl_helpers.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,8 @@ extern "C" {
7373
#define DISP_BUF_SIZE ((LV_VER_RES_MAX * LV_VER_RES_MAX) / 8) // 5KB
7474
#elif defined (CONFIG_LV_TFT_DISPLAY_CONTROLLER_UC8151D)
7575
#define DISP_BUF_SIZE ((LV_VER_RES_MAX * LV_VER_RES_MAX) / 8) // 2888 bytes
76+
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_ILI9163C
77+
#define DISP_BUF_SIZE (LV_HOR_RES_MAX * 40)
7678
#else
7779
#error "No display controller selected"
7880
#endif

lvgl_spi_conf.h

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,8 @@ extern "C" {
130130
defined (CONFIG_LV_TFT_DISPLAY_CONTROLLER_SH1107) || \
131131
defined (CONFIG_LV_TFT_DISPLAY_CONTROLLER_FT81X) || \
132132
defined (CONFIG_LV_TFT_DISPLAY_CONTROLLER_IL3820) || \
133-
defined (CONFIG_LV_TFT_DISPLAY_CONTROLLER_JD79653A)
133+
defined (CONFIG_LV_TFT_DISPLAY_CONTROLLER_JD79653A) || \
134+
defined (CONFIG_LV_TFT_DISPLAY_CONTROLLER_ILI9163C)
134135

135136
#define SPI_BUS_MAX_TRANSFER_SZ (DISP_BUF_SIZE * 2)
136137

@@ -157,7 +158,9 @@ extern "C" {
157158
#define SPI_TFT_CLOCK_SPEED_HZ (40*1000*1000)
158159
#elif defined (CONFIG_LV_TFT_DISPLAY_CONTROLLER_ILI9341)
159160
#define SPI_TFT_CLOCK_SPEED_HZ (40*1000*1000)
160-
#elif defined (CONFIG_LV_TFT_DISPLAY_CONTROLLER_FT81X)
161+
#elif defined(CONFIG_LV_TFT_DISPLAY_CONTROLLER_ILI9163C)
162+
#define SPI_TFT_CLOCK_SPEED_HZ (40 * 1000 * 1000)
163+
#elif defined(CONFIG_LV_TFT_DISPLAY_CONTROLLER_FT81X)
161164
#define SPI_TFT_CLOCK_SPEED_HZ (32*1000*1000)
162165
#else
163166
#define SPI_TFT_CLOCK_SPEED_HZ (40*1000*1000)

lvgl_tft/Kconfig

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,11 @@ menu "LVGL TFT Display controller"
165165
help
166166
ST7796S display controller.
167167

168+
config LV_TFT_DISPLAY_CONTROLLER_ILI9163C
169+
bool
170+
help
171+
ILI9163C display controller.
172+
168173
# Display controller communication protocol
169174
#
170175
# This symbols define the communication protocol used by the
@@ -327,6 +332,10 @@ menu "LVGL TFT Display controller"
327332
bool "RA8875"
328333
select LV_TFT_DISPLAY_CONTROLLER_RA8875
329334
select LV_TFT_DISPLAY_PROTOCOL_SPI
335+
config LV_TFT_DISPLAY_USER_CONTROLLER_ILI9163C
336+
bool "ILI9163C"
337+
select LV_TFT_DISPLAY_CONTROLLER_ILI9163C
338+
select LV_TFT_DISPLAY_PROTOCOL_SPI
330339
endchoice
331340

332341
config CUSTOM_DISPLAY_BUFFER_SIZE
@@ -586,7 +595,7 @@ menu "LVGL TFT Display controller"
586595
If text is backwards on your display, try enabling this.
587596

588597
config LV_INVERT_COLORS
589-
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 || LV_TFT_DISPLAY_CONTROLLER_SSD1306 || LV_TFT_DISPLAY_CONTROLLER_SH1107 || LV_TFT_DISPLAY_CONTROLLER_HX8357
598+
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 || LV_TFT_DISPLAY_CONTROLLER_SSD1306 || LV_TFT_DISPLAY_CONTROLLER_SH1107 || LV_TFT_DISPLAY_CONTROLLER_HX8357 || LV_TFT_DISPLAY_CONTROLLER_ILI9163C
590599
default y if LV_PREDEFINED_DISPLAY_M5STACK || LV_PREDEFINED_DISPLAY_M5STICKC
591600
help
592601
If the colors look inverted on your display, try enabling this.
@@ -744,11 +753,11 @@ menu "LVGL TFT Display controller"
744753

745754
config LV_DISP_ST7789_SOFT_RESET
746755
bool "Soft reset - use software reset instead of reset pin"
747-
depends on LV_TFT_DISPLAY_CONTROLLER_ST7789
756+
depends on LV_TFT_DISPLAY_CONTROLLER_ST7789
748757
default n
749758
help
750759
Use software reset and ignores configured reset pin (some hardware does not use a reset pin).
751-
760+
752761
endmenu
753762

754763
# menu will be visible only when LV_PREDEFINED_DISPLAY_NONE is y

lvgl_tft/disp_driver.c

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ void disp_driver_init(void)
2121
st7735s_init();
2222
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_HX8357
2323
hx8357_init();
24-
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_ILI9486
24+
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_ILI9486
2525
ili9486_init();
2626
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_SH1107
2727
sh1107_init();
@@ -39,6 +39,8 @@ void disp_driver_init(void)
3939
jd79653a_init();
4040
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_UC8151D
4141
uc8151d_init();
42+
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_ILI9163C
43+
ili9163c_init();
4244
#endif
4345
}
4446

@@ -76,6 +78,8 @@ void disp_driver_flush(lv_disp_drv_t * drv, const lv_area_t * area, lv_color_t *
7678
jd79653a_lv_fb_flush(drv, area, color_map);
7779
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_UC8151D
7880
uc8151d_lv_fb_flush(drv, area, color_map);
81+
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_ILI9163C
82+
ili9163c_flush(drv, area, color_map);
7983
#endif
8084
}
8185

@@ -95,7 +99,7 @@ void disp_driver_rounder(lv_disp_drv_t * disp_drv, lv_area_t * area)
9599
}
96100

97101
void disp_driver_set_px(lv_disp_drv_t * disp_drv, uint8_t * buf, lv_coord_t buf_w, lv_coord_t x, lv_coord_t y,
98-
lv_color_t color, lv_opa_t opa)
102+
lv_color_t color, lv_opa_t opa)
99103
{
100104
#if defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_SSD1306
101105
ssd1306_set_px_cb(disp_drv, buf, buf_w, x, y, color, opa);

lvgl_tft/disp_driver.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@ extern "C" {
5050
#include "jd79653a.h"
5151
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_UC8151D
5252
#include "uc8151d.h"
53+
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_ILI9163C
54+
#include "ili9163c.h"
5355
#endif
5456

5557
/*********************

0 commit comments

Comments
 (0)