Merge pull request #96 from lvgl/feature/build-all-drivers
Build all display drivers
This commit is contained in:
commit
280bebf52e
|
@ -5,46 +5,25 @@ set(LVGL_INCLUDE_DIRS . lvgl_tft)
|
||||||
list(APPEND SOURCES "lvgl_tft/disp_driver.c")
|
list(APPEND SOURCES "lvgl_tft/disp_driver.c")
|
||||||
list(APPEND SOURCES "lvgl_tft/esp_lcd_backlight.c")
|
list(APPEND SOURCES "lvgl_tft/esp_lcd_backlight.c")
|
||||||
|
|
||||||
# Include only the source file of the selected
|
# Build all display drivers
|
||||||
# display controller.
|
|
||||||
if(CONFIG_LV_TFT_DISPLAY_CONTROLLER_ILI9341)
|
|
||||||
list(APPEND SOURCES "lvgl_tft/ili9341.c")
|
list(APPEND SOURCES "lvgl_tft/ili9341.c")
|
||||||
elseif(CONFIG_LV_TFT_DISPLAY_CONTROLLER_ILI9481)
|
|
||||||
list(APPEND SOURCES "lvgl_tft/ili9481.c")
|
list(APPEND SOURCES "lvgl_tft/ili9481.c")
|
||||||
elseif(CONFIG_LV_TFT_DISPLAY_CONTROLLER_ILI9486)
|
|
||||||
list(APPEND SOURCES "lvgl_tft/ili9486.c")
|
list(APPEND SOURCES "lvgl_tft/ili9486.c")
|
||||||
elseif(CONFIG_LV_TFT_DISPLAY_CONTROLLER_ILI9488)
|
|
||||||
list(APPEND SOURCES "lvgl_tft/ili9488.c")
|
list(APPEND SOURCES "lvgl_tft/ili9488.c")
|
||||||
elseif(CONFIG_LV_TFT_DISPLAY_CONTROLLER_ST7789)
|
|
||||||
list(APPEND SOURCES "lvgl_tft/st7789.c")
|
list(APPEND SOURCES "lvgl_tft/st7789.c")
|
||||||
elseif(CONFIG_LV_TFT_DISPLAY_CONTROLLER_ST7735S)
|
|
||||||
list(APPEND SOURCES "lvgl_tft/st7735s.c")
|
list(APPEND SOURCES "lvgl_tft/st7735s.c")
|
||||||
elseif(CONFIG_LV_TFT_DISPLAY_CONTROLLER_ST7796S)
|
|
||||||
list(APPEND SOURCES "lvgl_tft/st7796s.c")
|
list(APPEND SOURCES "lvgl_tft/st7796s.c")
|
||||||
elseif(CONFIG_LV_TFT_DISPLAY_CONTROLLER_HX8357)
|
|
||||||
list(APPEND SOURCES "lvgl_tft/hx8357.c")
|
list(APPEND SOURCES "lvgl_tft/hx8357.c")
|
||||||
elseif(CONFIG_LV_TFT_DISPLAY_CONTROLLER_SH1107)
|
|
||||||
list(APPEND SOURCES "lvgl_tft/sh1107.c")
|
list(APPEND SOURCES "lvgl_tft/sh1107.c")
|
||||||
elseif(CONFIG_LV_TFT_DISPLAY_CONTROLLER_SSD1306)
|
|
||||||
list(APPEND SOURCES "lvgl_tft/ssd1306.c")
|
list(APPEND SOURCES "lvgl_tft/ssd1306.c")
|
||||||
elseif(CONFIG_LV_TFT_DISPLAY_CONTROLLER_FT81X)
|
|
||||||
list(APPEND SOURCES "lvgl_tft/EVE_commands.c")
|
list(APPEND SOURCES "lvgl_tft/EVE_commands.c")
|
||||||
list(APPEND SOURCES "lvgl_tft/FT81x.c")
|
list(APPEND SOURCES "lvgl_tft/FT81x.c")
|
||||||
elseif(CONFIG_LV_TFT_DISPLAY_CONTROLLER_IL3820)
|
|
||||||
list(APPEND SOURCES "lvgl_tft/il3820.c")
|
list(APPEND SOURCES "lvgl_tft/il3820.c")
|
||||||
elseif(CONFIG_LV_TFT_DISPLAY_CONTROLLER_JD79653A)
|
|
||||||
list(APPEND SOURCES "lvgl_tft/jd79653a.c")
|
list(APPEND SOURCES "lvgl_tft/jd79653a.c")
|
||||||
elseif(CONFIG_LV_TFT_DISPLAY_CONTROLLER_UC8151D)
|
|
||||||
list(APPEND SOURCES "lvgl_tft/uc8151d.c")
|
list(APPEND SOURCES "lvgl_tft/uc8151d.c")
|
||||||
elseif(CONFIG_LV_TFT_DISPLAY_CONTROLLER_RA8875)
|
|
||||||
list(APPEND SOURCES "lvgl_tft/ra8875.c")
|
list(APPEND SOURCES "lvgl_tft/ra8875.c")
|
||||||
elseif(CONFIG_LV_TFT_DISPLAY_CONTROLLER_GC9A01)
|
|
||||||
list(APPEND SOURCES "lvgl_tft/GC9A01.c")
|
list(APPEND SOURCES "lvgl_tft/GC9A01.c")
|
||||||
elseif(CONFIG_LV_TFT_DISPLAY_CONTROLLER_ILI9163C)
|
|
||||||
list(APPEND SOURCES "lvgl_tft/ili9163c.c")
|
list(APPEND SOURCES "lvgl_tft/ili9163c.c")
|
||||||
else()
|
|
||||||
message(WARNING "LVGL ESP32 drivers: Display controller not defined.")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(CONFIG_LV_TFT_DISPLAY_PROTOCOL_SPI)
|
if(CONFIG_LV_TFT_DISPLAY_PROTOCOL_SPI)
|
||||||
list(APPEND SOURCES "lvgl_tft/disp_spi.c")
|
list(APPEND SOURCES "lvgl_tft/disp_spi.c")
|
||||||
|
|
|
@ -208,6 +208,8 @@ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR TH
|
||||||
#define EVE_SUNFLOWER
|
#define EVE_SUNFLOWER
|
||||||
#elif defined(CONFIG_LV_FT81X_CONFIG_EVE_CONNECTEVE)
|
#elif defined(CONFIG_LV_FT81X_CONFIG_EVE_CONNECTEVE)
|
||||||
#define EVE_CONNECTEVE
|
#define EVE_CONNECTEVE
|
||||||
|
#else
|
||||||
|
#define EVE_EVE2_35 // Define something if there is no Kconfig option selected
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* display timing parameters below */
|
/* display timing parameters below */
|
||||||
|
|
|
@ -220,7 +220,7 @@ static void GC9A01_send_color(void * data, uint16_t length)
|
||||||
|
|
||||||
static void GC9A01_set_orientation(uint8_t orientation)
|
static void GC9A01_set_orientation(uint8_t orientation)
|
||||||
{
|
{
|
||||||
// ESP_ASSERT(orientation < 4);
|
assert(orientation < 4);
|
||||||
|
|
||||||
const char *orientation_str[] = {
|
const char *orientation_str[] = {
|
||||||
"PORTRAIT", "PORTRAIT_INVERTED", "LANDSCAPE", "LANDSCAPE_INVERTED"
|
"PORTRAIT", "PORTRAIT_INVERTED", "LANDSCAPE", "LANDSCAPE_INVERTED"
|
||||||
|
@ -229,14 +229,14 @@ static void GC9A01_set_orientation(uint8_t orientation)
|
||||||
ESP_LOGI(TAG, "Display orientation: %s", orientation_str[orientation]);
|
ESP_LOGI(TAG, "Display orientation: %s", orientation_str[orientation]);
|
||||||
|
|
||||||
#if defined CONFIG_LV_PREDEFINED_DISPLAY_M5STACK
|
#if defined CONFIG_LV_PREDEFINED_DISPLAY_M5STACK
|
||||||
uint8_t data[] = {0x68, 0x68, 0x08, 0x08}; ///
|
const uint8_t data[] = {0x68, 0x68, 0x08, 0x08};
|
||||||
#elif defined (CONFIG_LV_PREDEFINED_DISPLAY_WROVER4)
|
#elif defined (CONFIG_LV_PREDEFINED_DISPLAY_WROVER4)
|
||||||
uint8_t data[] = {0x4C, 0x88, 0x28, 0xE8}; ///
|
const uint8_t data[] = {0x4C, 0x88, 0x28, 0xE8};
|
||||||
#elif defined (CONFIG_LV_PREDEFINED_DISPLAY_NONE)
|
#else
|
||||||
uint8_t data[] = {0x08, 0xC8, 0x68, 0xA8}; ///ggggg
|
const uint8_t data[] = {0x08, 0xC8, 0x68, 0xA8};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
ESP_LOGI(TAG, "0x36 command value: 0x%02X", data[orientation]);
|
ESP_LOGD(TAG, "0x36 command value: 0x%02X", data[orientation]);
|
||||||
|
|
||||||
GC9A01_send_cmd(0x36);
|
GC9A01_send_cmd(0x36);
|
||||||
GC9A01_send_data((void *) &data[orientation], 1);
|
GC9A01_send_data((void *) &data[orientation], 1);
|
||||||
|
|
|
@ -180,7 +180,9 @@ void il3820_set_px_cb(lv_disp_drv_t * disp_drv, uint8_t* buf,
|
||||||
BIT_CLEAR(buf[byte_index], 7 - bit_index);
|
BIT_CLEAR(buf[byte_index], 7 - bit_index);
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
#error "Unsupported orientation used"
|
(void)byte_index;
|
||||||
|
(void)bit_index;
|
||||||
|
assert(false); // Unsupported orientation configured. Crash if we get here, but allow compilation for CI
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -186,7 +186,7 @@ static void ili9341_send_color(void * data, uint16_t length)
|
||||||
|
|
||||||
static void ili9341_set_orientation(uint8_t orientation)
|
static void ili9341_set_orientation(uint8_t orientation)
|
||||||
{
|
{
|
||||||
// ESP_ASSERT(orientation < 4);
|
assert(orientation < 4);
|
||||||
|
|
||||||
const char *orientation_str[] = {
|
const char *orientation_str[] = {
|
||||||
"PORTRAIT", "PORTRAIT_INVERTED", "LANDSCAPE", "LANDSCAPE_INVERTED"
|
"PORTRAIT", "PORTRAIT_INVERTED", "LANDSCAPE", "LANDSCAPE_INVERTED"
|
||||||
|
@ -195,16 +195,16 @@ static void ili9341_set_orientation(uint8_t orientation)
|
||||||
ESP_LOGI(TAG, "Display orientation: %s", orientation_str[orientation]);
|
ESP_LOGI(TAG, "Display orientation: %s", orientation_str[orientation]);
|
||||||
|
|
||||||
#if defined CONFIG_LV_PREDEFINED_DISPLAY_M5STACK
|
#if defined CONFIG_LV_PREDEFINED_DISPLAY_M5STACK
|
||||||
uint8_t data[] = {0x68, 0x68, 0x08, 0x08};
|
const uint8_t data[] = {0x68, 0x68, 0x08, 0x08};
|
||||||
#elif defined (CONFIG_LV_PREDEFINED_DISPLAY_M5CORE2)
|
#elif defined (CONFIG_LV_PREDEFINED_DISPLAY_M5CORE2)
|
||||||
uint8_t data[] = {0x08, 0x88, 0x28, 0xE8};
|
const 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};
|
const uint8_t data[] = {0x6C, 0xEC, 0xCC, 0x4C};
|
||||||
#elif defined (CONFIG_LV_PREDEFINED_DISPLAY_NONE)
|
#else
|
||||||
uint8_t data[] = {0x48, 0x88, 0x28, 0xE8};
|
const uint8_t data[] = {0x48, 0x88, 0x28, 0xE8};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
ESP_LOGI(TAG, "0x36 command value: 0x%02X", data[orientation]);
|
ESP_LOGD(TAG, "0x36 command value: 0x%02X", data[orientation]);
|
||||||
|
|
||||||
ili9341_send_cmd(0x36);
|
ili9341_send_cmd(0x36);
|
||||||
ili9341_send_data((void *) &data[orientation], 1);
|
ili9341_send_data((void *) &data[orientation], 1);
|
||||||
|
|
|
@ -165,7 +165,7 @@ static void ili9486_send_color(void * data, uint16_t length)
|
||||||
|
|
||||||
static void ili9486_set_orientation(uint8_t orientation)
|
static void ili9486_set_orientation(uint8_t orientation)
|
||||||
{
|
{
|
||||||
// ESP_ASSERT(orientation < 4);
|
assert(orientation < 4);
|
||||||
|
|
||||||
const char *orientation_str[] = {
|
const char *orientation_str[] = {
|
||||||
"PORTRAIT", "PORTRAIT_INVERTED", "LANDSCAPE", "LANDSCAPE_INVERTED"
|
"PORTRAIT", "PORTRAIT_INVERTED", "LANDSCAPE", "LANDSCAPE_INVERTED"
|
||||||
|
@ -173,11 +173,9 @@ static void ili9486_set_orientation(uint8_t orientation)
|
||||||
|
|
||||||
ESP_LOGI(TAG, "Display orientation: %s", orientation_str[orientation]);
|
ESP_LOGI(TAG, "Display orientation: %s", orientation_str[orientation]);
|
||||||
|
|
||||||
#if defined (CONFIG_LV_PREDEFINED_DISPLAY_NONE)
|
const uint8_t data[] = {0x48, 0x88, 0x28, 0xE8};
|
||||||
uint8_t data[] = {0x48, 0x88, 0x28, 0xE8};
|
|
||||||
#endif
|
|
||||||
|
|
||||||
ESP_LOGI(TAG, "0x36 command value: 0x%02X", data[orientation]);
|
ESP_LOGD(TAG, "0x36 command value: 0x%02X", data[orientation]);
|
||||||
|
|
||||||
ili9486_send_cmd(0x36);
|
ili9486_send_cmd(0x36);
|
||||||
ili9486_send_data((void *) &data[orientation], 1);
|
ili9486_send_data((void *) &data[orientation], 1);
|
||||||
|
|
|
@ -194,7 +194,7 @@ static void ili9488_send_color(void * data, uint16_t length)
|
||||||
|
|
||||||
static void ili9488_set_orientation(uint8_t orientation)
|
static void ili9488_set_orientation(uint8_t orientation)
|
||||||
{
|
{
|
||||||
// ESP_ASSERT(orientation < 4);
|
assert(orientation < 4);
|
||||||
|
|
||||||
const char *orientation_str[] = {
|
const char *orientation_str[] = {
|
||||||
"PORTRAIT", "PORTRAIT_INVERTED", "LANDSCAPE", "LANDSCAPE_INVERTED"
|
"PORTRAIT", "PORTRAIT_INVERTED", "LANDSCAPE", "LANDSCAPE_INVERTED"
|
||||||
|
@ -202,11 +202,9 @@ static void ili9488_set_orientation(uint8_t orientation)
|
||||||
|
|
||||||
ESP_LOGI(TAG, "Display orientation: %s", orientation_str[orientation]);
|
ESP_LOGI(TAG, "Display orientation: %s", orientation_str[orientation]);
|
||||||
|
|
||||||
#if defined (CONFIG_LV_PREDEFINED_DISPLAY_NONE)
|
const uint8_t data[] = {0x48, 0x88, 0x28, 0xE8};
|
||||||
uint8_t data[] = {0x48, 0x88, 0x28, 0xE8};
|
|
||||||
#endif
|
|
||||||
|
|
||||||
ESP_LOGI(TAG, "0x36 command value: 0x%02X", data[orientation]);
|
ESP_LOGD(TAG, "0x36 command value: 0x%02X", data[orientation]);
|
||||||
|
|
||||||
ili9488_send_cmd(0x36);
|
ili9488_send_cmd(0x36);
|
||||||
ili9488_send_data((void *) &data[orientation], 1);
|
ili9488_send_data((void *) &data[orientation], 1);
|
||||||
|
|
|
@ -123,10 +123,9 @@ static const uint8_t lut_bb1[] = {
|
||||||
static const jd79653a_seq_t init_seq[] = {
|
static const jd79653a_seq_t init_seq[] = {
|
||||||
#if defined (CONFIG_LV_DISPLAY_ORIENTATION_PORTRAIT_INVERTED)
|
#if defined (CONFIG_LV_DISPLAY_ORIENTATION_PORTRAIT_INVERTED)
|
||||||
{0x00, {0xd3, 0x0e}, 2}, // Panel settings
|
{0x00, {0xd3, 0x0e}, 2}, // Panel settings
|
||||||
#elif defined(CONFIG_LV_DISPLAY_ORIENTATION_PORTRAIT)
|
//#elif defined(CONFIG_LV_DISPLAY_ORIENTATION_PORTRAIT)
|
||||||
{0x00, {0xdf, 0x0e}, 2}, // Panel settings
|
|
||||||
#else
|
#else
|
||||||
#error "Unsupported orientation - only portrait modes are supported for now"
|
{0x00, {0xdf, 0x0e}, 2}, // Panel settings
|
||||||
#endif
|
#endif
|
||||||
{0x4d, {0x55}, 1}, // Undocumented secret from demo code
|
{0x4d, {0x55}, 1}, // Undocumented secret from demo code
|
||||||
{0xaa, {0x0f}, 1}, // Undocumented secret from demo code
|
{0xaa, {0x0f}, 1}, // Undocumented secret from demo code
|
||||||
|
@ -249,7 +248,8 @@ static void jd79653a_partial_in()
|
||||||
#elif defined(CONFIG_LV_DISPLAY_ORIENTATION_PORTRAIT)
|
#elif defined(CONFIG_LV_DISPLAY_ORIENTATION_PORTRAIT)
|
||||||
uint8_t pst_use_reg_lut[] = { 0xff, 0x0e };
|
uint8_t pst_use_reg_lut[] = { 0xff, 0x0e };
|
||||||
#else
|
#else
|
||||||
#error "Unsupported orientation - only portrait modes are supported for now"
|
assert(false); // Unsupported orientation configured. Crash if we get here, but allow compilation for CI
|
||||||
|
uint8_t pst_use_reg_lut[] = { 0,0 };
|
||||||
#endif
|
#endif
|
||||||
jd79653a_spi_send_cmd(0x00);
|
jd79653a_spi_send_cmd(0x00);
|
||||||
jd79653a_spi_send_data(pst_use_reg_lut, sizeof(pst_use_reg_lut));
|
jd79653a_spi_send_data(pst_use_reg_lut, sizeof(pst_use_reg_lut));
|
||||||
|
@ -276,7 +276,8 @@ static void jd79653a_partial_out()
|
||||||
#elif defined(CONFIG_LV_DISPLAY_ORIENTATION_PORTRAIT)
|
#elif defined(CONFIG_LV_DISPLAY_ORIENTATION_PORTRAIT)
|
||||||
uint8_t pst_use_otp_lut[] = { 0xdf, 0x0e };
|
uint8_t pst_use_otp_lut[] = { 0xdf, 0x0e };
|
||||||
#else
|
#else
|
||||||
#error "Unsupported orientation - only portrait modes are supported for now"
|
assert(false); // Unsupported orientation configured. Crash if we get here, but allow compilation for CI
|
||||||
|
uint8_t pst_use_otp_lut[] = { 0,0 };
|
||||||
#endif
|
#endif
|
||||||
jd79653a_spi_send_cmd(0x00);
|
jd79653a_spi_send_cmd(0x00);
|
||||||
jd79653a_spi_send_data(pst_use_otp_lut, sizeof(pst_use_otp_lut));
|
jd79653a_spi_send_data(pst_use_otp_lut, sizeof(pst_use_otp_lut));
|
||||||
|
|
|
@ -16,7 +16,6 @@
|
||||||
/*********************
|
/*********************
|
||||||
* DEFINES
|
* DEFINES
|
||||||
*********************/
|
*********************/
|
||||||
#define DEBUG false
|
|
||||||
#define TAG "RA8875"
|
#define TAG "RA8875"
|
||||||
|
|
||||||
#define DIV_ROUND_UP(n, d) (((n)+(d)-1)/(d))
|
#define DIV_ROUND_UP(n, d) (((n)+(d)-1)/(d))
|
||||||
|
@ -43,6 +42,24 @@
|
||||||
#define VDIR_MASK (1 << 2)
|
#define VDIR_MASK (1 << 2)
|
||||||
#define HDIR_MASK (1 << 3)
|
#define HDIR_MASK (1 << 3)
|
||||||
|
|
||||||
|
#ifndef CONFIG_LV_TFT_DISPLAY_CONTROLLER_RA8875
|
||||||
|
// Use this settings if there is no Kconfig settings defined
|
||||||
|
#define DPCR_VAL (0x00)
|
||||||
|
#define PCSR_VAL (0x00)
|
||||||
|
#define HNDR_VAL (0x00)
|
||||||
|
#define HNDFTR_VAL (0x00)
|
||||||
|
#define HSTR_VAL (0x00)
|
||||||
|
#define HPW (0x00)
|
||||||
|
#define HPWR_VAL (0x00)
|
||||||
|
#define VNDR_VAL (0x00)
|
||||||
|
#define VSTR_VAL (0x00)
|
||||||
|
#define VPW (0x00)
|
||||||
|
#define VPWR_VAL (0x00)
|
||||||
|
#define CONFIG_LV_DISP_RA8875_PLLDIVM (0x00)
|
||||||
|
#define CONFIG_LV_DISP_RA8875_PLLDIVN (0x00)
|
||||||
|
#define CONFIG_LV_DISP_RA8875_PLLDIVK (0x00)
|
||||||
|
|
||||||
|
#else
|
||||||
#if ( CONFIG_LV_DISPLAY_ORIENTATION_PORTRAIT_INVERTED || CONFIG_LV_DISPLAY_ORIENTATION_LANDSCAPE_INVERTED )
|
#if ( CONFIG_LV_DISPLAY_ORIENTATION_PORTRAIT_INVERTED || CONFIG_LV_DISPLAY_ORIENTATION_LANDSCAPE_INVERTED )
|
||||||
#if CONFIG_LV_INVERT_DISPLAY
|
#if CONFIG_LV_INVERT_DISPLAY
|
||||||
#define DPCR_VAL (VDIR_MASK)
|
#define DPCR_VAL (VDIR_MASK)
|
||||||
|
@ -92,6 +109,7 @@
|
||||||
#else
|
#else
|
||||||
#define VPWR_VAL (VPW)
|
#define VPWR_VAL (VPW)
|
||||||
#endif
|
#endif
|
||||||
|
#endif // CONFIG_LV_TFT_DISPLAY_CONTROLLER_RA8875
|
||||||
|
|
||||||
/**********************
|
/**********************
|
||||||
* TYPEDEFS
|
* TYPEDEFS
|
||||||
|
@ -119,6 +137,9 @@ static void ra8875_send_buffer(uint8_t * data, size_t length, bool signal_flush)
|
||||||
|
|
||||||
void ra8875_init(void)
|
void ra8875_init(void)
|
||||||
{
|
{
|
||||||
|
#ifndef CONFIG_LV_TFT_DISPLAY_CONTROLLER_RA8875
|
||||||
|
assert(false); // This driver is not properly configured
|
||||||
|
#endif
|
||||||
unsigned int i = 0;
|
unsigned int i = 0;
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
|
@ -205,18 +226,14 @@ void ra8875_flush(lv_disp_drv_t * drv, const lv_area_t * area, lv_color_t * colo
|
||||||
size_t linelen = (area->x2 - area->x1 + 1);
|
size_t linelen = (area->x2 - area->x1 + 1);
|
||||||
uint8_t * buffer = (uint8_t*)color_map;
|
uint8_t * buffer = (uint8_t*)color_map;
|
||||||
|
|
||||||
#if DEBUG
|
ESP_LOGD(TAG, "flush: %d,%d at %d,%d", area->x1, area->x2, area->y1, area->y2 );
|
||||||
ESP_LOGI(TAG, "flush: %d,%d at %d,%d", area->x1, area->x2, area->y1, area->y2 );
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Get lock
|
// Get lock
|
||||||
disp_spi_acquire();
|
disp_spi_acquire();
|
||||||
|
|
||||||
// Set window if needed
|
// Set window if needed
|
||||||
if ((x1 != area->x1) || (x2 != area->x2)) {
|
if ((x1 != area->x1) || (x2 != area->x2)) {
|
||||||
#if DEBUG
|
ESP_LOGD(TAG, "flush: set window (x1,x2): %d,%d -> %d,%d", x1, x2, area->x1, area->x2);
|
||||||
ESP_LOGI(TAG, "flush: set window (x1,x2): %d,%d -> %d,%d", x1, x2, area->x1, area->x2);
|
|
||||||
#endif
|
|
||||||
ra8875_set_window(area->x1, area->x2, 0, LV_VER_RES_MAX-1);
|
ra8875_set_window(area->x1, area->x2, 0, LV_VER_RES_MAX-1);
|
||||||
x1 = area->x1;
|
x1 = area->x1;
|
||||||
x2 = area->x2;
|
x2 = area->x2;
|
||||||
|
@ -224,9 +241,7 @@ void ra8875_flush(lv_disp_drv_t * drv, const lv_area_t * area, lv_color_t * colo
|
||||||
|
|
||||||
// Set cursor if needed
|
// Set cursor if needed
|
||||||
if ((x != area->x1) || (y != area->y1)) {
|
if ((x != area->x1) || (y != area->y1)) {
|
||||||
#if DEBUG
|
ESP_LOGD(TAG, "flush: set cursor (x,y): %d,%d -> %d,%d", x, y, area->x1, area->y1);
|
||||||
ESP_LOGI(TAG, "flush: set cursor (x,y): %d,%d -> %d,%d", x, y, area->x1, area->y1);
|
|
||||||
#endif
|
|
||||||
ra8875_set_memory_write_cursor(area->x1, area->y1);
|
ra8875_set_memory_write_cursor(area->x1, area->y1);
|
||||||
x = area->x1;
|
x = area->x1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -106,7 +106,7 @@ void ssd1306_init(void)
|
||||||
orientation_1 = 0xA0;
|
orientation_1 = 0xA0;
|
||||||
orientation_2 = OLED_CMD_SET_COM_SCAN_MODE_NORMAL;
|
orientation_2 = OLED_CMD_SET_COM_SCAN_MODE_NORMAL;
|
||||||
#else
|
#else
|
||||||
#error "Unsupported orientation"
|
assert(false); // Invalid configuration of SSD1306 driver
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
uint8_t display_mode = 0;
|
uint8_t display_mode = 0;
|
||||||
|
|
|
@ -41,10 +41,13 @@ static void st7735s_send_cmd(uint8_t cmd);
|
||||||
static void st7735s_send_data(void * data, uint16_t length);
|
static void st7735s_send_data(void * data, uint16_t length);
|
||||||
static void st7735s_send_color(void * data, uint16_t length);
|
static void st7735s_send_color(void * data, uint16_t length);
|
||||||
static void st7735s_set_orientation(uint8_t orientation);
|
static void st7735s_set_orientation(uint8_t orientation);
|
||||||
|
|
||||||
|
#ifdef CONFIG_LV_M5STICKC_HANDLE_AXP192
|
||||||
static void axp192_write_byte(uint8_t addr, uint8_t data);
|
static void axp192_write_byte(uint8_t addr, uint8_t data);
|
||||||
static void axp192_init();
|
static void axp192_init();
|
||||||
static void axp192_sleep_in();
|
static void axp192_sleep_in();
|
||||||
static void axp192_sleep_out();
|
static void axp192_sleep_out();
|
||||||
|
#endif
|
||||||
|
|
||||||
/**********************
|
/**********************
|
||||||
* STATIC VARIABLES
|
* STATIC VARIABLES
|
||||||
|
|
|
@ -189,7 +189,7 @@ static void st7796s_send_color(void *data, uint16_t length)
|
||||||
|
|
||||||
static void st7796s_set_orientation(uint8_t orientation)
|
static void st7796s_set_orientation(uint8_t orientation)
|
||||||
{
|
{
|
||||||
// ESP_ASSERT(orientation < 4);
|
assert(orientation < 4);
|
||||||
|
|
||||||
const char *orientation_str[] = {
|
const char *orientation_str[] = {
|
||||||
"PORTRAIT", "PORTRAIT_INVERTED", "LANDSCAPE", "LANDSCAPE_INVERTED"};
|
"PORTRAIT", "PORTRAIT_INVERTED", "LANDSCAPE", "LANDSCAPE_INVERTED"};
|
||||||
|
@ -197,16 +197,16 @@ static void st7796s_set_orientation(uint8_t orientation)
|
||||||
ESP_LOGI(TAG, "Display orientation: %s", orientation_str[orientation]);
|
ESP_LOGI(TAG, "Display orientation: %s", orientation_str[orientation]);
|
||||||
|
|
||||||
#if defined CONFIG_LV_PREDEFINED_DISPLAY_M5STACK
|
#if defined CONFIG_LV_PREDEFINED_DISPLAY_M5STACK
|
||||||
uint8_t data[] = {0x68, 0x68, 0x08, 0x08};
|
const uint8_t data[] = {0x68, 0x68, 0x08, 0x08};
|
||||||
#elif defined(CONFIG_LV_PREDEFINED_DISPLAY_WROVER4)
|
#elif defined(CONFIG_LV_PREDEFINED_DISPLAY_WROVER4)
|
||||||
uint8_t data[] = {0x4C, 0x88, 0x28, 0xE8};
|
const uint8_t data[] = {0x4C, 0x88, 0x28, 0xE8};
|
||||||
#elif defined(CONFIG_LV_PREDEFINED_DISPLAY_WT32_SC01)
|
#elif defined(CONFIG_LV_PREDEFINED_DISPLAY_WT32_SC01)
|
||||||
uint8_t data[] = {0x48, 0x88, 0x28, 0xE8};
|
const uint8_t data[] = {0x48, 0x88, 0x28, 0xE8};
|
||||||
#elif defined(CONFIG_LV_PREDEFINED_DISPLAY_NONE)
|
#else
|
||||||
uint8_t data[] = {0x48, 0x88, 0x28, 0xE8};
|
const uint8_t data[] = {0x48, 0x88, 0x28, 0xE8};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
ESP_LOGI(TAG, "0x36 command value: 0x%02X", data[orientation]);
|
ESP_LOGD(TAG, "0x36 command value: 0x%02X", data[orientation]);
|
||||||
|
|
||||||
st7796s_send_cmd(0x36);
|
st7796s_send_cmd(0x36);
|
||||||
st7796s_send_data((void *)&data[orientation], 1);
|
st7796s_send_data((void *)&data[orientation], 1);
|
||||||
|
|
Loading…
Reference in a new issue