Merge branch 'master' into ili9163c
This commit is contained in:
commit
06e52d6093
6
.gitignore
vendored
6
.gitignore
vendored
|
@ -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
|
||||||
|
|
|
@ -52,6 +52,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 |
|
||||||
|
|
|
@ -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 */
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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))
|
||||||
|
|
||||||
|
|
|
@ -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));
|
||||||
}
|
}
|
||||||
|
|
|
@ -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()
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
@ -595,7 +599,7 @@ menu "LVGL TFT Display controller"
|
||||||
If text is backwards on your display, try enabling this.
|
If text is backwards on your display, try enabling this.
|
||||||
|
|
||||||
config LV_INVERT_COLORS
|
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 || LV_TFT_DISPLAY_CONTROLLER_ILI9163C
|
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
|
default y if LV_PREDEFINED_DISPLAY_M5STACK || LV_PREDEFINED_DISPLAY_M5STICKC
|
||||||
help
|
help
|
||||||
If the colors look inverted on your display, try enabling this.
|
If the colors look inverted on your display, try enabling this.
|
||||||
|
@ -772,6 +776,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
|
||||||
|
@ -786,6 +791,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.
|
||||||
|
@ -797,6 +803,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
|
||||||
|
@ -839,6 +846,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
|
||||||
|
@ -867,6 +875,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
|
||||||
|
@ -896,6 +905,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
|
||||||
|
@ -909,8 +919,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
|
||||||
|
|
||||||
|
@ -946,6 +970,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
|
||||||
|
|
|
@ -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.");
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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.");
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -126,8 +126,8 @@ void ssd1306_init(void)
|
||||||
orientation_1,
|
orientation_1,
|
||||||
orientation_2,
|
orientation_2,
|
||||||
OLED_CMD_SET_CONTRAST,
|
OLED_CMD_SET_CONTRAST,
|
||||||
display_mode,
|
|
||||||
0xFF,
|
0xFF,
|
||||||
|
display_mode,
|
||||||
OLED_CMD_DISPLAY_ON
|
OLED_CMD_DISPLAY_ON
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -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.");
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -35,8 +35,6 @@ typedef struct {
|
||||||
**********************/
|
**********************/
|
||||||
static void st7789_set_orientation(uint8_t orientation);
|
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);
|
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_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 +100,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);
|
||||||
|
@ -201,14 +199,14 @@ void st7789_flush(lv_disp_drv_t * drv, const lv_area_t * area, lv_color_t * colo
|
||||||
/**********************
|
/**********************
|
||||||
* STATIC FUNCTIONS
|
* STATIC FUNCTIONS
|
||||||
**********************/
|
**********************/
|
||||||
static void st7789_send_cmd(uint8_t cmd)
|
void st7789_send_cmd(uint8_t cmd)
|
||||||
{
|
{
|
||||||
disp_wait_for_pending_transactions();
|
disp_wait_for_pending_transactions();
|
||||||
gpio_set_level(ST7789_DC, 0);
|
gpio_set_level(ST7789_DC, 0);
|
||||||
disp_spi_send_data(&cmd, 1);
|
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();
|
disp_wait_for_pending_transactions();
|
||||||
gpio_set_level(ST7789_DC, 1);
|
gpio_set_level(ST7789_DC, 1);
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
@ -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_flush(lv_disp_drv_t *drv, const lv_area_t *area, lv_color_t *color_map);
|
||||||
void st7789_enable_backlight(bool backlight);
|
void st7789_enable_backlight(bool backlight);
|
||||||
|
|
||||||
|
void st7789_send_cmd(uint8_t cmd);
|
||||||
|
void st7789_send_data(void *data, uint16_t length);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
} /* extern "C" */
|
} /* extern "C" */
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -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.");
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue