Merge pull request #58 from ropg/master

GPIO display reset optional / Added M5Core2 / White space fixes
This commit is contained in:
Gabor Kiss-Vamosi 2021-06-07 21:32:08 +02:00 committed by GitHub
commit 54243621c3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
31 changed files with 199 additions and 77 deletions

6
.gitignore vendored
View file

@ -50,3 +50,9 @@ modules.order
Module.symvers Module.symvers
Mkfile.old Mkfile.old
dkms.conf dkms.conf
# MacOS
.DS_Store
# ESP-IDF build dir
build

View file

@ -51,6 +51,7 @@ and sets the gpio numbers for the interface.
|---------------------------|-----------------------|-----------|-----------|-----------| |---------------------------|-----------------------|-----------|-----------|-----------|
| ESP Wrover Kit v4.1 | ILI9341 | SPI | 240 | 320 | | ESP Wrover Kit v4.1 | ILI9341 | SPI | 240 | 320 |
| M5Stack | ILI9341 | SPI | 240 | 320 | | M5Stack | ILI9341 | SPI | 240 | 320 |
| M5Core2 | ILI9341 | SPI | 240 | 320 |
| M5Stick | SH1107 | SPI | - | - | | M5Stick | SH1107 | SPI | - | - |
| M5StickC | ST7735S | SPI | 80 | 160 | | M5StickC | ST7735S | SPI | 80 | 160 |
| Adafruit 3.5 Featherwing | HX8357 | SPI | 480 | 320 | | Adafruit 3.5 Featherwing | HX8357 | SPI | 480 | 320 |

View file

@ -144,7 +144,7 @@ void DELAY_MS(uint16_t ms)
vTaskDelay(ms / portTICK_PERIOD_MS); vTaskDelay(ms / portTICK_PERIOD_MS);
} }
#if EVE_USE_PDN
void EVE_pdn_set(void) void EVE_pdn_set(void)
{ {
gpio_set_level(EVE_PDN, 0); /* Power-Down low */ 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 */ gpio_set_level(EVE_PDN, 1); /* Power-Down high */
} }
#endif
void spi_acquire() void spi_acquire()
{ {
@ -841,11 +841,13 @@ uint8_t EVE_init(void)
uint8_t chipid = 0; uint8_t chipid = 0;
uint16_t timeout = 0; uint16_t timeout = 0;
#if EVE_USE_PDN
EVE_pdn_set(); EVE_pdn_set();
DELAY_MS(6); /* minimum time for power-down is 5ms */ DELAY_MS(6); /* minimum time for power-down is 5ms */
EVE_pdn_clear(); EVE_pdn_clear();
DELAY_MS(21); /* minimum time to allow from rising PD_N to first access is 20ms */ 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 */ /* EVE_cmdWrite(EVE_CORERST,0); */ /* reset, only required for warm-start if PowerDown line is not used */

View file

@ -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 #define BLOCK_TRANSFER_SIZE 3840 // block transfer size when write data to CMD buffer
void DELAY_MS(uint16_t ms); void DELAY_MS(uint16_t ms);
#if EVE_USE_PDN
void EVE_pdn_set(void); void EVE_pdn_set(void);
void EVE_pdn_clear(void); void EVE_pdn_clear(void);
#endif
void spi_acquire(); void spi_acquire();
void spi_release(); void spi_release();
@ -64,7 +68,7 @@ void EVE_get_cmdoffset(void);
/* commands to operate on memory: */ /* commands to operate on memory: */
void EVE_cmd_memzero(uint32_t ptr, uint32_t num); void EVE_cmd_memzero(uint32_t ptr, uint32_t num);
void EVE_cmd_memset(uint32_t ptr, uint8_t value, uint32_t num); void EVE_cmd_memset(uint32_t ptr, uint8_t value, uint32_t num);
void EVE_cmd_memwrite(uint32_t dest, uint32_t num, const uint8_t *data); void EVE_cmd_memwrite(uint32_t dest, uint32_t num, const uint8_t *data);
void EVE_cmd_memcpy(uint32_t dest, uint32_t src, uint32_t num); void EVE_cmd_memcpy(uint32_t dest, uint32_t src, uint32_t num);
#if FT81X_FULL #if FT81X_FULL

View file

@ -44,11 +44,12 @@ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR TH
#include "FT81x.h" #include "FT81x.h"
#define EVE_CLK DISP_SPI_CLK // orange #define EVE_CLK DISP_SPI_CLK // orange
#define EVE_MISO DISP_SPI_MISO // yellow #define EVE_MISO DISP_SPI_MISO // yellow
#define EVE_MOSI DISP_SPI_MOSI // green #define EVE_MOSI DISP_SPI_MOSI // green
#define EVE_CS DISP_SPI_CS // blue #define EVE_CS DISP_SPI_CS // blue
#define EVE_PDN CONFIG_LV_DISP_PIN_RST // grey #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)) #define SPI_TRANSER_SIZE (DISP_BUF_SIZE * (LV_COLOR_DEPTH / 8))

View file

@ -250,7 +250,7 @@ void TFT_bitmap_display(void)
EVE_cmd_dl(TAG(0)); EVE_cmd_dl(TAG(0));
EVE_cmd_dl(DL_DISPLAY); /* instruct the graphics processor to show the list */ EVE_cmd_dl(DL_DISPLAY); /* instruct the graphics processor to show the list */
EVE_cmd_dl(CMD_SWAP); /* make this list active */ EVE_cmd_dl(CMD_SWAP); /* make this list active */
EVE_end_cmd_burst(); /* stop writing to the cmd-fifo */ EVE_end_cmd_burst(); /* stop writing to the cmd-fifo */
@ -262,12 +262,18 @@ void TFT_bitmap_display(void)
void FT81x_init(void) void FT81x_init(void)
{ {
#if EVE_USE_PDN
gpio_pad_select_gpio(EVE_PDN); gpio_pad_select_gpio(EVE_PDN);
#endif
gpio_set_level(EVE_CS, 1); gpio_set_level(EVE_CS, 1);
#if EVE_USE_PDN
gpio_set_direction(EVE_PDN, GPIO_MODE_OUTPUT); gpio_set_direction(EVE_PDN, GPIO_MODE_OUTPUT);
#endif
spi_acquire(); spi_acquire();
if(EVE_init()) if(EVE_init())
{ {
tft_active = 1; tft_active = 1;
@ -278,7 +284,7 @@ void FT81x_init(void)
EVE_cmd_memset(SCREEN_BITMAP_ADDR, BLACK, SCREEN_BUFFER_SIZE); // clear screen buffer EVE_cmd_memset(SCREEN_BITMAP_ADDR, BLACK, SCREEN_BUFFER_SIZE); // clear screen buffer
EVE_cmd_execute(); EVE_cmd_execute();
TFT_bitmap_display(); // set DL for fullscreen bitmap display TFT_bitmap_display(); // set DL for fullscreen bitmap display
} }
@ -320,4 +326,4 @@ void TFT_WriteBitmap(uint8_t* Bitmap, uint16_t X, uint16_t Y, uint16_t Width, ui
void FT81x_flush(lv_disp_drv_t * drv, const lv_area_t * area, lv_color_t * color_map) void FT81x_flush(lv_disp_drv_t * drv, const lv_area_t * area, lv_color_t * color_map)
{ {
TFT_WriteBitmap((uint8_t*)color_map, area->x1, area->y1, lv_area_get_width(area), lv_area_get_height(area)); TFT_WriteBitmap((uint8_t*)color_map, area->x1, area->y1, lv_area_get_width(area), lv_area_get_height(area));
} }

View file

@ -124,18 +124,24 @@ void GC9A01_init(void)
//Initialize non-SPI GPIOs //Initialize non-SPI GPIOs
gpio_pad_select_gpio(GC9A01_DC); gpio_pad_select_gpio(GC9A01_DC);
gpio_set_direction(GC9A01_DC, GPIO_MODE_OUTPUT); gpio_set_direction(GC9A01_DC, GPIO_MODE_OUTPUT);
#if GC9A01_USE_RST
gpio_pad_select_gpio(GC9A01_RST); gpio_pad_select_gpio(GC9A01_RST);
gpio_set_direction(GC9A01_RST, GPIO_MODE_OUTPUT); gpio_set_direction(GC9A01_RST, GPIO_MODE_OUTPUT);
#endif
#if GC9A01_ENABLE_BACKLIGHT_CONTROL #if GC9A01_ENABLE_BACKLIGHT_CONTROL
gpio_pad_select_gpio(GC9A01_BCKL); gpio_pad_select_gpio(GC9A01_BCKL);
gpio_set_direction(GC9A01_BCKL, GPIO_MODE_OUTPUT); gpio_set_direction(GC9A01_BCKL, GPIO_MODE_OUTPUT);
#endif #endif
#if GC9A01_USE_RST
//Reset the display //Reset the display
gpio_set_level(GC9A01_RST, 0); gpio_set_level(GC9A01_RST, 0);
vTaskDelay(100 / portTICK_RATE_MS); vTaskDelay(100 / portTICK_RATE_MS);
gpio_set_level(GC9A01_RST, 1); gpio_set_level(GC9A01_RST, 1);
vTaskDelay(100 / portTICK_RATE_MS); vTaskDelay(100 / portTICK_RATE_MS);
#endif
ESP_LOGI(TAG, "Initialization."); ESP_LOGI(TAG, "Initialization.");
@ -167,7 +173,7 @@ void GC9A01_flush(lv_disp_drv_t * drv, const lv_area_t * area, lv_color_t * colo
uint8_t data[4]; uint8_t data[4];
/*Column addresses*/ /*Column addresses*/
GC9A01_send_cmd(0x2A); //0x2A GC9A01_send_cmd(0x2A); //0x2A
data[0] = (area->x1 >> 8) & 0xFF; data[0] = (area->x1 >> 8) & 0xFF;
data[1] = area->x1 & 0xFF; data[1] = area->x1 & 0xFF;
data[2] = (area->x2 >> 8) & 0xFF; data[2] = (area->x2 >> 8) & 0xFF;
@ -175,7 +181,7 @@ void GC9A01_flush(lv_disp_drv_t * drv, const lv_area_t * area, lv_color_t * colo
GC9A01_send_data(data, 4); GC9A01_send_data(data, 4);
/*Page addresses*/ /*Page addresses*/
GC9A01_send_cmd(0x2B); //0x2B GC9A01_send_cmd(0x2B); //0x2B
data[0] = (area->y1 >> 8) & 0xFF; data[0] = (area->y1 >> 8) & 0xFF;
data[1] = area->y1 & 0xFF; data[1] = area->y1 & 0xFF;
data[2] = (area->y2 >> 8) & 0xFF; data[2] = (area->y2 >> 8) & 0xFF;
@ -183,7 +189,7 @@ void GC9A01_flush(lv_disp_drv_t * drv, const lv_area_t * area, lv_color_t * colo
GC9A01_send_data(data, 4); GC9A01_send_data(data, 4);
/*Memory write*/ /*Memory write*/
GC9A01_send_cmd(0x2C); //0x2C GC9A01_send_cmd(0x2C); //0x2C
uint32_t size = lv_area_get_width(area) * lv_area_get_height(area); uint32_t size = lv_area_get_width(area) * lv_area_get_height(area);
@ -211,7 +217,7 @@ void GC9A01_sleep_in()
{ {
uint8_t data[] = {0x08}; uint8_t data[] = {0x08};
GC9A01_send_cmd(0x10); //0x10 Enter Sleep Mode GC9A01_send_cmd(0x10); //0x10 Enter Sleep Mode
GC9A01_send_data(&data, 1); GC9A01_send_data(&data, 1);
} }
void GC9A01_sleep_out() void GC9A01_sleep_out()

View file

@ -25,9 +25,10 @@ extern "C" {
/********************* /*********************
* DEFINES * DEFINES
*********************/ *********************/
#define GC9A01_DC CONFIG_LV_DISP_PIN_DC #define GC9A01_DC CONFIG_LV_DISP_PIN_DC
#define GC9A01_RST CONFIG_LV_DISP_PIN_RST #define GC9A01_RST CONFIG_LV_DISP_PIN_RST
#define GC9A01_BCKL CONFIG_LV_DISP_PIN_BCKL #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 #define GC9A01_ENABLE_BACKLIGHT_CONTROL CONFIG_LV_ENABLE_BACKLIGHT_CONTROL

View file

@ -21,6 +21,10 @@ menu "LVGL TFT Display controller"
bool "M5Stack" bool "M5Stack"
select LV_TFT_DISPLAY_CONTROLLER_ILI9341 select LV_TFT_DISPLAY_CONTROLLER_ILI9341
select LV_TFT_DISPLAY_PROTOCOL_SPI 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 config LV_PREDEFINED_DISPLAY_M5STICK
bool "M5Stick" bool "M5Stick"
select LV_TFT_DISPLAY_CONTROLLER_SH1107 select LV_TFT_DISPLAY_CONTROLLER_SH1107
@ -744,11 +748,11 @@ menu "LVGL TFT Display controller"
config LV_DISP_ST7789_SOFT_RESET config LV_DISP_ST7789_SOFT_RESET
bool "Soft reset - use software reset instead of reset pin" bool "Soft reset - use software reset instead of reset pin"
depends on LV_TFT_DISPLAY_CONTROLLER_ST7789 depends on LV_TFT_DISPLAY_CONTROLLER_ST7789
default n default n
help help
Use software reset and ignores configured reset pin (some hardware does not use a reset pin). Use software reset and ignores configured reset pin (some hardware does not use a reset pin).
endmenu endmenu
# menu will be visible only when LV_PREDEFINED_DISPLAY_NONE is y # menu will be visible only when LV_PREDEFINED_DISPLAY_NONE is y
@ -763,6 +767,7 @@ menu "LVGL TFT Display controller"
default 23 if LV_PREDEFINED_DISPLAY_WROVER4 default 23 if LV_PREDEFINED_DISPLAY_WROVER4
default 23 if LV_PREDEFINED_DISPLAY_ATAG default 23 if LV_PREDEFINED_DISPLAY_ATAG
default 23 if LV_PREDEFINED_DISPLAY_M5STACK || LV_PREDEFINED_DISPLAY_M5STICK 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 15 if LV_PREDEFINED_DISPLAY_M5STICKC
default 18 if LV_PREDEFINED_DISPLAY_ADA_FEATHERWING default 18 if LV_PREDEFINED_DISPLAY_ADA_FEATHERWING
default 23 if LV_PREDEFINED_PINS_TKOALA default 23 if LV_PREDEFINED_PINS_TKOALA
@ -777,6 +782,7 @@ menu "LVGL TFT Display controller"
config LV_DISPLAY_USE_SPI_MISO config LV_DISPLAY_USE_SPI_MISO
bool "GPIO for MISO (Master In Slave Out)" if LV_TFT_DISPLAY_PROTOCOL_SPI 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_PINS_TKOALA
default y if LV_PREDEFINED_DISPLAY_M5CORE2
help help
Enable the MISO signal to control the display. You can disable Enable the MISO signal to control the display. You can disable
it when the display does not need MISO signal to be controlled. it when the display does not need MISO signal to be controlled.
@ -788,6 +794,7 @@ menu "LVGL TFT Display controller"
range 0 43 if IDF_TARGET_ESP32S2 range 0 43 if IDF_TARGET_ESP32S2
default 19 if LV_PREDEFINED_PINS_TKOALA default 19 if LV_PREDEFINED_PINS_TKOALA
default 38 if LV_PREDEFINED_DISPLAY_M5CORE2
default 0 default 0
help help
@ -830,6 +837,7 @@ menu "LVGL TFT Display controller"
range 0 43 if IDF_TARGET_ESP32S2 range 0 43 if IDF_TARGET_ESP32S2
default 18 if LV_PREDEFINED_DISPLAY_M5STACK || LV_PREDEFINED_DISPLAY_M5STICK 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 13 if LV_PREDEFINED_DISPLAY_M5STICKC
default 18 if LV_PREDEFINED_DISPLAY_ATAG default 18 if LV_PREDEFINED_DISPLAY_ATAG
default 19 if LV_PREDEFINED_DISPLAY_WROVER4 default 19 if LV_PREDEFINED_DISPLAY_WROVER4
@ -858,6 +866,7 @@ menu "LVGL TFT Display controller"
default 5 if LV_PREDEFINED_PINS_38V1 default 5 if LV_PREDEFINED_PINS_38V1
default 14 if LV_PREDEFINED_DISPLAY_M5STACK || LV_PREDEFINED_DISPLAY_M5STICK 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 5 if LV_PREDEFINED_DISPLAY_M5STICKC
default 22 if LV_PREDEFINED_DISPLAY_WROVER4 default 22 if LV_PREDEFINED_DISPLAY_WROVER4
default 15 if LV_PREDEFINED_DISPLAY_ADA_FEATHERWING default 15 if LV_PREDEFINED_DISPLAY_ADA_FEATHERWING
@ -887,6 +896,7 @@ menu "LVGL TFT Display controller"
default 19 if LV_PREDEFINED_PINS_38V1 default 19 if LV_PREDEFINED_PINS_38V1
default 17 if LV_PREDEFINED_PINS_38V4 default 17 if LV_PREDEFINED_PINS_38V4
default 27 if LV_PREDEFINED_DISPLAY_M5STACK || LV_PREDEFINED_DISPLAY_M5STICK 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 23 if LV_PREDEFINED_DISPLAY_M5STICKC
default 21 if LV_PREDEFINED_DISPLAY_WROVER4 default 21 if LV_PREDEFINED_DISPLAY_WROVER4
default 21 if LV_PREDEFINED_DISPLAY_WT32_SC01 default 21 if LV_PREDEFINED_DISPLAY_WT32_SC01
@ -900,8 +910,22 @@ menu "LVGL TFT Display controller"
help help
Configure the display DC pin here. 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 config LV_DISP_PIN_RST
int "GPIO for Reset" if LV_TFT_DISPLAY_PROTOCOL_SPI && !LV_DISP_ST7789_SOFT_RESET 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 39 if IDF_TARGET_ESP32
range 0 43 if IDF_TARGET_ESP32S2 range 0 43 if IDF_TARGET_ESP32S2
@ -937,6 +961,7 @@ menu "LVGL TFT Display controller"
( LV_PREDEFINED_DISPLAY_NONE && ! ( LV_TFT_DISPLAY_CONTROLLER_SH1107 || LV_TFT_DISPLAY_CONTROLLER_SSD1306 ) ) \ ( LV_PREDEFINED_DISPLAY_NONE && ! ( LV_TFT_DISPLAY_CONTROLLER_SH1107 || LV_TFT_DISPLAY_CONTROLLER_SSD1306 ) ) \
|| LV_PREDEFINED_DISPLAY_RPI_MPI3501 || LV_PREDEFINED_DISPLAY_RPI_MPI3501
default y if LV_PREDEFINED_DISPLAY_M5STACK 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_WROVER4
default y if LV_PREDEFINED_DISPLAY_ERTFT0356 default y if LV_PREDEFINED_DISPLAY_ERTFT0356
default y if LV_PREDEFINED_DISPLAY_TTGO default y if LV_PREDEFINED_DISPLAY_TTGO

View file

@ -162,19 +162,24 @@ void hx8357_init(void)
//Initialize non-SPI GPIOs //Initialize non-SPI GPIOs
gpio_pad_select_gpio(HX8357_DC); gpio_pad_select_gpio(HX8357_DC);
gpio_set_direction(HX8357_DC, GPIO_MODE_OUTPUT); gpio_set_direction(HX8357_DC, GPIO_MODE_OUTPUT);
#if HX8357_USE_RST
gpio_pad_select_gpio(HX8357_RST); gpio_pad_select_gpio(HX8357_RST);
gpio_set_direction(HX8357_RST, GPIO_MODE_OUTPUT); gpio_set_direction(HX8357_RST, GPIO_MODE_OUTPUT);
#endif
#if HX8357_ENABLE_BACKLIGHT_CONTROL #if HX8357_ENABLE_BACKLIGHT_CONTROL
gpio_pad_select_gpio(HX8357_BCKL); gpio_pad_select_gpio(HX8357_BCKL);
gpio_set_direction(HX8357_BCKL, GPIO_MODE_OUTPUT); gpio_set_direction(HX8357_BCKL, GPIO_MODE_OUTPUT);
#endif #endif
#if HX8357_USE_RST
//Reset the display //Reset the display
gpio_set_level(HX8357_RST, 0); gpio_set_level(HX8357_RST, 0);
vTaskDelay(10 / portTICK_RATE_MS); vTaskDelay(10 / portTICK_RATE_MS);
gpio_set_level(HX8357_RST, 1); gpio_set_level(HX8357_RST, 1);
vTaskDelay(120 / portTICK_RATE_MS); vTaskDelay(120 / portTICK_RATE_MS);
#endif
ESP_LOGI(TAG, "Initialization."); ESP_LOGI(TAG, "Initialization.");

View file

@ -35,9 +35,10 @@ extern "C" {
/********************* /*********************
* DEFINES * DEFINES
*********************/ *********************/
#define HX8357_DC CONFIG_LV_DISP_PIN_DC #define HX8357_DC CONFIG_LV_DISP_PIN_DC
#define HX8357_RST CONFIG_LV_DISP_PIN_RST #define HX8357_RST CONFIG_LV_DISP_PIN_RST
#define HX8357_BCKL CONFIG_LV_DISP_PIN_BCKL #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 #define HX8357_ENABLE_BACKLIGHT_CONTROL CONFIG_LV_ENABLE_BACKLIGHT_CONTROL
#define HX8357_INVERT_COLORS CONFIG_LV_INVERT_COLORS #define HX8357_INVERT_COLORS CONFIG_LV_INVERT_COLORS

View file

@ -73,9 +73,9 @@ static uint8_t il3820_lut_initial[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
}; };
static uint8_t il3820_lut_default[] = { static uint8_t il3820_lut_default[] = {
0x10, 0x18, 0x18, 0x08, 0x18, 0x18, 0x10, 0x18, 0x18, 0x08, 0x18, 0x18,
0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x13, 0x14, 0x44, 0x12, 0x00, 0x00, 0x13, 0x14, 0x44, 0x12,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
}; };
@ -113,7 +113,7 @@ void il3820_flush(lv_disp_drv_t *drv, const lv_area_t *area, lv_color_t *color_m
uint8_t *buffer = (uint8_t*) color_map; uint8_t *buffer = (uint8_t*) color_map;
uint16_t x_addr_counter = 0; uint16_t x_addr_counter = 0;
uint16_t y_addr_counter = 0; uint16_t y_addr_counter = 0;
/* Configure entry mode */ /* Configure entry mode */
il3820_write_cmd(IL3820_CMD_ENTRY_MODE, &il3820_scan_mode, 1); il3820_write_cmd(IL3820_CMD_ENTRY_MODE, &il3820_scan_mode, 1);
@ -131,7 +131,7 @@ void il3820_flush(lv_disp_drv_t *drv, const lv_area_t *area, lv_color_t *color_m
il3820_set_cursor(x_addr_counter, y_addr_counter); il3820_set_cursor(x_addr_counter, y_addr_counter);
il3820_send_cmd(IL3820_CMD_WRITE_RAM); il3820_send_cmd(IL3820_CMD_WRITE_RAM);
/* Write the pixel data to graphic RAM, linelen bytes at the time. */ /* Write the pixel data to graphic RAM, linelen bytes at the time. */
for(size_t row = 0; row <= (EPD_PANEL_HEIGHT - 1); row++){ for(size_t row = 0; row <= (EPD_PANEL_HEIGHT - 1); row++){
il3820_send_data(buffer, linelen); il3820_send_data(buffer, linelen);
@ -139,7 +139,7 @@ void il3820_flush(lv_disp_drv_t *drv, const lv_area_t *area, lv_color_t *color_m
} }
il3820_set_window(0, EPD_PANEL_WIDTH - 1, 0, EPD_PANEL_HEIGHT - 1); il3820_set_window(0, EPD_PANEL_WIDTH - 1, 0, EPD_PANEL_HEIGHT - 1);
il3820_update_display(); il3820_update_display();
/* IMPORTANT!!! /* IMPORTANT!!!
@ -152,7 +152,7 @@ void il3820_flush(lv_disp_drv_t *drv, const lv_area_t *area, lv_color_t *color_m
* BIT_SET(byte_index, bit_index) clears the bit_index pixel at byte_index of * BIT_SET(byte_index, bit_index) clears the bit_index pixel at byte_index of
* the display buffer. * the display buffer.
* BIT_CLEAR(byte_index, bit_index) sets the bit_index pixel at the byte_index * BIT_CLEAR(byte_index, bit_index) sets the bit_index pixel at the byte_index
* of the display buffer. */ * of the display buffer. */
void il3820_set_px_cb(lv_disp_drv_t * disp_drv, uint8_t* buf, void il3820_set_px_cb(lv_disp_drv_t * disp_drv, uint8_t* buf,
lv_coord_t buf_w, lv_coord_t x, lv_coord_t y, lv_coord_t buf_w, lv_coord_t x, lv_coord_t y,
lv_color_t color, lv_opa_t opa) lv_color_t color, lv_opa_t opa)
@ -198,20 +198,26 @@ void il3820_init(void)
/* Initialize non-SPI GPIOs */ /* Initialize non-SPI GPIOs */
gpio_pad_select_gpio(IL3820_DC_PIN); gpio_pad_select_gpio(IL3820_DC_PIN);
gpio_set_direction(IL3820_DC_PIN, GPIO_MODE_OUTPUT); gpio_set_direction(IL3820_DC_PIN, GPIO_MODE_OUTPUT);
#if IL3820_USE_RST
gpio_pad_select_gpio(IL3820_RST_PIN); gpio_pad_select_gpio(IL3820_RST_PIN);
gpio_set_direction(IL3820_RST_PIN, GPIO_MODE_OUTPUT); gpio_set_direction(IL3820_RST_PIN, GPIO_MODE_OUTPUT);
#endif
gpio_pad_select_gpio(IL3820_BUSY_PIN); gpio_pad_select_gpio(IL3820_BUSY_PIN);
gpio_set_direction(IL3820_BUSY_PIN, GPIO_MODE_INPUT); gpio_set_direction(IL3820_BUSY_PIN, GPIO_MODE_INPUT);
#if IL3820_USE_RST
/* Harware reset */ /* Harware reset */
gpio_set_level( IL3820_RST_PIN, 0); gpio_set_level( IL3820_RST_PIN, 0);
vTaskDelay(IL3820_RESET_DELAY / portTICK_RATE_MS); vTaskDelay(IL3820_RESET_DELAY / portTICK_RATE_MS);
gpio_set_level( IL3820_RST_PIN, 1); gpio_set_level( IL3820_RST_PIN, 1);
vTaskDelay(IL3820_RESET_DELAY / portTICK_RATE_MS); vTaskDelay(IL3820_RESET_DELAY / portTICK_RATE_MS);
#endif
/* Software reset */ /* Software reset */
il3820_write_cmd(IL3820_CMD_SW_RESET, NULL, 0); il3820_write_cmd(IL3820_CMD_SW_RESET, NULL, 0);
/* Busy wait for the BUSY signal to go low */ /* Busy wait for the BUSY signal to go low */
il3820_waitbusy(IL3820_WAIT); il3820_waitbusy(IL3820_WAIT);
@ -239,10 +245,10 @@ void il3820_init(void)
// allow partial updates now // allow partial updates now
il3820_partial = true; il3820_partial = true;
/* Update LUT */ /* Update LUT */
il3820_write_cmd(IL3820_CMD_UPDATE_LUT, il3820_lut_default, sizeof(il3820_lut_default)); il3820_write_cmd(IL3820_CMD_UPDATE_LUT, il3820_lut_default, sizeof(il3820_lut_default));
/* Clear control memory and update */ /* Clear control memory and update */
il3820_clear_cntlr_mem(IL3820_CMD_WRITE_RAM, true); il3820_clear_cntlr_mem(IL3820_CMD_WRITE_RAM, true);
} }
@ -251,10 +257,10 @@ void il3820_init(void)
void il3820_sleep_in(void) void il3820_sleep_in(void)
{ {
uint8_t data[] = {0x01}; uint8_t data[] = {0x01};
/* Wait for the BUSY signal to go low */ /* Wait for the BUSY signal to go low */
il3820_waitbusy(IL3820_WAIT); il3820_waitbusy(IL3820_WAIT);
il3820_write_cmd(IL3820_CMD_SLEEP_MODE, data, 1); il3820_write_cmd(IL3820_CMD_SLEEP_MODE, data, 1);
} }
@ -264,15 +270,15 @@ static void il3820_waitbusy(int wait_ms)
int i = 0; int i = 0;
vTaskDelay(10 / portTICK_RATE_MS); // 10ms delay vTaskDelay(10 / portTICK_RATE_MS); // 10ms delay
for(i = 0; i < (wait_ms * 10); i++) { for(i = 0; i < (wait_ms * 10); i++) {
if(gpio_get_level(IL3820_BUSY_PIN) != IL3820_BUSY_LEVEL) { if(gpio_get_level(IL3820_BUSY_PIN) != IL3820_BUSY_LEVEL) {
return; return;
} }
vTaskDelay(10 / portTICK_RATE_MS); vTaskDelay(10 / portTICK_RATE_MS);
} }
ESP_LOGE( TAG, "busy exceeded %dms", i*10 ); ESP_LOGE( TAG, "busy exceeded %dms", i*10 );
} }
@ -288,10 +294,10 @@ static inline void il3820_data_mode(void)
gpio_set_level(IL3820_DC_PIN, 1); gpio_set_level(IL3820_DC_PIN, 1);
} }
static inline void il3820_write_cmd(uint8_t cmd, uint8_t *data, size_t len) static inline void il3820_write_cmd(uint8_t cmd, uint8_t *data, size_t len)
{ {
disp_wait_for_pending_transactions(); disp_wait_for_pending_transactions();
il3820_command_mode(); il3820_command_mode();
disp_spi_send_data(&cmd, 1); disp_spi_send_data(&cmd, 1);
@ -302,10 +308,10 @@ static inline void il3820_write_cmd(uint8_t cmd, uint8_t *data, size_t len)
} }
/* Send cmd to the display */ /* Send cmd to the display */
static inline void il3820_send_cmd(uint8_t cmd) static inline void il3820_send_cmd(uint8_t cmd)
{ {
disp_wait_for_pending_transactions(); disp_wait_for_pending_transactions();
il3820_command_mode(); il3820_command_mode();
disp_spi_send_data(&cmd, 1); disp_spi_send_data(&cmd, 1);
} }
@ -314,14 +320,14 @@ static inline void il3820_send_cmd(uint8_t cmd)
static void il3820_send_data(uint8_t *data, uint16_t length) static void il3820_send_data(uint8_t *data, uint16_t length)
{ {
disp_wait_for_pending_transactions(); disp_wait_for_pending_transactions();
il3820_data_mode(); il3820_data_mode();
disp_spi_send_colors(data, length); disp_spi_send_colors(data, length);
} }
/* Specify the start/end positions of the window address in the X and Y /* Specify the start/end positions of the window address in the X and Y
* directions by an address unit. * directions by an address unit.
* *
* @param sx: X Start position. * @param sx: X Start position.
* @param ex: X End position. * @param ex: X End position.
* @param ys: Y Start position. * @param ys: Y Start position.
@ -330,7 +336,7 @@ static void il3820_send_data(uint8_t *data, uint16_t length)
static inline void il3820_set_window( uint16_t sx, uint16_t ex, uint16_t ys, uint16_t ye) static inline void il3820_set_window( uint16_t sx, uint16_t ex, uint16_t ys, uint16_t ye)
{ {
uint8_t tmp[4] = {0}; uint8_t tmp[4] = {0};
tmp[0] = sx / 8; tmp[0] = sx / 8;
tmp[1] = ex / 8; tmp[1] = ex / 8;
@ -378,7 +384,7 @@ static void il3820_update_display(void)
} else { } else {
tmp = (IL3820_CTRL2_ENABLE_CLK | IL3820_CTRL2_ENABLE_ANALOG | IL3820_CTRL2_TO_PATTERN); tmp = (IL3820_CTRL2_ENABLE_CLK | IL3820_CTRL2_ENABLE_ANALOG | IL3820_CTRL2_TO_PATTERN);
} }
il3820_write_cmd(IL3820_CMD_UPDATE_CTRL2, &tmp, 1); il3820_write_cmd(IL3820_CMD_UPDATE_CTRL2, &tmp, 1);
il3820_write_cmd(IL3820_CMD_MASTER_ACTIVATION, NULL, 0); il3820_write_cmd(IL3820_CMD_MASTER_ACTIVATION, NULL, 0);
@ -394,10 +400,10 @@ static void il3820_clear_cntlr_mem(uint8_t ram_cmd, bool update)
/* Arrays used by SPI must be word alligned */ /* Arrays used by SPI must be word alligned */
WORD_ALIGNED_ATTR uint8_t clear_page[IL3820_COLUMNS]; WORD_ALIGNED_ATTR uint8_t clear_page[IL3820_COLUMNS];
memset(clear_page, 0xff, sizeof clear_page); memset(clear_page, 0xff, sizeof clear_page);
/* Configure entry mode */ /* Configure entry mode */
il3820_write_cmd(IL3820_CMD_ENTRY_MODE, &il3820_scan_mode, 1); il3820_write_cmd(IL3820_CMD_ENTRY_MODE, &il3820_scan_mode, 1);
/* Configure the window */ /* Configure the window */
il3820_set_window(0, EPD_PANEL_WIDTH - 1, 0, EPD_PANEL_HEIGHT - 1); il3820_set_window(0, EPD_PANEL_WIDTH - 1, 0, EPD_PANEL_HEIGHT - 1);

View file

@ -28,6 +28,7 @@ extern "C"
#define IL3820_DC_PIN CONFIG_LV_DISP_PIN_DC #define IL3820_DC_PIN CONFIG_LV_DISP_PIN_DC
#define IL3820_RST_PIN CONFIG_LV_DISP_PIN_RST #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_PIN CONFIG_LV_DISP_PIN_BUSY
#define IL3820_BUSY_LEVEL 1 #define IL3820_BUSY_LEVEL 1

View file

@ -93,18 +93,23 @@ void ili9341_init(void)
//Initialize non-SPI GPIOs //Initialize non-SPI GPIOs
gpio_pad_select_gpio(ILI9341_DC); gpio_pad_select_gpio(ILI9341_DC);
gpio_set_direction(ILI9341_DC, GPIO_MODE_OUTPUT); gpio_set_direction(ILI9341_DC, GPIO_MODE_OUTPUT);
#if ILI9341_USE_RST
gpio_pad_select_gpio(ILI9341_RST); gpio_pad_select_gpio(ILI9341_RST);
gpio_set_direction(ILI9341_RST, GPIO_MODE_OUTPUT); gpio_set_direction(ILI9341_RST, GPIO_MODE_OUTPUT);
#endif
#if ILI9341_ENABLE_BACKLIGHT_CONTROL #if ILI9341_ENABLE_BACKLIGHT_CONTROL
gpio_pad_select_gpio(ILI9341_BCKL); gpio_pad_select_gpio(ILI9341_BCKL);
gpio_set_direction(ILI9341_BCKL, GPIO_MODE_OUTPUT); gpio_set_direction(ILI9341_BCKL, GPIO_MODE_OUTPUT);
#endif #endif
#if ILI9341_USE_RST
//Reset the display //Reset the display
gpio_set_level(ILI9341_RST, 0); gpio_set_level(ILI9341_RST, 0);
vTaskDelay(100 / portTICK_RATE_MS); vTaskDelay(100 / portTICK_RATE_MS);
gpio_set_level(ILI9341_RST, 1); gpio_set_level(ILI9341_RST, 1);
vTaskDelay(100 / portTICK_RATE_MS); vTaskDelay(100 / portTICK_RATE_MS);
#endif
ESP_LOGI(TAG, "Initialization."); ESP_LOGI(TAG, "Initialization.");
@ -228,6 +233,8 @@ static void ili9341_set_orientation(uint8_t orientation)
#if defined CONFIG_LV_PREDEFINED_DISPLAY_M5STACK #if defined CONFIG_LV_PREDEFINED_DISPLAY_M5STACK
uint8_t data[] = {0x68, 0x68, 0x08, 0x08}; 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) #elif defined (CONFIG_LV_PREDEFINED_DISPLAY_WROVER4)
uint8_t data[] = {0x6C, 0xEC, 0xCC, 0x4C}; uint8_t data[] = {0x6C, 0xEC, 0xCC, 0x4C};
#elif defined (CONFIG_LV_PREDEFINED_DISPLAY_NONE) #elif defined (CONFIG_LV_PREDEFINED_DISPLAY_NONE)

View file

@ -25,9 +25,10 @@ extern "C" {
/********************* /*********************
* DEFINES * DEFINES
*********************/ *********************/
#define ILI9341_DC CONFIG_LV_DISP_PIN_DC #define ILI9341_DC CONFIG_LV_DISP_PIN_DC
#define ILI9341_RST CONFIG_LV_DISP_PIN_RST #define ILI9341_USE_RST CONFIG_LV_DISP_USE_RST
#define ILI9341_BCKL CONFIG_LV_DISP_PIN_BCKL #define ILI9341_RST CONFIG_LV_DISP_PIN_RST
#define ILI9341_BCKL CONFIG_LV_DISP_PIN_BCKL
#define ILI9341_ENABLE_BACKLIGHT_CONTROL CONFIG_LV_ENABLE_BACKLIGHT_CONTROL #define ILI9341_ENABLE_BACKLIGHT_CONTROL CONFIG_LV_ENABLE_BACKLIGHT_CONTROL

View file

@ -76,19 +76,24 @@ void ili9481_init(void)
//Initialize non-SPI GPIOs //Initialize non-SPI GPIOs
gpio_pad_select_gpio(ILI9481_DC); gpio_pad_select_gpio(ILI9481_DC);
gpio_set_direction(ILI9481_DC, GPIO_MODE_OUTPUT); gpio_set_direction(ILI9481_DC, GPIO_MODE_OUTPUT);
#if ILI9481_USE_RST
gpio_pad_select_gpio(ILI9481_RST); gpio_pad_select_gpio(ILI9481_RST);
gpio_set_direction(ILI9481_RST, GPIO_MODE_OUTPUT); gpio_set_direction(ILI9481_RST, GPIO_MODE_OUTPUT);
#endif
#if ILI9481_ENABLE_BACKLIGHT_CONTROL #if ILI9481_ENABLE_BACKLIGHT_CONTROL
gpio_pad_select_gpio(ILI9481_BCKL); gpio_pad_select_gpio(ILI9481_BCKL);
gpio_set_direction(ILI9481_BCKL, GPIO_MODE_OUTPUT); gpio_set_direction(ILI9481_BCKL, GPIO_MODE_OUTPUT);
#endif #endif
#if ILI9481_USE_RST
//Reset the display //Reset the display
gpio_set_level(ILI9481_RST, 0); gpio_set_level(ILI9481_RST, 0);
vTaskDelay(100 / portTICK_RATE_MS); vTaskDelay(100 / portTICK_RATE_MS);
gpio_set_level(ILI9481_RST, 1); gpio_set_level(ILI9481_RST, 1);
vTaskDelay(100 / portTICK_RATE_MS); vTaskDelay(100 / portTICK_RATE_MS);
#endif
ESP_LOGI(TAG, "ILI9481 initialization."); ESP_LOGI(TAG, "ILI9481 initialization.");

View file

@ -25,9 +25,10 @@ extern "C" {
/********************* /*********************
* DEFINES * DEFINES
*********************/ *********************/
#define ILI9481_DC CONFIG_LV_DISP_PIN_DC #define ILI9481_DC CONFIG_LV_DISP_PIN_DC
#define ILI9481_RST CONFIG_LV_DISP_PIN_RST #define ILI9481_RST CONFIG_LV_DISP_PIN_RST
#define ILI9481_BCKL CONFIG_LV_DISP_PIN_BCKL #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 #define ILI9481_ENABLE_BACKLIGHT_CONTROL CONFIG_LV_ENABLE_BACKLIGHT_CONTROL
#define ILI9481_INVERT_COLORS CONFIG_LV_INVERT_COLORS #define ILI9481_INVERT_COLORS CONFIG_LV_INVERT_COLORS

View file

@ -60,8 +60,8 @@ void ili9486_init(void)
{0xE0, {0x0F, 0x1F, 0x1C, 0x0C, 0x0F, 0x08, 0x48, 0x98, 0x37, 0x0A, 0x13, 0x04, 0x11, 0x0D, 0x00}, 15}, {0xE0, {0x0F, 0x1F, 0x1C, 0x0C, 0x0F, 0x08, 0x48, 0x98, 0x37, 0x0A, 0x13, 0x04, 0x11, 0x0D, 0x00}, 15},
{0XE1, {0x0F, 0x32, 0x2E, 0x0B, 0x0D, 0x05, 0x47, 0x75, 0x37, 0x06, 0x10, 0x03, 0x24, 0x20, 0x00}, 15}, {0XE1, {0x0F, 0x32, 0x2E, 0x0B, 0x0D, 0x05, 0x47, 0x75, 0x37, 0x06, 0x10, 0x03, 0x24, 0x20, 0x00}, 15},
{0x20, {0}, 0}, /* display inversion OFF */ {0x20, {0}, 0}, /* display inversion OFF */
{0x36, {0x48}, 1}, {0x36, {0x48}, 1},
{0x29, {0}, 0x80}, /* display on */ {0x29, {0}, 0x80}, /* display on */
{0x00, {0}, 0xff}, {0x00, {0}, 0xff},
}; };
@ -78,19 +78,24 @@ void ili9486_init(void)
//Initialize non-SPI GPIOs //Initialize non-SPI GPIOs
gpio_pad_select_gpio(ILI9486_DC); gpio_pad_select_gpio(ILI9486_DC);
gpio_set_direction(ILI9486_DC, GPIO_MODE_OUTPUT); gpio_set_direction(ILI9486_DC, GPIO_MODE_OUTPUT);
#if ILI9486_USE_RST
gpio_pad_select_gpio(ILI9486_RST); gpio_pad_select_gpio(ILI9486_RST);
gpio_set_direction(ILI9486_RST, GPIO_MODE_OUTPUT); gpio_set_direction(ILI9486_RST, GPIO_MODE_OUTPUT);
#endif
#if ILI9486_ENABLE_BACKLIGHT_CONTROL #if ILI9486_ENABLE_BACKLIGHT_CONTROL
gpio_pad_select_gpio(ILI9486_BCKL); gpio_pad_select_gpio(ILI9486_BCKL);
gpio_set_direction(ILI9486_BCKL, GPIO_MODE_OUTPUT); gpio_set_direction(ILI9486_BCKL, GPIO_MODE_OUTPUT);
#endif #endif
#if ILI9486_USE_RST
//Reset the display //Reset the display
gpio_set_level(ILI9486_RST, 0); gpio_set_level(ILI9486_RST, 0);
vTaskDelay(100 / portTICK_RATE_MS); vTaskDelay(100 / portTICK_RATE_MS);
gpio_set_level(ILI9486_RST, 1); gpio_set_level(ILI9486_RST, 1);
vTaskDelay(100 / portTICK_RATE_MS); vTaskDelay(100 / portTICK_RATE_MS);
#endif
ESP_LOGI(TAG, "ILI9486 Initialization."); ESP_LOGI(TAG, "ILI9486 Initialization.");
@ -135,7 +140,7 @@ void ili9486_flush(lv_disp_drv_t * drv, const lv_area_t * area, lv_color_t * col
ili9486_send_cmd(0x2C); ili9486_send_cmd(0x2C);
size = lv_area_get_width(area) * lv_area_get_height(area); size = lv_area_get_width(area) * lv_area_get_height(area);
ili9486_send_color((void*) color_map, size * 2); ili9486_send_color((void*) color_map, size * 2);
} }

View file

@ -25,9 +25,10 @@ extern "C" {
/********************* /*********************
* DEFINES * DEFINES
*********************/ *********************/
#define ILI9486_DC CONFIG_LV_DISP_PIN_DC #define ILI9486_DC CONFIG_LV_DISP_PIN_DC
#define ILI9486_RST CONFIG_LV_DISP_PIN_RST #define ILI9486_RST CONFIG_LV_DISP_PIN_RST
#define ILI9486_BCKL CONFIG_LV_DISP_PIN_BCKL #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 #define ILI9486_ENABLE_BACKLIGHT_CONTROL CONFIG_LV_ENABLE_BACKLIGHT_CONTROL

View file

@ -50,7 +50,7 @@ static void ili9488_send_color(void * data, uint16_t length);
/********************** /**********************
* GLOBAL FUNCTIONS * GLOBAL FUNCTIONS
**********************/ **********************/
// From github.com/jeremyjh/ESP32_TFT_library // From github.com/jeremyjh/ESP32_TFT_library
// From github.com/mvturnho/ILI9488-lvgl-ESP32-WROVER-B // From github.com/mvturnho/ILI9488-lvgl-ESP32-WROVER-B
void ili9488_init(void) void ili9488_init(void)
{ {
@ -78,26 +78,31 @@ void ili9488_init(void)
//Initialize non-SPI GPIOs //Initialize non-SPI GPIOs
gpio_pad_select_gpio(ILI9488_DC); gpio_pad_select_gpio(ILI9488_DC);
gpio_set_direction(ILI9488_DC, GPIO_MODE_OUTPUT); gpio_set_direction(ILI9488_DC, GPIO_MODE_OUTPUT);
#if ILI9488_USE_RST
gpio_pad_select_gpio(ILI9488_RST); gpio_pad_select_gpio(ILI9488_RST);
gpio_set_direction(ILI9488_RST, GPIO_MODE_OUTPUT); gpio_set_direction(ILI9488_RST, GPIO_MODE_OUTPUT);
#endif
#if ILI9488_ENABLE_BACKLIGHT_CONTROL #if ILI9488_ENABLE_BACKLIGHT_CONTROL
gpio_pad_select_gpio(ILI9488_BCKL); gpio_pad_select_gpio(ILI9488_BCKL);
gpio_set_direction(ILI9488_BCKL, GPIO_MODE_OUTPUT); gpio_set_direction(ILI9488_BCKL, GPIO_MODE_OUTPUT);
#endif #endif
#if ILI9488_USE_RST
//Reset the display //Reset the display
gpio_set_level(ILI9488_RST, 0); gpio_set_level(ILI9488_RST, 0);
vTaskDelay(100 / portTICK_RATE_MS); vTaskDelay(100 / portTICK_RATE_MS);
gpio_set_level(ILI9488_RST, 1); gpio_set_level(ILI9488_RST, 1);
vTaskDelay(100 / portTICK_RATE_MS); vTaskDelay(100 / portTICK_RATE_MS);
#endif
ESP_LOGI(TAG, "ILI9488 initialization."); ESP_LOGI(TAG, "ILI9488 initialization.");
// Exit sleep // Exit sleep
ili9488_send_cmd(0x01); /* Software reset */ ili9488_send_cmd(0x01); /* Software reset */
vTaskDelay(100 / portTICK_RATE_MS); vTaskDelay(100 / portTICK_RATE_MS);
//Send all the commands //Send all the commands
uint16_t cmd = 0; uint16_t cmd = 0;
while (ili_init_cmds[cmd].databytes!=0xff) { while (ili_init_cmds[cmd].databytes!=0xff) {
@ -146,7 +151,7 @@ void ili9488_flush(lv_disp_drv_t * drv, const lv_area_t * area, lv_color_t * col
(uint8_t) (area->x2 >> 8) & 0xFF, (uint8_t) (area->x2 >> 8) & 0xFF,
(uint8_t) (area->x2) & 0xFF, (uint8_t) (area->x2) & 0xFF,
}; };
/* Page addresses */ /* Page addresses */
uint8_t yb[] = { uint8_t yb[] = {
(uint8_t) (area->y1 >> 8) & 0xFF, (uint8_t) (area->y1 >> 8) & 0xFF,

View file

@ -25,9 +25,10 @@ extern "C" {
/********************* /*********************
* DEFINES * DEFINES
*********************/ *********************/
#define ILI9488_DC CONFIG_LV_DISP_PIN_DC #define ILI9488_DC CONFIG_LV_DISP_PIN_DC
#define ILI9488_RST CONFIG_LV_DISP_PIN_RST #define ILI9488_RST CONFIG_LV_DISP_PIN_RST
#define ILI9488_BCKL CONFIG_LV_DISP_PIN_BCKL #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 #define ILI9488_ENABLE_BACKLIGHT_CONTROL CONFIG_LV_ENABLE_BACKLIGHT_CONTROL

View file

@ -159,18 +159,24 @@ void ra8875_init(void)
#endif #endif
// Initialize non-SPI GPIOs // Initialize non-SPI GPIOs
#if RA8875_USE_RST
gpio_pad_select_gpio(RA8875_RST); gpio_pad_select_gpio(RA8875_RST);
gpio_set_direction(RA8875_RST, GPIO_MODE_OUTPUT); gpio_set_direction(RA8875_RST, GPIO_MODE_OUTPUT);
#endif
#ifdef CONFIG_LV_DISP_PIN_BCKL #ifdef CONFIG_LV_DISP_PIN_BCKL
gpio_pad_select_gpio(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); gpio_set_direction(CONFIG_LV_DISP_PIN_BCKL, GPIO_MODE_OUTPUT);
#endif #endif
#if RA8875_USE_RST
// Reset the RA8875 // Reset the RA8875
gpio_set_level(RA8875_RST, 0); gpio_set_level(RA8875_RST, 0);
vTaskDelay(DIV_ROUND_UP(100, portTICK_RATE_MS)); vTaskDelay(DIV_ROUND_UP(100, portTICK_RATE_MS));
gpio_set_level(RA8875_RST, 1); gpio_set_level(RA8875_RST, 1);
vTaskDelay(DIV_ROUND_UP(100, portTICK_RATE_MS)); vTaskDelay(DIV_ROUND_UP(100, portTICK_RATE_MS));
#endif
// Initalize RA8875 clocks (SPI must be decelerated before initializing clocks) // Initalize RA8875 clocks (SPI must be decelerated before initializing clocks)
disp_spi_change_device_speed(SPI_CLOCK_SPEED_SLOW_HZ); disp_spi_change_device_speed(SPI_CLOCK_SPEED_SLOW_HZ);

View file

@ -24,7 +24,8 @@ extern "C" {
/********************* /*********************
* DEFINES * DEFINES
*********************/ *********************/
#define RA8875_RST CONFIG_LV_DISP_PIN_RST #define RA8875_RST CONFIG_LV_DISP_PIN_RST
#define RA8875_USE_RST CONFIG_LV_DISP_USE_RST
// System & Configuration Registers // System & Configuration Registers
#define RA8875_REG_PWRR (0x01) // Power and Display Control Register (PWRR) #define RA8875_REG_PWRR (0x01) // Power and Display Control Register (PWRR)

View file

@ -94,6 +94,8 @@ void sh1107_init(void)
//Initialize non-SPI GPIOs //Initialize non-SPI GPIOs
gpio_pad_select_gpio(SH1107_DC); gpio_pad_select_gpio(SH1107_DC);
gpio_set_direction(SH1107_DC, GPIO_MODE_OUTPUT); gpio_set_direction(SH1107_DC, GPIO_MODE_OUTPUT);
#if SH1107_USE_RST
gpio_pad_select_gpio(SH1107_RST); gpio_pad_select_gpio(SH1107_RST);
gpio_set_direction(SH1107_RST, GPIO_MODE_OUTPUT); gpio_set_direction(SH1107_RST, GPIO_MODE_OUTPUT);
@ -102,6 +104,7 @@ void sh1107_init(void)
vTaskDelay(100 / portTICK_RATE_MS); vTaskDelay(100 / portTICK_RATE_MS);
gpio_set_level(SH1107_RST, 1); gpio_set_level(SH1107_RST, 1);
vTaskDelay(100 / portTICK_RATE_MS); vTaskDelay(100 / portTICK_RATE_MS);
#endif
//Send all the commands //Send all the commands
uint16_t cmd = 0; uint16_t cmd = 0;

View file

@ -25,8 +25,9 @@ extern "C" {
/********************* /*********************
* DEFINES * DEFINES
*********************/ *********************/
#define SH1107_DC CONFIG_LV_DISP_PIN_DC #define SH1107_DC CONFIG_LV_DISP_PIN_DC
#define SH1107_RST CONFIG_LV_DISP_PIN_RST #define SH1107_RST CONFIG_LV_DISP_PIN_RST
#define SH1107_USE_RST CONFIG_LV_DISP_USE_RST
/********************** /**********************
* TYPEDEFS * TYPEDEFS

View file

@ -99,6 +99,8 @@ void st7735s_init(void)
//Initialize non-SPI GPIOs //Initialize non-SPI GPIOs
gpio_pad_select_gpio(ST7735S_DC); gpio_pad_select_gpio(ST7735S_DC);
gpio_set_direction(ST7735S_DC, GPIO_MODE_OUTPUT); gpio_set_direction(ST7735S_DC, GPIO_MODE_OUTPUT);
#if ST7735S_USE_RST
gpio_pad_select_gpio(ST7735S_RST); gpio_pad_select_gpio(ST7735S_RST);
gpio_set_direction(ST7735S_RST, GPIO_MODE_OUTPUT); gpio_set_direction(ST7735S_RST, GPIO_MODE_OUTPUT);
@ -107,6 +109,7 @@ void st7735s_init(void)
vTaskDelay(100 / portTICK_RATE_MS); vTaskDelay(100 / portTICK_RATE_MS);
gpio_set_level(ST7735S_RST, 1); gpio_set_level(ST7735S_RST, 1);
vTaskDelay(100 / portTICK_RATE_MS); vTaskDelay(100 / portTICK_RATE_MS);
#endif
ESP_LOGI(TAG, "ST7735S initialization."); ESP_LOGI(TAG, "ST7735S initialization.");

View file

@ -25,8 +25,9 @@ extern "C" {
*********************/ *********************/
#define DISP_BUF_SIZE (LV_HOR_RES_MAX * 40) #define DISP_BUF_SIZE (LV_HOR_RES_MAX * 40)
#define ST7735S_DC CONFIG_LV_DISP_PIN_DC #define ST7735S_DC CONFIG_LV_DISP_PIN_DC
#define ST7735S_RST CONFIG_LV_DISP_PIN_RST #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_SDA CONFIG_LV_AXP192_PIN_SDA
#define AXP192_SCL CONFIG_LV_AXP192_PIN_SCL #define AXP192_SCL CONFIG_LV_AXP192_PIN_SCL

View file

@ -91,7 +91,7 @@ void st7789_init(void)
gpio_pad_select_gpio(ST7789_DC); gpio_pad_select_gpio(ST7789_DC);
gpio_set_direction(ST7789_DC, GPIO_MODE_OUTPUT); 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_pad_select_gpio(ST7789_RST);
gpio_set_direction(ST7789_RST, GPIO_MODE_OUTPUT); gpio_set_direction(ST7789_RST, GPIO_MODE_OUTPUT);
#endif #endif
@ -102,7 +102,7 @@ void st7789_init(void)
#endif #endif
//Reset the display //Reset the display
#if !defined(CONFIG_LV_DISP_ST7789_SOFT_RESET) #if !defined(ST7789_SOFT_RST)
gpio_set_level(ST7789_RST, 0); gpio_set_level(ST7789_RST, 0);
vTaskDelay(100 / portTICK_RATE_MS); vTaskDelay(100 / portTICK_RATE_MS);
gpio_set_level(ST7789_RST, 1); gpio_set_level(ST7789_RST, 1);

View file

@ -25,6 +25,15 @@ extern "C"
#define ST7789_RST CONFIG_LV_DISP_PIN_RST #define ST7789_RST CONFIG_LV_DISP_PIN_RST
#define ST7789_BCKL CONFIG_LV_DISP_PIN_BCKL #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_ENABLE_BACKLIGHT_CONTROL CONFIG_LV_ENABLE_BACKLIGHT_CONTROL
#define ST7789_INVERT_COLORS CONFIG_LV_INVERT_COLORS #define ST7789_INVERT_COLORS CONFIG_LV_INVERT_COLORS

View file

@ -94,18 +94,24 @@ void st7796s_init(void)
//Initialize non-SPI GPIOs //Initialize non-SPI GPIOs
gpio_pad_select_gpio(ST7796S_DC); gpio_pad_select_gpio(ST7796S_DC);
gpio_set_direction(ST7796S_DC, GPIO_MODE_OUTPUT); gpio_set_direction(ST7796S_DC, GPIO_MODE_OUTPUT);
#if ST7796S_USE_RST
gpio_pad_select_gpio(ST7796S_RST); gpio_pad_select_gpio(ST7796S_RST);
gpio_set_direction(ST7796S_RST, GPIO_MODE_OUTPUT); gpio_set_direction(ST7796S_RST, GPIO_MODE_OUTPUT);
#endif
#if ST7796S_ENABLE_BACKLIGHT_CONTROL #if ST7796S_ENABLE_BACKLIGHT_CONTROL
gpio_pad_select_gpio(ST7796S_BCKL); gpio_pad_select_gpio(ST7796S_BCKL);
gpio_set_direction(ST7796S_BCKL, GPIO_MODE_OUTPUT); gpio_set_direction(ST7796S_BCKL, GPIO_MODE_OUTPUT);
#endif #endif
#if ST7796S_USE_RST
//Reset the display //Reset the display
gpio_set_level(ST7796S_RST, 0); gpio_set_level(ST7796S_RST, 0);
vTaskDelay(100 / portTICK_RATE_MS); vTaskDelay(100 / portTICK_RATE_MS);
gpio_set_level(ST7796S_RST, 1); gpio_set_level(ST7796S_RST, 1);
vTaskDelay(100 / portTICK_RATE_MS); vTaskDelay(100 / portTICK_RATE_MS);
#endif
ESP_LOGI(TAG, "Initialization."); ESP_LOGI(TAG, "Initialization.");

View file

@ -26,9 +26,10 @@ extern "C"
/********************* /*********************
* DEFINES * DEFINES
*********************/ *********************/
#define ST7796S_DC CONFIG_LV_DISP_PIN_DC #define ST7796S_DC CONFIG_LV_DISP_PIN_DC
#define ST7796S_RST CONFIG_LV_DISP_PIN_RST #define ST7796S_RST CONFIG_LV_DISP_PIN_RST
#define ST7796S_BCKL CONFIG_LV_DISP_PIN_BCKL #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 #define ST7796S_ENABLE_BACKLIGHT_CONTROL CONFIG_LV_ENABLE_BACKLIGHT_CONTROL
#define ST7796S_INVERT_COLORS CONFIG_LV_INVERT_COLORS #define ST7796S_INVERT_COLORS CONFIG_LV_INVERT_COLORS