Merge branch 'lvgl:master' into master
This commit is contained in:
commit
4004726e33
38 changed files with 567 additions and 86 deletions
6
.gitignore
vendored
6
.gitignore
vendored
|
@ -50,3 +50,9 @@ modules.order
|
|||
Module.symvers
|
||||
Mkfile.old
|
||||
dkms.conf
|
||||
|
||||
# MacOS
|
||||
.DS_Store
|
||||
|
||||
# ESP-IDF build dir
|
||||
build
|
||||
|
|
|
@ -45,6 +45,8 @@ elseif(CONFIG_LV_TFT_DISPLAY_CONTROLLER_RA8875)
|
|||
list(APPEND SOURCES "lvgl_tft/ra8875.c")
|
||||
elseif(CONFIG_LV_TFT_DISPLAY_CONTROLLER_GC9A01)
|
||||
list(APPEND SOURCES "lvgl_tft/GC9A01.c")
|
||||
elseif(CONFIG_LV_TFT_DISPLAY_CONTROLLER_ILI9163C)
|
||||
list(APPEND SOURCES "lvgl_tft/ili9163c.c")
|
||||
else()
|
||||
message(WARNING "LVGL ESP32 drivers: Display controller not defined.")
|
||||
endif()
|
||||
|
|
|
@ -17,6 +17,7 @@ swap of RGB565 color on the LVGL configuration menuconfig (it's not handled auto
|
|||
| Display Controller | Type | Interface | Color depth (LV_COLOR_DEPTH) | Swap RGB565 color (LV_COLOR_16_SWAP) |
|
||||
|---------------------------------------------|------------|------------------------|------------------------------|----------------------------------------|
|
||||
| ILI9341 | TFT | SPI | 16: RGB565 | Yes |
|
||||
| ILI9163C | TFT | SPI | 16: RGB565 | Yes |
|
||||
| ILI9486 | TFT | SPI | 16: RGB565 | Yes |
|
||||
| ILI9488 | TFT | SPI | 16: RGB565 | No |
|
||||
| HX8357B/HX8357D | TFT | SPI | 16: RGB565 | Yes |
|
||||
|
@ -51,6 +52,7 @@ and sets the gpio numbers for the interface.
|
|||
|---------------------------|-----------------------|-----------|-----------|-----------|
|
||||
| ESP Wrover Kit v4.1 | ILI9341 | SPI | 240 | 320 |
|
||||
| M5Stack | ILI9341 | SPI | 240 | 320 |
|
||||
| M5Core2 | ILI9341 | SPI | 240 | 320 |
|
||||
| M5Stick | SH1107 | SPI | - | - |
|
||||
| M5StickC | ST7735S | SPI | 80 | 160 |
|
||||
| Adafruit 3.5 Featherwing | HX8357 | SPI | 480 | 320 |
|
||||
|
|
|
@ -79,6 +79,8 @@ extern "C" {
|
|||
#define DISP_BUF_SIZE ((LV_VER_RES_MAX * LV_VER_RES_MAX) / 8) // 5KB
|
||||
#elif defined (CONFIG_LV_TFT_DISPLAY_CONTROLLER_UC8151D)
|
||||
#define DISP_BUF_SIZE ((LV_VER_RES_MAX * LV_VER_RES_MAX) / 8) // 2888 bytes
|
||||
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_ILI9163C
|
||||
#define DISP_BUF_SIZE (LV_HOR_RES_MAX * 40)
|
||||
#else
|
||||
#error "No display controller selected"
|
||||
#endif
|
||||
|
|
|
@ -130,7 +130,8 @@ extern "C" {
|
|||
defined (CONFIG_LV_TFT_DISPLAY_CONTROLLER_SH1107) || \
|
||||
defined (CONFIG_LV_TFT_DISPLAY_CONTROLLER_FT81X) || \
|
||||
defined (CONFIG_LV_TFT_DISPLAY_CONTROLLER_IL3820) || \
|
||||
defined (CONFIG_LV_TFT_DISPLAY_CONTROLLER_JD79653A)
|
||||
defined (CONFIG_LV_TFT_DISPLAY_CONTROLLER_JD79653A) || \
|
||||
defined (CONFIG_LV_TFT_DISPLAY_CONTROLLER_ILI9163C)
|
||||
|
||||
#define SPI_BUS_MAX_TRANSFER_SZ (DISP_BUF_SIZE * 2)
|
||||
|
||||
|
@ -157,7 +158,9 @@ extern "C" {
|
|||
#define SPI_TFT_CLOCK_SPEED_HZ (40*1000*1000)
|
||||
#elif defined (CONFIG_LV_TFT_DISPLAY_CONTROLLER_ILI9341)
|
||||
#define SPI_TFT_CLOCK_SPEED_HZ (40*1000*1000)
|
||||
#elif defined (CONFIG_LV_TFT_DISPLAY_CONTROLLER_FT81X)
|
||||
#elif defined(CONFIG_LV_TFT_DISPLAY_CONTROLLER_ILI9163C)
|
||||
#define SPI_TFT_CLOCK_SPEED_HZ (40 * 1000 * 1000)
|
||||
#elif defined(CONFIG_LV_TFT_DISPLAY_CONTROLLER_FT81X)
|
||||
#define SPI_TFT_CLOCK_SPEED_HZ (32*1000*1000)
|
||||
#else
|
||||
#define SPI_TFT_CLOCK_SPEED_HZ (40*1000*1000)
|
||||
|
|
|
@ -144,7 +144,7 @@ void DELAY_MS(uint16_t ms)
|
|||
vTaskDelay(ms / portTICK_PERIOD_MS);
|
||||
}
|
||||
|
||||
|
||||
#if EVE_USE_PDN
|
||||
void EVE_pdn_set(void)
|
||||
{
|
||||
gpio_set_level(EVE_PDN, 0); /* Power-Down low */
|
||||
|
@ -155,7 +155,7 @@ void EVE_pdn_clear(void)
|
|||
{
|
||||
gpio_set_level(EVE_PDN, 1); /* Power-Down high */
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
void spi_acquire()
|
||||
{
|
||||
|
@ -841,11 +841,13 @@ uint8_t EVE_init(void)
|
|||
uint8_t chipid = 0;
|
||||
uint16_t timeout = 0;
|
||||
|
||||
#if EVE_USE_PDN
|
||||
EVE_pdn_set();
|
||||
DELAY_MS(6); /* minimum time for power-down is 5ms */
|
||||
|
||||
EVE_pdn_clear();
|
||||
DELAY_MS(21); /* minimum time to allow from rising PD_N to first access is 20ms */
|
||||
#endif
|
||||
|
||||
/* EVE_cmdWrite(EVE_CORERST,0); */ /* reset, only required for warm-start if PowerDown line is not used */
|
||||
|
||||
|
|
|
@ -39,8 +39,12 @@ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR TH
|
|||
#define BLOCK_TRANSFER_SIZE 3840 // block transfer size when write data to CMD buffer
|
||||
|
||||
void DELAY_MS(uint16_t ms);
|
||||
|
||||
#if EVE_USE_PDN
|
||||
void EVE_pdn_set(void);
|
||||
void EVE_pdn_clear(void);
|
||||
#endif
|
||||
|
||||
void spi_acquire();
|
||||
void spi_release();
|
||||
|
||||
|
|
|
@ -49,6 +49,7 @@ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR TH
|
|||
#define EVE_MOSI DISP_SPI_MOSI // green
|
||||
#define EVE_CS DISP_SPI_CS // blue
|
||||
#define EVE_PDN CONFIG_LV_DISP_PIN_RST // grey
|
||||
#define EVE_USE_PDN CONFIG_LV_DISP_USE_RST
|
||||
|
||||
#define SPI_TRANSER_SIZE (DISP_BUF_SIZE * (LV_COLOR_DEPTH / 8))
|
||||
|
||||
|
|
|
@ -262,9 +262,15 @@ void TFT_bitmap_display(void)
|
|||
|
||||
void FT81x_init(void)
|
||||
{
|
||||
#if EVE_USE_PDN
|
||||
gpio_pad_select_gpio(EVE_PDN);
|
||||
#endif
|
||||
|
||||
gpio_set_level(EVE_CS, 1);
|
||||
|
||||
#if EVE_USE_PDN
|
||||
gpio_set_direction(EVE_PDN, GPIO_MODE_OUTPUT);
|
||||
#endif
|
||||
|
||||
spi_acquire();
|
||||
|
||||
|
|
|
@ -124,18 +124,24 @@ void GC9A01_init(void)
|
|||
//Initialize non-SPI GPIOs
|
||||
gpio_pad_select_gpio(GC9A01_DC);
|
||||
gpio_set_direction(GC9A01_DC, GPIO_MODE_OUTPUT);
|
||||
|
||||
#if GC9A01_USE_RST
|
||||
gpio_pad_select_gpio(GC9A01_RST);
|
||||
gpio_set_direction(GC9A01_RST, GPIO_MODE_OUTPUT);
|
||||
#endif
|
||||
|
||||
#if GC9A01_ENABLE_BACKLIGHT_CONTROL
|
||||
gpio_pad_select_gpio(GC9A01_BCKL);
|
||||
gpio_set_direction(GC9A01_BCKL, GPIO_MODE_OUTPUT);
|
||||
#endif
|
||||
|
||||
#if GC9A01_USE_RST
|
||||
//Reset the display
|
||||
gpio_set_level(GC9A01_RST, 0);
|
||||
vTaskDelay(100 / portTICK_RATE_MS);
|
||||
gpio_set_level(GC9A01_RST, 1);
|
||||
vTaskDelay(100 / portTICK_RATE_MS);
|
||||
#endif
|
||||
|
||||
ESP_LOGI(TAG, "Initialization.");
|
||||
|
||||
|
|
|
@ -27,6 +27,7 @@ extern "C" {
|
|||
*********************/
|
||||
#define GC9A01_DC CONFIG_LV_DISP_PIN_DC
|
||||
#define GC9A01_RST CONFIG_LV_DISP_PIN_RST
|
||||
#define GC9A01_USE_RST CONFIG_LV_DISP_USE_RST
|
||||
#define GC9A01_BCKL CONFIG_LV_DISP_PIN_BCKL
|
||||
|
||||
#define GC9A01_ENABLE_BACKLIGHT_CONTROL CONFIG_LV_ENABLE_BACKLIGHT_CONTROL
|
||||
|
|
|
@ -21,6 +21,10 @@ menu "LVGL TFT/Epaper Display controller"
|
|||
bool "M5Stack"
|
||||
select LV_TFT_DISPLAY_CONTROLLER_ILI9341
|
||||
select LV_TFT_DISPLAY_PROTOCOL_SPI
|
||||
config LV_PREDEFINED_DISPLAY_M5CORE2
|
||||
bool "M5Core2"
|
||||
select LV_TFT_DISPLAY_CONTROLLER_ILI9341
|
||||
select LV_TFT_DISPLAY_PROTOCOL_SPI
|
||||
config LV_PREDEFINED_DISPLAY_M5STICK
|
||||
bool "M5Stick"
|
||||
select LV_TFT_DISPLAY_CONTROLLER_SH1107
|
||||
|
@ -173,6 +177,11 @@ menu "LVGL TFT/Epaper Display controller"
|
|||
help
|
||||
ST7796S display controller.
|
||||
|
||||
config LV_TFT_DISPLAY_CONTROLLER_ILI9163C
|
||||
bool
|
||||
help
|
||||
ILI9163C display controller.
|
||||
|
||||
# Display controller communication protocol
|
||||
#
|
||||
# This symbols define the communication protocol used by the
|
||||
|
@ -349,6 +358,10 @@ menu "LVGL TFT/Epaper Display controller"
|
|||
bool "RA8875"
|
||||
select LV_TFT_DISPLAY_CONTROLLER_RA8875
|
||||
select LV_TFT_DISPLAY_PROTOCOL_SPI
|
||||
config LV_TFT_DISPLAY_USER_CONTROLLER_ILI9163C
|
||||
bool "ILI9163C"
|
||||
select LV_TFT_DISPLAY_CONTROLLER_ILI9163C
|
||||
select LV_TFT_DISPLAY_PROTOCOL_SPI
|
||||
endchoice
|
||||
|
||||
config CUSTOM_DISPLAY_BUFFER_SIZE
|
||||
|
@ -608,7 +621,7 @@ menu "LVGL TFT/Epaper Display controller"
|
|||
If text is backwards on your display, try enabling this.
|
||||
|
||||
config LV_INVERT_COLORS
|
||||
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
|
||||
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_GC9A01 || LV_TFT_DISPLAY_CONTROLLER_ILI9163C
|
||||
default y if LV_PREDEFINED_DISPLAY_M5STACK || LV_PREDEFINED_DISPLAY_M5STICKC
|
||||
help
|
||||
If the colors look inverted on your display, try enabling this.
|
||||
|
@ -785,6 +798,7 @@ menu "LVGL TFT/Epaper Display controller"
|
|||
default 23 if LV_PREDEFINED_DISPLAY_WROVER4
|
||||
default 23 if LV_PREDEFINED_DISPLAY_ATAG
|
||||
default 23 if LV_PREDEFINED_DISPLAY_M5STACK || LV_PREDEFINED_DISPLAY_M5STICK
|
||||
default 23 if LV_PREDEFINED_DISPLAY_M5CORE2
|
||||
default 15 if LV_PREDEFINED_DISPLAY_M5STICKC
|
||||
default 18 if LV_PREDEFINED_DISPLAY_ADA_FEATHERWING
|
||||
default 23 if LV_PREDEFINED_PINS_TKOALA
|
||||
|
@ -799,6 +813,7 @@ menu "LVGL TFT/Epaper Display controller"
|
|||
config LV_DISPLAY_USE_SPI_MISO
|
||||
bool "GPIO for MISO (Master In Slave Out)" if LV_TFT_DISPLAY_PROTOCOL_SPI
|
||||
default y if LV_PREDEFINED_PINS_TKOALA
|
||||
default y if LV_PREDEFINED_DISPLAY_M5CORE2
|
||||
help
|
||||
Enable the MISO signal to control the display. You can disable
|
||||
it when the display does not need MISO signal to be controlled.
|
||||
|
@ -810,6 +825,7 @@ menu "LVGL TFT/Epaper Display controller"
|
|||
range 0 43 if IDF_TARGET_ESP32S2
|
||||
|
||||
default 19 if LV_PREDEFINED_PINS_TKOALA
|
||||
default 38 if LV_PREDEFINED_DISPLAY_M5CORE2
|
||||
default 0
|
||||
|
||||
help
|
||||
|
@ -852,6 +868,7 @@ menu "LVGL TFT/Epaper Display controller"
|
|||
range 0 43 if IDF_TARGET_ESP32S2
|
||||
|
||||
default 18 if LV_PREDEFINED_DISPLAY_M5STACK || LV_PREDEFINED_DISPLAY_M5STICK
|
||||
default 18 if LV_PREDEFINED_DISPLAY_M5CORE2
|
||||
default 13 if LV_PREDEFINED_DISPLAY_M5STICKC
|
||||
default 18 if LV_PREDEFINED_DISPLAY_ATAG
|
||||
default 19 if LV_PREDEFINED_DISPLAY_WROVER4
|
||||
|
@ -880,6 +897,7 @@ menu "LVGL TFT/Epaper Display controller"
|
|||
|
||||
default 5 if LV_PREDEFINED_PINS_38V1
|
||||
default 14 if LV_PREDEFINED_DISPLAY_M5STACK || LV_PREDEFINED_DISPLAY_M5STICK
|
||||
default 5 if LV_PREDEFINED_DISPLAY_M5CORE2
|
||||
default 5 if LV_PREDEFINED_DISPLAY_M5STICKC
|
||||
default 22 if LV_PREDEFINED_DISPLAY_WROVER4
|
||||
default 15 if LV_PREDEFINED_DISPLAY_ADA_FEATHERWING
|
||||
|
@ -909,6 +927,7 @@ menu "LVGL TFT/Epaper Display controller"
|
|||
default 19 if LV_PREDEFINED_PINS_38V1
|
||||
default 17 if LV_PREDEFINED_PINS_38V4
|
||||
default 27 if LV_PREDEFINED_DISPLAY_M5STACK || LV_PREDEFINED_DISPLAY_M5STICK
|
||||
default 15 if LV_PREDEFINED_DISPLAY_M5CORE2
|
||||
default 23 if LV_PREDEFINED_DISPLAY_M5STICKC
|
||||
default 21 if LV_PREDEFINED_DISPLAY_WROVER4
|
||||
default 21 if LV_PREDEFINED_DISPLAY_WT32_SC01
|
||||
|
@ -922,8 +941,22 @@ menu "LVGL TFT/Epaper Display controller"
|
|||
help
|
||||
Configure the display DC pin here.
|
||||
|
||||
config LV_DISP_USE_RST
|
||||
bool "Use a GPIO for resetting the display" if LV_TFT_DISPLAY_PROTOCOL_SPI
|
||||
default n if LV_PREDEFINED_DISPLAY_M5CORE2
|
||||
default y
|
||||
help
|
||||
Enable display reset control. Set this if the reset pin of the
|
||||
display is connected to the host. If this is not set, then it is
|
||||
the user's responsibility to ensure that the display is reset
|
||||
before initialisation.
|
||||
You may want to disable this option because the reset pin is not
|
||||
connected, or is connected to an external component such as the
|
||||
power management IC.
|
||||
|
||||
config LV_DISP_PIN_RST
|
||||
int "GPIO for Reset" if LV_TFT_DISPLAY_PROTOCOL_SPI && !LV_DISP_ST7789_SOFT_RESET
|
||||
depends on LV_DISP_USE_RST
|
||||
range 0 39 if IDF_TARGET_ESP32
|
||||
range 0 43 if IDF_TARGET_ESP32S2
|
||||
|
||||
|
@ -959,6 +992,7 @@ menu "LVGL TFT/Epaper Display controller"
|
|||
( LV_PREDEFINED_DISPLAY_NONE && ! ( LV_TFT_DISPLAY_CONTROLLER_SH1107 || LV_TFT_DISPLAY_CONTROLLER_SSD1306 ) ) \
|
||||
|| LV_PREDEFINED_DISPLAY_RPI_MPI3501
|
||||
default y if LV_PREDEFINED_DISPLAY_M5STACK
|
||||
default n if LV_PREDEFINED_DISPLAY_M5CORE2
|
||||
default y if LV_PREDEFINED_DISPLAY_WROVER4
|
||||
default y if LV_PREDEFINED_DISPLAY_ERTFT0356
|
||||
default y if LV_PREDEFINED_DISPLAY_TTGO
|
||||
|
|
|
@ -44,6 +44,8 @@ void disp_driver_init(void)
|
|||
jd79653a_init();
|
||||
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_UC8151D
|
||||
uc8151d_init();
|
||||
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_ILI9163C
|
||||
ili9163c_init();
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -85,6 +87,8 @@ void disp_driver_flush(lv_disp_drv_t * drv, const lv_area_t * area, lv_color_t *
|
|||
jd79653a_lv_fb_flush(drv, area, color_map);
|
||||
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_UC8151D
|
||||
uc8151d_lv_fb_flush(drv, area, color_map);
|
||||
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_ILI9163C
|
||||
ili9163c_flush(drv, area, color_map);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
|
@ -54,6 +54,8 @@ extern "C" {
|
|||
#include "jd79653a.h"
|
||||
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_UC8151D
|
||||
#include "uc8151d.h"
|
||||
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_ILI9163C
|
||||
#include "ili9163c.h"
|
||||
#endif
|
||||
|
||||
/*********************
|
||||
|
|
|
@ -162,19 +162,24 @@ void hx8357_init(void)
|
|||
//Initialize non-SPI GPIOs
|
||||
gpio_pad_select_gpio(HX8357_DC);
|
||||
gpio_set_direction(HX8357_DC, GPIO_MODE_OUTPUT);
|
||||
|
||||
#if HX8357_USE_RST
|
||||
gpio_pad_select_gpio(HX8357_RST);
|
||||
gpio_set_direction(HX8357_RST, GPIO_MODE_OUTPUT);
|
||||
#endif
|
||||
|
||||
#if HX8357_ENABLE_BACKLIGHT_CONTROL
|
||||
gpio_pad_select_gpio(HX8357_BCKL);
|
||||
gpio_set_direction(HX8357_BCKL, GPIO_MODE_OUTPUT);
|
||||
#endif
|
||||
|
||||
#if HX8357_USE_RST
|
||||
//Reset the display
|
||||
gpio_set_level(HX8357_RST, 0);
|
||||
vTaskDelay(10 / portTICK_RATE_MS);
|
||||
gpio_set_level(HX8357_RST, 1);
|
||||
vTaskDelay(120 / portTICK_RATE_MS);
|
||||
#endif
|
||||
|
||||
ESP_LOGI(TAG, "Initialization.");
|
||||
|
||||
|
|
|
@ -37,6 +37,7 @@ extern "C" {
|
|||
*********************/
|
||||
#define HX8357_DC CONFIG_LV_DISP_PIN_DC
|
||||
#define HX8357_RST CONFIG_LV_DISP_PIN_RST
|
||||
#define HX8357_USE_RST CONFIG_LV_DISP_USE_RST
|
||||
#define HX8357_BCKL CONFIG_LV_DISP_PIN_BCKL
|
||||
|
||||
#define HX8357_ENABLE_BACKLIGHT_CONTROL CONFIG_LV_ENABLE_BACKLIGHT_CONTROL
|
||||
|
|
|
@ -198,16 +198,22 @@ void il3820_init(void)
|
|||
/* Initialize non-SPI GPIOs */
|
||||
gpio_pad_select_gpio(IL3820_DC_PIN);
|
||||
gpio_set_direction(IL3820_DC_PIN, GPIO_MODE_OUTPUT);
|
||||
|
||||
#if IL3820_USE_RST
|
||||
gpio_pad_select_gpio(IL3820_RST_PIN);
|
||||
gpio_set_direction(IL3820_RST_PIN, GPIO_MODE_OUTPUT);
|
||||
#endif
|
||||
|
||||
gpio_pad_select_gpio(IL3820_BUSY_PIN);
|
||||
gpio_set_direction(IL3820_BUSY_PIN, GPIO_MODE_INPUT);
|
||||
|
||||
#if IL3820_USE_RST
|
||||
/* Harware reset */
|
||||
gpio_set_level( IL3820_RST_PIN, 0);
|
||||
vTaskDelay(IL3820_RESET_DELAY / portTICK_RATE_MS);
|
||||
gpio_set_level( IL3820_RST_PIN, 1);
|
||||
vTaskDelay(IL3820_RESET_DELAY / portTICK_RATE_MS);
|
||||
#endif
|
||||
|
||||
/* Software reset */
|
||||
il3820_write_cmd(IL3820_CMD_SW_RESET, NULL, 0);
|
||||
|
|
|
@ -28,6 +28,7 @@ extern "C"
|
|||
|
||||
#define IL3820_DC_PIN CONFIG_LV_DISP_PIN_DC
|
||||
#define IL3820_RST_PIN CONFIG_LV_DISP_PIN_RST
|
||||
#define IL3820_USE_RST CONFIG_LV_DISP_USE_RST
|
||||
#define IL3820_BUSY_PIN CONFIG_LV_DISP_PIN_BUSY
|
||||
#define IL3820_BUSY_LEVEL 1
|
||||
|
||||
|
|
270
lvgl_tft/ili9163c.c
Normal file
270
lvgl_tft/ili9163c.c
Normal file
|
@ -0,0 +1,270 @@
|
|||
/**
|
||||
* @file ILI9163C.c
|
||||
*
|
||||
*/
|
||||
|
||||
/*********************
|
||||
* INCLUDES
|
||||
*********************/
|
||||
#include "ili9163c.h"
|
||||
#include "disp_spi.h"
|
||||
#include "driver/gpio.h"
|
||||
#include "esp_log.h"
|
||||
#include "freertos/FreeRTOS.h"
|
||||
#include "freertos/task.h"
|
||||
#include "assert.h"
|
||||
|
||||
/*********************
|
||||
* DEFINES
|
||||
*********************/
|
||||
#define TAG "ILI9163C"
|
||||
|
||||
// ILI9163C specific commands used in init
|
||||
#define ILI9163C_NOP 0x00
|
||||
#define ILI9163C_SWRESET 0x01
|
||||
#define ILI9163C_RDDID 0x04
|
||||
#define ILI9163C_RDDST 0x09
|
||||
|
||||
#define ILI9163C_SLPIN 0x10
|
||||
#define ILI9163C_SLPOUT 0x11
|
||||
#define ILI9163C_PTLON 0x12
|
||||
#define ILI9163C_NORON 0x13
|
||||
|
||||
#define ILI9163C_INVOFF 0x20
|
||||
#define ILI9163C_INVON 0x21
|
||||
#define ILI9163C_CMD_GAMST 0x26
|
||||
#define ILI9163C_DISPOFF 0x28
|
||||
#define ILI9163C_DISPON 0x29
|
||||
#define ILI9163C_CASET 0x2A
|
||||
#define ILI9163C_RASET 0x2B
|
||||
#define ILI9163C_RAMWR 0x2C
|
||||
#define ILI9163C_COLORSET 0x2D
|
||||
#define ILI9163C_RAMRD 0x2E
|
||||
|
||||
#define ILI9163C_PTLAR 0x30
|
||||
#define ILI9163C_VSCRDEF 0x33
|
||||
#define ILI9163C_COLMOD 0x3A
|
||||
#define ILI9163C_MADCTL 0x36
|
||||
#define ILI9163C_VSCRSADD 0x37
|
||||
|
||||
#define ILI9163C_FRMCTR1 0xB1
|
||||
#define ILI9163C_FRMCTR2 0xB2
|
||||
#define ILI9163C_FRMCTR3 0xB3
|
||||
#define ILI9163C_INVCTR 0xB4
|
||||
#define ILI9163C_DISSET5 0xB6
|
||||
#define ILI9163C_SDDC 0xB7
|
||||
|
||||
#define ILI9163C_PWCTR1 0xC0
|
||||
#define ILI9163C_PWCTR2 0xC1
|
||||
#define ILI9163C_PWCTR3 0xC2
|
||||
#define ILI9163C_PWCTR4 0xC3
|
||||
#define ILI9163C_PWCTR5 0xC4
|
||||
#define ILI9163C_VMCTR1 0xC5
|
||||
#define ILI9163C_VMCOFFS 0xC7
|
||||
|
||||
#define ILI9163C_GAMCTL 0xF2
|
||||
|
||||
#define ILI9163C_GMCTRP1 0xE0
|
||||
#define ILI9163C_GMCTRN1 0xE1
|
||||
|
||||
#define ST77XX_MADCTL_MY 0x80
|
||||
#define ST77XX_MADCTL_MX 0x40
|
||||
#define ST77XX_MADCTL_MV 0x20 #define
|
||||
#define ST77XX_MADCTL_ML 0x10
|
||||
#define ST77XX_MADCTL_RGB 0x00
|
||||
#define ST77XX_MADCTL_BGR 0x08
|
||||
|
||||
/**********************
|
||||
* TYPEDEFS
|
||||
**********************/
|
||||
|
||||
/*The LCD needs a bunch of command/argument values to be initialized. They are stored in this struct. */
|
||||
typedef struct
|
||||
{
|
||||
uint8_t cmd;
|
||||
uint8_t data[16];
|
||||
uint8_t databytes; //No of data in data; bit 7 = delay after set; 0xFF = end of cmds.
|
||||
} lcd_init_cmd_t;
|
||||
|
||||
/**********************
|
||||
* STATIC PROTOTYPES
|
||||
**********************/
|
||||
static void ili9163c_set_orientation(uint8_t orientation);
|
||||
|
||||
static void ili9163c_send_cmd(uint8_t cmd);
|
||||
static void ili9163c_send_data(void *data, uint16_t length);
|
||||
static void ili9163c_send_color(void *data, uint16_t length);
|
||||
|
||||
/**********************
|
||||
* STATIC VARIABLES
|
||||
**********************/
|
||||
|
||||
/**********************
|
||||
* MACROS
|
||||
**********************/
|
||||
|
||||
/**********************
|
||||
* GLOBAL FUNCTIONS
|
||||
**********************/
|
||||
|
||||
void ili9163c_init(void)
|
||||
{
|
||||
ESP_LOGD(TAG, "Init");
|
||||
|
||||
lcd_init_cmd_t ili_init_cmds[] = {
|
||||
{ILI9163C_SWRESET, {0}, 0x80}, // Software reset, 0 args, w/delay 120ms
|
||||
{ILI9163C_SLPOUT, {0}, 0x80}, // Out of sleep mode, 0 args, w/delay 5ms
|
||||
{ILI9163C_CMD_GAMST, {0x04}, 1}, // Gamma Curve
|
||||
{ILI9163C_FRMCTR1, {0x0C, 0x14}, 2}, // Frame rate ctrl - normal mode
|
||||
{ILI9163C_INVCTR, {0x07}, 1}, // Display inversion ctrl, 1 arg, no delay:No inversion
|
||||
{ILI9163C_PWCTR1, {0x0C, 0x05}, 2}, // Power control, 2 args, no delay
|
||||
{ILI9163C_PWCTR2, {0x02}, 1}, // Power control, 1 arg
|
||||
{ILI9163C_PWCTR3, {0x02}, 1}, // Power control, 1 arg
|
||||
{ILI9163C_VMCTR1, {0x20, 0x55}, 2}, // Power control, 1 arg, no delay:
|
||||
{ILI9163C_VMCOFFS, {0x40}, 1}, // VCOM Offset
|
||||
#if ILI9163C_INVERT_COLORS == 1
|
||||
{ILI9163C_INVON, {0}, 0}, // set inverted mode
|
||||
#else
|
||||
{ILI9163C_INVOFF, {0}, 0}, // set non-inverted mode
|
||||
#endif
|
||||
{ILI9163C_COLMOD, {0x5}, 1}, // set color mode, 1 arg, no delay: 16-bit color
|
||||
{ILI9163C_SDDC, {0}, 1}, // set source driver direction control
|
||||
{ILI9163C_GAMCTL, {0x01}, 1}, // set source driver direction control
|
||||
{ILI9163C_GMCTRP1, {0x36, 0x29, 0x12, 0x22, 0x1C, 0x15, 0x42, 0xB7, 0x2F, 0x13, 0x12, 0x0A, 0x11, 0x0B, 0x06}, 16}, // 16 args, no delay:
|
||||
{ILI9163C_GMCTRN1, {0x09, 0x16, 0x2D, 0x0D, 0x13, 0x15, 0x40, 0x48, 0x53, 0x0C, 0x1D, 0x25, 0x2E, 0x34, 0x39}, 16}, // 16 args, no delay:
|
||||
{ILI9163C_NORON, {0}, 0x80}, // Normal display on, no args, w/delay 10 ms delay
|
||||
{ILI9163C_DISPON, {0}, 0x80}, // Main screen turn on, no args w/delay 100 ms delay
|
||||
{0, {0}, 0xff}
|
||||
};
|
||||
|
||||
//Initialize non-SPI GPIOs
|
||||
gpio_pad_select_gpio(ILI9163C_DC);
|
||||
gpio_set_direction(ILI9163C_DC, GPIO_MODE_OUTPUT);
|
||||
gpio_pad_select_gpio(ILI9163C_RST);
|
||||
gpio_set_direction(ILI9163C_RST, GPIO_MODE_OUTPUT);
|
||||
|
||||
#if ILI9163C_ENABLE_BACKLIGHT_CONTROL
|
||||
gpio_pad_select_gpio(ILI9163C_BCKL);
|
||||
gpio_set_direction(ILI9163C_BCKL, GPIO_MODE_OUTPUT);
|
||||
#endif
|
||||
//Reset the display
|
||||
gpio_set_level(ILI9163C_RST, 0);
|
||||
vTaskDelay(100 / portTICK_RATE_MS);
|
||||
gpio_set_level(ILI9163C_RST, 1);
|
||||
vTaskDelay(150 / portTICK_RATE_MS);
|
||||
|
||||
//Send all the commands
|
||||
uint16_t cmd = 0;
|
||||
while (ili_init_cmds[cmd].databytes != 0xff)
|
||||
{
|
||||
ili9163c_send_cmd(ili_init_cmds[cmd].cmd);
|
||||
ili9163c_send_data(ili_init_cmds[cmd].data, ili_init_cmds[cmd].databytes & 0x1F);
|
||||
if (ili_init_cmds[cmd].databytes & 0x80)
|
||||
{
|
||||
vTaskDelay(150 / portTICK_RATE_MS);
|
||||
}
|
||||
cmd++;
|
||||
}
|
||||
|
||||
ili9163c_enable_backlight(true);
|
||||
|
||||
ili9163c_set_orientation(CONFIG_LV_DISPLAY_ORIENTATION);
|
||||
}
|
||||
|
||||
void ili9163c_flush(lv_disp_drv_t *drv, const lv_area_t *area, lv_color_t *color_map)
|
||||
{
|
||||
uint8_t data[4];
|
||||
|
||||
/*Column addresses*/
|
||||
ili9163c_send_cmd(ILI9163C_CASET);
|
||||
data[0] = (area->x1 >> 8) & 0xFF;
|
||||
data[1] = area->x1 & 0xFF;
|
||||
data[2] = (area->x2 >> 8) & 0xFF;
|
||||
data[3] = area->x2 & 0xFF;
|
||||
ili9163c_send_data(data, 4);
|
||||
|
||||
/*Page addresses*/
|
||||
ili9163c_send_cmd(ILI9163C_RASET);
|
||||
data[0] = (area->y1 >> 8) & 0xFF;
|
||||
data[1] = area->y1 & 0xFF;
|
||||
data[2] = (area->y2 >> 8) & 0xFF;
|
||||
data[3] = area->y2 & 0xFF;
|
||||
ili9163c_send_data(data, 4);
|
||||
|
||||
/*Memory write*/
|
||||
ili9163c_send_cmd(ILI9163C_RAMWR);
|
||||
|
||||
uint32_t size = lv_area_get_width(area) * lv_area_get_height(area);
|
||||
|
||||
ili9163c_send_color((void *)color_map, size * 2);
|
||||
}
|
||||
|
||||
void ili9163c_enable_backlight(bool backlight)
|
||||
{
|
||||
#if ILI9163C_ENABLE_BACKLIGHT_CONTROL
|
||||
ESP_LOGD(TAG, "%s backlight.", backlight ? "Enabling" : "Disabling");
|
||||
uint32_t tmp = 0;
|
||||
|
||||
#if (ILI9163C_BCKL_ACTIVE_LVL == 1)
|
||||
tmp = backlight ? 1 : 0;
|
||||
#else
|
||||
tmp = backlight ? 0 : 1;
|
||||
#endif
|
||||
|
||||
gpio_set_level(ILI9163C_BCKL, tmp);
|
||||
#endif
|
||||
}
|
||||
|
||||
void ili9163c_sleep_in()
|
||||
{
|
||||
uint8_t data[] = {0x08};
|
||||
ili9163c_send_cmd(ILI9163C_SLPIN);
|
||||
ili9163c_send_data(&data, 1);
|
||||
}
|
||||
|
||||
void ili9163c_sleep_out()
|
||||
{
|
||||
uint8_t data[] = {0x08};
|
||||
ili9163c_send_cmd(ILI9163C_SLPOUT);
|
||||
ili9163c_send_data(&data, 1);
|
||||
}
|
||||
|
||||
/**********************
|
||||
* STATIC FUNCTIONS
|
||||
**********************/
|
||||
|
||||
static void ili9163c_send_cmd(uint8_t cmd)
|
||||
{
|
||||
disp_wait_for_pending_transactions();
|
||||
gpio_set_level(ILI9163C_DC, 0); /*Command mode*/
|
||||
disp_spi_send_data(&cmd, 1);
|
||||
}
|
||||
|
||||
static void ili9163c_send_data(void *data, uint16_t length)
|
||||
{
|
||||
disp_wait_for_pending_transactions();
|
||||
gpio_set_level(ILI9163C_DC, 1); /*Data mode*/
|
||||
disp_spi_send_data(data, length);
|
||||
}
|
||||
|
||||
static void ili9163c_send_color(void *data, uint16_t length)
|
||||
{
|
||||
disp_wait_for_pending_transactions();
|
||||
gpio_set_level(ILI9163C_DC, 1); /*Data mode*/
|
||||
disp_spi_send_colors(data, length);
|
||||
}
|
||||
|
||||
static void ili9163c_set_orientation(uint8_t orientation)
|
||||
{
|
||||
assert(orientation < 4);
|
||||
|
||||
const char *orientation_str[] = {
|
||||
"PORTRAIT", "PORTRAIT_INVERTED", "LANDSCAPE", "LANDSCAPE_INVERTED"};
|
||||
|
||||
ESP_LOGD(TAG, "Display orientation: %s", orientation_str[orientation]);
|
||||
|
||||
uint8_t data[] = {0x48, 0x88, 0xA8, 0x68};
|
||||
|
||||
ili9163c_send_cmd(ILI9163C_MADCTL);
|
||||
ili9163c_send_data((void *)&data[orientation], 1);
|
||||
}
|
65
lvgl_tft/ili9163c.h
Normal file
65
lvgl_tft/ili9163c.h
Normal file
|
@ -0,0 +1,65 @@
|
|||
/**
|
||||
* @file lv_templ.h
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef ILI9163C_H
|
||||
#define ILI9163C_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
/*********************
|
||||
* INCLUDES
|
||||
*********************/
|
||||
#include <stdbool.h>
|
||||
|
||||
#ifdef LV_LVGL_H_INCLUDE_SIMPLE
|
||||
#include "lvgl.h"
|
||||
#else
|
||||
#include "lvgl/lvgl.h"
|
||||
#endif
|
||||
#include "../lvgl_helpers.h"
|
||||
|
||||
/*********************
|
||||
* DEFINES
|
||||
*********************/
|
||||
#define ILI9163C_DC CONFIG_LV_DISP_PIN_DC
|
||||
#define ILI9163C_RST CONFIG_LV_DISP_PIN_RST
|
||||
#define ILI9163C_BCKL CONFIG_LV_DISP_PIN_BCKL
|
||||
|
||||
#define ILI9163C_ENABLE_BACKLIGHT_CONTROL CONFIG_LV_ENABLE_BACKLIGHT_CONTROL
|
||||
|
||||
#if CONFIG_LV_BACKLIGHT_ACTIVE_LVL
|
||||
#define ILI9163C_BCKL_ACTIVE_LVL 1
|
||||
#else
|
||||
#define ILI9163C_BCKL_ACTIVE_LVL 0
|
||||
#endif
|
||||
|
||||
#define ILI9163C_INVERT_COLORS CONFIG_LV_INVERT_COLORS
|
||||
|
||||
/**********************
|
||||
* TYPEDEFS
|
||||
**********************/
|
||||
|
||||
/**********************
|
||||
* GLOBAL PROTOTYPES
|
||||
**********************/
|
||||
|
||||
void ili9163c_init(void);
|
||||
void ili9163c_flush(lv_disp_drv_t *drv, const lv_area_t *area, lv_color_t *color_map);
|
||||
void ili9163c_enable_backlight(bool backlight);
|
||||
void ili9163c_sleep_in(void);
|
||||
void ili9163c_sleep_out(void);
|
||||
|
||||
/**********************
|
||||
* MACROS
|
||||
**********************/
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
#endif
|
||||
|
||||
#endif /*ILI9163C_H*/
|
|
@ -93,18 +93,23 @@ void ili9341_init(void)
|
|||
//Initialize non-SPI GPIOs
|
||||
gpio_pad_select_gpio(ILI9341_DC);
|
||||
gpio_set_direction(ILI9341_DC, GPIO_MODE_OUTPUT);
|
||||
#if ILI9341_USE_RST
|
||||
gpio_pad_select_gpio(ILI9341_RST);
|
||||
gpio_set_direction(ILI9341_RST, GPIO_MODE_OUTPUT);
|
||||
#endif
|
||||
|
||||
#if ILI9341_ENABLE_BACKLIGHT_CONTROL
|
||||
gpio_pad_select_gpio(ILI9341_BCKL);
|
||||
gpio_set_direction(ILI9341_BCKL, GPIO_MODE_OUTPUT);
|
||||
#endif
|
||||
|
||||
#if ILI9341_USE_RST
|
||||
//Reset the display
|
||||
gpio_set_level(ILI9341_RST, 0);
|
||||
vTaskDelay(100 / portTICK_RATE_MS);
|
||||
gpio_set_level(ILI9341_RST, 1);
|
||||
vTaskDelay(100 / portTICK_RATE_MS);
|
||||
#endif
|
||||
|
||||
ESP_LOGI(TAG, "Initialization.");
|
||||
|
||||
|
@ -228,6 +233,8 @@ static void ili9341_set_orientation(uint8_t orientation)
|
|||
|
||||
#if defined CONFIG_LV_PREDEFINED_DISPLAY_M5STACK
|
||||
uint8_t data[] = {0x68, 0x68, 0x08, 0x08};
|
||||
#elif defined (CONFIG_LV_PREDEFINED_DISPLAY_M5CORE2)
|
||||
uint8_t data[] = {0x08, 0x88, 0x28, 0xE8};
|
||||
#elif defined (CONFIG_LV_PREDEFINED_DISPLAY_WROVER4)
|
||||
uint8_t data[] = {0x6C, 0xEC, 0xCC, 0x4C};
|
||||
#elif defined (CONFIG_LV_PREDEFINED_DISPLAY_NONE)
|
||||
|
|
|
@ -26,6 +26,7 @@ extern "C" {
|
|||
* DEFINES
|
||||
*********************/
|
||||
#define ILI9341_DC CONFIG_LV_DISP_PIN_DC
|
||||
#define ILI9341_USE_RST CONFIG_LV_DISP_USE_RST
|
||||
#define ILI9341_RST CONFIG_LV_DISP_PIN_RST
|
||||
#define ILI9341_BCKL CONFIG_LV_DISP_PIN_BCKL
|
||||
|
||||
|
|
|
@ -76,19 +76,24 @@ void ili9481_init(void)
|
|||
//Initialize non-SPI GPIOs
|
||||
gpio_pad_select_gpio(ILI9481_DC);
|
||||
gpio_set_direction(ILI9481_DC, GPIO_MODE_OUTPUT);
|
||||
|
||||
#if ILI9481_USE_RST
|
||||
gpio_pad_select_gpio(ILI9481_RST);
|
||||
gpio_set_direction(ILI9481_RST, GPIO_MODE_OUTPUT);
|
||||
#endif
|
||||
|
||||
#if ILI9481_ENABLE_BACKLIGHT_CONTROL
|
||||
gpio_pad_select_gpio(ILI9481_BCKL);
|
||||
gpio_set_direction(ILI9481_BCKL, GPIO_MODE_OUTPUT);
|
||||
#endif
|
||||
|
||||
#if ILI9481_USE_RST
|
||||
//Reset the display
|
||||
gpio_set_level(ILI9481_RST, 0);
|
||||
vTaskDelay(100 / portTICK_RATE_MS);
|
||||
gpio_set_level(ILI9481_RST, 1);
|
||||
vTaskDelay(100 / portTICK_RATE_MS);
|
||||
#endif
|
||||
|
||||
ESP_LOGI(TAG, "ILI9481 initialization.");
|
||||
|
||||
|
|
|
@ -27,6 +27,7 @@ extern "C" {
|
|||
*********************/
|
||||
#define ILI9481_DC CONFIG_LV_DISP_PIN_DC
|
||||
#define ILI9481_RST CONFIG_LV_DISP_PIN_RST
|
||||
#define ILI9481_USE_RST CONFIG_LV_DISP_USE_RST
|
||||
#define ILI9481_BCKL CONFIG_LV_DISP_PIN_BCKL
|
||||
|
||||
#define ILI9481_ENABLE_BACKLIGHT_CONTROL CONFIG_LV_ENABLE_BACKLIGHT_CONTROL
|
||||
|
|
|
@ -78,19 +78,24 @@ void ili9486_init(void)
|
|||
//Initialize non-SPI GPIOs
|
||||
gpio_pad_select_gpio(ILI9486_DC);
|
||||
gpio_set_direction(ILI9486_DC, GPIO_MODE_OUTPUT);
|
||||
|
||||
#if ILI9486_USE_RST
|
||||
gpio_pad_select_gpio(ILI9486_RST);
|
||||
gpio_set_direction(ILI9486_RST, GPIO_MODE_OUTPUT);
|
||||
#endif
|
||||
|
||||
#if ILI9486_ENABLE_BACKLIGHT_CONTROL
|
||||
gpio_pad_select_gpio(ILI9486_BCKL);
|
||||
gpio_set_direction(ILI9486_BCKL, GPIO_MODE_OUTPUT);
|
||||
#endif
|
||||
|
||||
#if ILI9486_USE_RST
|
||||
//Reset the display
|
||||
gpio_set_level(ILI9486_RST, 0);
|
||||
vTaskDelay(100 / portTICK_RATE_MS);
|
||||
gpio_set_level(ILI9486_RST, 1);
|
||||
vTaskDelay(100 / portTICK_RATE_MS);
|
||||
#endif
|
||||
|
||||
ESP_LOGI(TAG, "ILI9486 Initialization.");
|
||||
|
||||
|
|
|
@ -27,6 +27,7 @@ extern "C" {
|
|||
*********************/
|
||||
#define ILI9486_DC CONFIG_LV_DISP_PIN_DC
|
||||
#define ILI9486_RST CONFIG_LV_DISP_PIN_RST
|
||||
#define ILI9486_USE_RST CONFIG_LV_DISP_USE_RST
|
||||
#define ILI9486_BCKL CONFIG_LV_DISP_PIN_BCKL
|
||||
|
||||
#define ILI9486_ENABLE_BACKLIGHT_CONTROL CONFIG_LV_ENABLE_BACKLIGHT_CONTROL
|
||||
|
|
|
@ -78,19 +78,24 @@ void ili9488_init(void)
|
|||
//Initialize non-SPI GPIOs
|
||||
gpio_pad_select_gpio(ILI9488_DC);
|
||||
gpio_set_direction(ILI9488_DC, GPIO_MODE_OUTPUT);
|
||||
|
||||
#if ILI9488_USE_RST
|
||||
gpio_pad_select_gpio(ILI9488_RST);
|
||||
gpio_set_direction(ILI9488_RST, GPIO_MODE_OUTPUT);
|
||||
#endif
|
||||
|
||||
#if ILI9488_ENABLE_BACKLIGHT_CONTROL
|
||||
gpio_pad_select_gpio(ILI9488_BCKL);
|
||||
gpio_set_direction(ILI9488_BCKL, GPIO_MODE_OUTPUT);
|
||||
#endif
|
||||
|
||||
#if ILI9488_USE_RST
|
||||
//Reset the display
|
||||
gpio_set_level(ILI9488_RST, 0);
|
||||
vTaskDelay(100 / portTICK_RATE_MS);
|
||||
gpio_set_level(ILI9488_RST, 1);
|
||||
vTaskDelay(100 / portTICK_RATE_MS);
|
||||
#endif
|
||||
|
||||
ESP_LOGI(TAG, "ILI9488 initialization.");
|
||||
|
||||
|
|
|
@ -27,6 +27,7 @@ extern "C" {
|
|||
*********************/
|
||||
#define ILI9488_DC CONFIG_LV_DISP_PIN_DC
|
||||
#define ILI9488_RST CONFIG_LV_DISP_PIN_RST
|
||||
#define ILI9488_USE_RST CONFIG_LV_DISP_USE_RST
|
||||
#define ILI9488_BCKL CONFIG_LV_DISP_PIN_BCKL
|
||||
|
||||
#define ILI9488_ENABLE_BACKLIGHT_CONTROL CONFIG_LV_ENABLE_BACKLIGHT_CONTROL
|
||||
|
|
|
@ -159,18 +159,24 @@ void ra8875_init(void)
|
|||
#endif
|
||||
|
||||
// Initialize non-SPI GPIOs
|
||||
|
||||
#if RA8875_USE_RST
|
||||
gpio_pad_select_gpio(RA8875_RST);
|
||||
gpio_set_direction(RA8875_RST, GPIO_MODE_OUTPUT);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_LV_DISP_PIN_BCKL
|
||||
gpio_pad_select_gpio(CONFIG_LV_DISP_PIN_BCKL);
|
||||
gpio_set_direction(CONFIG_LV_DISP_PIN_BCKL, GPIO_MODE_OUTPUT);
|
||||
#endif
|
||||
|
||||
#if RA8875_USE_RST
|
||||
// Reset the RA8875
|
||||
gpio_set_level(RA8875_RST, 0);
|
||||
vTaskDelay(DIV_ROUND_UP(100, portTICK_RATE_MS));
|
||||
gpio_set_level(RA8875_RST, 1);
|
||||
vTaskDelay(DIV_ROUND_UP(100, portTICK_RATE_MS));
|
||||
#endif
|
||||
|
||||
// Initalize RA8875 clocks (SPI must be decelerated before initializing clocks)
|
||||
disp_spi_change_device_speed(SPI_CLOCK_SPEED_SLOW_HZ);
|
||||
|
|
|
@ -25,6 +25,7 @@ extern "C" {
|
|||
* DEFINES
|
||||
*********************/
|
||||
#define RA8875_RST CONFIG_LV_DISP_PIN_RST
|
||||
#define RA8875_USE_RST CONFIG_LV_DISP_USE_RST
|
||||
|
||||
// System & Configuration Registers
|
||||
#define RA8875_REG_PWRR (0x01) // Power and Display Control Register (PWRR)
|
||||
|
|
|
@ -94,6 +94,8 @@ void sh1107_init(void)
|
|||
//Initialize non-SPI GPIOs
|
||||
gpio_pad_select_gpio(SH1107_DC);
|
||||
gpio_set_direction(SH1107_DC, GPIO_MODE_OUTPUT);
|
||||
|
||||
#if SH1107_USE_RST
|
||||
gpio_pad_select_gpio(SH1107_RST);
|
||||
gpio_set_direction(SH1107_RST, GPIO_MODE_OUTPUT);
|
||||
|
||||
|
@ -102,6 +104,7 @@ void sh1107_init(void)
|
|||
vTaskDelay(100 / portTICK_RATE_MS);
|
||||
gpio_set_level(SH1107_RST, 1);
|
||||
vTaskDelay(100 / portTICK_RATE_MS);
|
||||
#endif
|
||||
|
||||
//Send all the commands
|
||||
uint16_t cmd = 0;
|
||||
|
|
|
@ -27,6 +27,7 @@ extern "C" {
|
|||
*********************/
|
||||
#define SH1107_DC CONFIG_LV_DISP_PIN_DC
|
||||
#define SH1107_RST CONFIG_LV_DISP_PIN_RST
|
||||
#define SH1107_USE_RST CONFIG_LV_DISP_USE_RST
|
||||
|
||||
/**********************
|
||||
* TYPEDEFS
|
||||
|
|
|
@ -99,6 +99,8 @@ void st7735s_init(void)
|
|||
//Initialize non-SPI GPIOs
|
||||
gpio_pad_select_gpio(ST7735S_DC);
|
||||
gpio_set_direction(ST7735S_DC, GPIO_MODE_OUTPUT);
|
||||
|
||||
#if ST7735S_USE_RST
|
||||
gpio_pad_select_gpio(ST7735S_RST);
|
||||
gpio_set_direction(ST7735S_RST, GPIO_MODE_OUTPUT);
|
||||
|
||||
|
@ -107,6 +109,7 @@ void st7735s_init(void)
|
|||
vTaskDelay(100 / portTICK_RATE_MS);
|
||||
gpio_set_level(ST7735S_RST, 1);
|
||||
vTaskDelay(100 / portTICK_RATE_MS);
|
||||
#endif
|
||||
|
||||
ESP_LOGI(TAG, "ST7735S initialization.");
|
||||
|
||||
|
|
|
@ -27,6 +27,7 @@ extern "C" {
|
|||
|
||||
#define ST7735S_DC CONFIG_LV_DISP_PIN_DC
|
||||
#define ST7735S_RST CONFIG_LV_DISP_PIN_RST
|
||||
#define ST7735S_USE_RST CONFIG_LV_DISP_USE_RST
|
||||
|
||||
#define AXP192_SDA CONFIG_LV_AXP192_PIN_SDA
|
||||
#define AXP192_SCL CONFIG_LV_AXP192_PIN_SCL
|
||||
|
|
|
@ -35,8 +35,6 @@ typedef struct {
|
|||
**********************/
|
||||
static void st7789_set_orientation(uint8_t orientation);
|
||||
|
||||
static void st7789_send_cmd(uint8_t cmd);
|
||||
static void st7789_send_data(void *data, uint16_t length);
|
||||
static void st7789_send_color(void *data, uint16_t length);
|
||||
|
||||
/**********************
|
||||
|
@ -91,7 +89,7 @@ void st7789_init(void)
|
|||
gpio_pad_select_gpio(ST7789_DC);
|
||||
gpio_set_direction(ST7789_DC, GPIO_MODE_OUTPUT);
|
||||
|
||||
#if !defined(CONFIG_LV_DISP_ST7789_SOFT_RESET)
|
||||
#if !defined(ST7789_SOFT_RST)
|
||||
gpio_pad_select_gpio(ST7789_RST);
|
||||
gpio_set_direction(ST7789_RST, GPIO_MODE_OUTPUT);
|
||||
#endif
|
||||
|
@ -102,7 +100,7 @@ void st7789_init(void)
|
|||
#endif
|
||||
|
||||
//Reset the display
|
||||
#if !defined(CONFIG_LV_DISP_ST7789_SOFT_RESET)
|
||||
#if !defined(ST7789_SOFT_RST)
|
||||
gpio_set_level(ST7789_RST, 0);
|
||||
vTaskDelay(100 / portTICK_RATE_MS);
|
||||
gpio_set_level(ST7789_RST, 1);
|
||||
|
@ -201,14 +199,14 @@ void st7789_flush(lv_disp_drv_t * drv, const lv_area_t * area, lv_color_t * colo
|
|||
/**********************
|
||||
* STATIC FUNCTIONS
|
||||
**********************/
|
||||
static void st7789_send_cmd(uint8_t cmd)
|
||||
void st7789_send_cmd(uint8_t cmd)
|
||||
{
|
||||
disp_wait_for_pending_transactions();
|
||||
gpio_set_level(ST7789_DC, 0);
|
||||
disp_spi_send_data(&cmd, 1);
|
||||
}
|
||||
|
||||
static void st7789_send_data(void * data, uint16_t length)
|
||||
void st7789_send_data(void * data, uint16_t length)
|
||||
{
|
||||
disp_wait_for_pending_transactions();
|
||||
gpio_set_level(ST7789_DC, 1);
|
||||
|
|
|
@ -25,6 +25,15 @@ extern "C"
|
|||
#define ST7789_RST CONFIG_LV_DISP_PIN_RST
|
||||
#define ST7789_BCKL CONFIG_LV_DISP_PIN_BCKL
|
||||
|
||||
#if CONFIG_LV_DISP_USE_RST
|
||||
#if CONFIG_LV_DISP_ST7789_SOFT_RESET
|
||||
#define ST7789_SOFT_RST
|
||||
#endif
|
||||
#else
|
||||
#define ST7789_SOFT_RST
|
||||
#endif
|
||||
|
||||
|
||||
#define ST7789_ENABLE_BACKLIGHT_CONTROL CONFIG_LV_ENABLE_BACKLIGHT_CONTROL
|
||||
#define ST7789_INVERT_COLORS CONFIG_LV_INVERT_COLORS
|
||||
|
||||
|
@ -114,6 +123,9 @@ void st7789_init(void);
|
|||
void st7789_flush(lv_disp_drv_t *drv, const lv_area_t *area, lv_color_t *color_map);
|
||||
void st7789_enable_backlight(bool backlight);
|
||||
|
||||
void st7789_send_cmd(uint8_t cmd);
|
||||
void st7789_send_data(void *data, uint16_t length);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
#endif
|
||||
|
|
|
@ -94,18 +94,24 @@ void st7796s_init(void)
|
|||
//Initialize non-SPI GPIOs
|
||||
gpio_pad_select_gpio(ST7796S_DC);
|
||||
gpio_set_direction(ST7796S_DC, GPIO_MODE_OUTPUT);
|
||||
|
||||
#if ST7796S_USE_RST
|
||||
gpio_pad_select_gpio(ST7796S_RST);
|
||||
gpio_set_direction(ST7796S_RST, GPIO_MODE_OUTPUT);
|
||||
#endif
|
||||
|
||||
#if ST7796S_ENABLE_BACKLIGHT_CONTROL
|
||||
gpio_pad_select_gpio(ST7796S_BCKL);
|
||||
gpio_set_direction(ST7796S_BCKL, GPIO_MODE_OUTPUT);
|
||||
#endif
|
||||
|
||||
#if ST7796S_USE_RST
|
||||
//Reset the display
|
||||
gpio_set_level(ST7796S_RST, 0);
|
||||
vTaskDelay(100 / portTICK_RATE_MS);
|
||||
gpio_set_level(ST7796S_RST, 1);
|
||||
vTaskDelay(100 / portTICK_RATE_MS);
|
||||
#endif
|
||||
|
||||
ESP_LOGI(TAG, "Initialization.");
|
||||
|
||||
|
|
|
@ -28,6 +28,7 @@ extern "C"
|
|||
*********************/
|
||||
#define ST7796S_DC CONFIG_LV_DISP_PIN_DC
|
||||
#define ST7796S_RST CONFIG_LV_DISP_PIN_RST
|
||||
#define ST7796S_USE_RST CONFIG_LV_DISP_USE_RST
|
||||
#define ST7796S_BCKL CONFIG_LV_DISP_PIN_BCKL
|
||||
|
||||
#define ST7796S_ENABLE_BACKLIGHT_CONTROL CONFIG_LV_ENABLE_BACKLIGHT_CONTROL
|
||||
|
|
Loading…
Reference in a new issue