Partial display on ST7796 320x480 display

What MCU/Processor/Board and compiler are you using?

ESP32 WROOM module, IDF 4.4.4

What LVGL version are you using?

GitHub - lvgl/lv_port_esp32: LVGL ported to ESP32 including various display and touchpad drivers (demo)

What do you want to achieve?

Get full display working - SPI ST7796 4.0" 320x480

What have you tried so far?

-set display size Kconfig 320x480
-set display size Kconfig 480x320
-Various different settings for Mx My Mv bits for register 0x36h
-Various different settings including swapping for column and row addresses registers 0x2Ah 0x2Bh
-IL9341 driver type as well as ST7796 driver type

The issue I am having is that no matter which settings I choose for display size in Kconfig, I only get 320x320 pixels out of 320x480 on the display. The remaining pixels do not change. When I was using the IL9341 driver type, I had the same issues as ST7796 (which is what this display is supposed to have for controller chip). With the IL9341 driver and some interesting init strings, I was able to get some data on the whole display for a second.

I’m wondering if there is a memory allocation issue (not enough on original ESP32?) or I haven’t configured a buffer to be large enough or there is some thing in the low level driver that is limiting the output resolution. This picture shows LVGL’s screen set up for 320x480 but the display only showing a 320x320 section of this:

Google Photos

Kconfig (LVGL section)


#

# CONFIG_LV_ATTRIBUTE_FAST_MEM_USE_IRAM is not set

# CONFIG_LV_CONF_MINIMAL is not set

CONFIG_LV_CONF_SKIP=y

CONFIG_LV_HOR_RES_MAX=480

CONFIG_LV_VER_RES_MAX=320

# CONFIG_LV_COLOR_DEPTH_32 is not set

CONFIG_LV_COLOR_DEPTH_16=y

# CONFIG_LV_COLOR_DEPTH_8 is not set

# CONFIG_LV_COLOR_DEPTH_1 is not set

CONFIG_LV_COLOR_DEPTH=16

# CONFIG_LV_COLOR_16_SWAP is not set

CONFIG_LV_ANTIALIAS=y

CONFIG_LV_DISP_DEF_REFR_PERIOD=30

CONFIG_LV_DPI=130

CONFIG_LV_DISP_SMALL_LIMIT=30

CONFIG_LV_DISP_MEDIUM_LIMIT=50

CONFIG_LV_DISP_LARGE_LIMIT=70

#

# Memory manager settings

#

# CONFIG_LV_MEM_CUSTOM is not set

CONFIG_LV_MEM_SIZE_KILOBYTES=32

# CONFIG_LV_MEMCPY_MEMSET_STD is not set

# end of Memory manager settings

#

# Indev device settings

#

CONFIG_LV_INDEV_DEF_READ_PERIOD=30

CONFIG_LV_INDEV_DEF_DRAG_LIMIT=10

CONFIG_LV_INDEV_DEF_DRAG_THROW=10

CONFIG_LV_INDEV_DEF_LONG_PRESS_TIME=400

CONFIG_LV_INDEV_DEF_LONG_PRESS_REP_TIME=100

CONFIG_LV_INDEV_DEF_GESTURE_LIMIT=50

CONFIG_LV_INDEV_DEF_GESTURE_MIN_VELOCITY=3

# end of Indev device settings

#

# Feature usage

#

CONFIG_LV_USE_ANIMATION=y

CONFIG_LV_USE_SHADOW=y

CONFIG_LV_SHADOW_CACHE_SIZE=0

CONFIG_LV_USE_OUTLINE=y

CONFIG_LV_USE_PATTERN=y

CONFIG_LV_USE_VALUE_STR=y

CONFIG_LV_USE_BLEND_MODES=y

CONFIG_LV_USE_OPA_SCALE=y

CONFIG_LV_USE_IMG_TRANSFORM=y

CONFIG_LV_USE_GROUP=y

CONFIG_LV_USE_GPU=y

# CONFIG_LV_USE_GPU_STM32_DMA2D is not set

# CONFIG_LV_USE_GPU_NXP_PXP is not set

# CONFIG_LV_USE_GPU_NXP_VG_LITE is not set

CONFIG_LV_USE_FILESYSTEM=y

# CONFIG_LV_USE_USER_DATA is not set

# CONFIG_LV_USE_PERF_MONITOR is not set

CONFIG_LV_USE_API_EXTENSION_V6=y

CONFIG_LV_USE_API_EXTENSION_V7=y

# end of Feature usage

#

# Image decoder and cache

#

CONFIG_LV_IMG_CF_INDEXED=y

CONFIG_LV_IMG_CF_ALPHA=y

CONFIG_LV_IMG_CACHE_DEF_SIZE=1

# end of Image decoder and cache

#

# Compiler Settings

#

# CONFIG_LV_BIG_ENDIAN_SYSTEM is not set

# end of Compiler Settings

#

# HAL Settings

#

# CONFIG_LV_TICK_CUSTOM is not set

# end of HAL Settings

#

# Log Settings

#

# CONFIG_LV_USE_LOG is not set

# end of Log Settings

#

# Debug Settings

#

# CONFIG_LV_USE_DEBUG is not set

CONFIG_LV_USE_ASSERT_NULL=y

CONFIG_LV_USE_ASSERT_MEM=y

# CONFIG_LV_USE_ASSERT_MEM_INTEGRITY is not set

# CONFIG_LV_USE_ASSERT_STR is not set

# CONFIG_LV_USE_ASSERT_OBJ is not set

# CONFIG_LV_USE_ASSERT_STYLE is not set

# end of Debug Settings

#

# Font usage

#

# CONFIG_LV_FONT_FMT_TXT_LARGE is not set

# CONFIG_LV_USE_FONT_SUBPX is not set

#

# Enable built-in fonts

#

# CONFIG_LV_FONT_MONTSERRAT_8 is not set

# CONFIG_LV_FONT_MONTSERRAT_10 is not set

# CONFIG_LV_FONT_MONTSERRAT_12 is not set

CONFIG_LV_FONT_MONTSERRAT_14=y

CONFIG_LV_FONT_MONTSERRAT_16=y

# CONFIG_LV_FONT_MONTSERRAT_18 is not set

# CONFIG_LV_FONT_MONTSERRAT_20 is not set

# CONFIG_LV_FONT_MONTSERRAT_22 is not set

# CONFIG_LV_FONT_MONTSERRAT_24 is not set

# CONFIG_LV_FONT_MONTSERRAT_26 is not set

# CONFIG_LV_FONT_MONTSERRAT_28 is not set

# CONFIG_LV_FONT_MONTSERRAT_30 is not set

# CONFIG_LV_FONT_MONTSERRAT_32 is not set

# CONFIG_LV_FONT_MONTSERRAT_34 is not set

# CONFIG_LV_FONT_MONTSERRAT_36 is not set

# CONFIG_LV_FONT_MONTSERRAT_38 is not set

# CONFIG_LV_FONT_MONTSERRAT_40 is not set

# CONFIG_LV_FONT_MONTSERRAT_42 is not set

# CONFIG_LV_FONT_MONTSERRAT_44 is not set

# CONFIG_LV_FONT_MONTSERRAT_46 is not set

# CONFIG_LV_FONT_MONTSERRAT_48 is not set

# CONFIG_LV_FONT_UNSCII_8 is not set

# CONFIG_LV_FONT_UNSCII_16 is not set

# CONFIG_LV_FONT_MONTSERRAT12SUBPX is not set

# CONFIG_LV_FONT_MONTSERRAT28COMPRESSED is not set

# CONFIG_LV_FONT_DEJAVU_16_PERSIAN_HEBREW is not set

# CONFIG_LV_FONT_SIMSUN_16_CJK is not set

# end of Enable built-in fonts

# CONFIG_LV_FONT_DEFAULT_SMALL_MONTSERRAT_8 is not set

# CONFIG_LV_FONT_DEFAULT_SMALL_MONTSERRAT_10 is not set

# CONFIG_LV_FONT_DEFAULT_SMALL_MONTSERRAT_12 is not set

# CONFIG_LV_FONT_DEFAULT_SMALL_MONTSERRAT_14 is not set

CONFIG_LV_FONT_DEFAULT_SMALL_MONTSERRAT_16=y

# CONFIG_LV_FONT_DEFAULT_SMALL_MONTSERRAT_18 is not set

# CONFIG_LV_FONT_DEFAULT_SMALL_MONTSERRAT_20 is not set

# CONFIG_LV_FONT_DEFAULT_SMALL_MONTSERRAT_22 is not set

# CONFIG_LV_FONT_DEFAULT_SMALL_MONTSERRAT_24 is not set

# CONFIG_LV_FONT_DEFAULT_SMALL_MONTSERRAT_26 is not set

# CONFIG_LV_FONT_DEFAULT_SMALL_MONTSERRAT_28 is not set

# CONFIG_LV_FONT_DEFAULT_SMALL_MONTSERRAT_30 is not set

# CONFIG_LV_FONT_DEFAULT_SMALL_MONTSERRAT_32 is not set

# CONFIG_LV_FONT_DEFAULT_SMALL_MONTSERRAT_34 is not set

# CONFIG_LV_FONT_DEFAULT_SMALL_MONTSERRAT_36 is not set

# CONFIG_LV_FONT_DEFAULT_SMALL_MONTSERRAT_38 is not set

# CONFIG_LV_FONT_DEFAULT_SMALL_MONTSERRAT_40 is not set

# CONFIG_LV_FONT_DEFAULT_SMALL_MONTSERRAT_42 is not set

# CONFIG_LV_FONT_DEFAULT_SMALL_MONTSERRAT_44 is not set

# CONFIG_LV_FONT_DEFAULT_SMALL_MONTSERRAT_46 is not set

# CONFIG_LV_FONT_DEFAULT_SMALL_MONTSERRAT_48 is not set

# CONFIG_LV_FONT_DEFAULT_SMALL_UNSCII_8 is not set

# CONFIG_LV_FONT_DEFAULT_SMALL_UNSCII_16 is not set

# CONFIG_LV_FONT_DEFAULT_SMALL_MONTSERRAT12SUBPX is not set

# CONFIG_LV_FONT_DEFAULT_SMALL_MONTSERRAT28COMPRESSED is not set

# CONFIG_LV_FONT_DEFAULT_SMALL_DEJAVU_16_PERSIAN_HEBREW is not set

# CONFIG_LV_FONT_DEFAULT_SMALL_SIMSUN_16_CJK is not set

# CONFIG_LV_FONT_DEFAULT_NORMAL_MONTSERRAT_8 is not set

# CONFIG_LV_FONT_DEFAULT_NORMAL_MONTSERRAT_10 is not set

# CONFIG_LV_FONT_DEFAULT_NORMAL_MONTSERRAT_12 is not set

# CONFIG_LV_FONT_DEFAULT_NORMAL_MONTSERRAT_14 is not set

CONFIG_LV_FONT_DEFAULT_NORMAL_MONTSERRAT_16=y

# CONFIG_LV_FONT_DEFAULT_NORMAL_MONTSERRAT_18 is not set

# CONFIG_LV_FONT_DEFAULT_NORMAL_MONTSERRAT_20 is not set

# CONFIG_LV_FONT_DEFAULT_NORMAL_MONTSERRAT_22 is not set

# CONFIG_LV_FONT_DEFAULT_NORMAL_MONTSERRAT_24 is not set

# CONFIG_LV_FONT_DEFAULT_NORMAL_MONTSERRAT_26 is not set

# CONFIG_LV_FONT_DEFAULT_NORMAL_MONTSERRAT_28 is not set

# CONFIG_LV_FONT_DEFAULT_NORMAL_MONTSERRAT_30 is not set

# CONFIG_LV_FONT_DEFAULT_NORMAL_MONTSERRAT_32 is not set

# CONFIG_LV_FONT_DEFAULT_NORMAL_MONTSERRAT_34 is not set

# CONFIG_LV_FONT_DEFAULT_NORMAL_MONTSERRAT_36 is not set

# CONFIG_LV_FONT_DEFAULT_NORMAL_MONTSERRAT_38 is not set

# CONFIG_LV_FONT_DEFAULT_NORMAL_MONTSERRAT_40 is not set

# CONFIG_LV_FONT_DEFAULT_NORMAL_MONTSERRAT_42 is not set

# CONFIG_LV_FONT_DEFAULT_NORMAL_MONTSERRAT_44 is not set

# CONFIG_LV_FONT_DEFAULT_NORMAL_MONTSERRAT_46 is not set

# CONFIG_LV_FONT_DEFAULT_NORMAL_MONTSERRAT_48 is not set

# CONFIG_LV_FONT_DEFAULT_NORMAL_UNSCII_8 is not set

# CONFIG_LV_FONT_DEFAULT_NORMAL_UNSCII_16 is not set

# CONFIG_LV_FONT_DEFAULT_NORMAL_MONTSERRAT12SUBPX is not set

# CONFIG_LV_FONT_DEFAULT_NORMAL_MONTSERRAT28COMPRESSED is not set

# CONFIG_LV_FONT_DEFAULT_NORMAL_DEJAVU_16_PERSIAN_HEBREW is not set

# CONFIG_LV_FONT_DEFAULT_NORMAL_SIMSUN_16_CJK is not set

# CONFIG_LV_FONT_DEFAULT_SUBTITLE_MONTSERRAT_8 is not set

# CONFIG_LV_FONT_DEFAULT_SUBTITLE_MONTSERRAT_10 is not set

# CONFIG_LV_FONT_DEFAULT_SUBTITLE_MONTSERRAT_12 is not set

# CONFIG_LV_FONT_DEFAULT_SUBTITLE_MONTSERRAT_14 is not set

CONFIG_LV_FONT_DEFAULT_SUBTITLE_MONTSERRAT_16=y

# CONFIG_LV_FONT_DEFAULT_SUBTITLE_MONTSERRAT_18 is not set

# CONFIG_LV_FONT_DEFAULT_SUBTITLE_MONTSERRAT_20 is not set

# CONFIG_LV_FONT_DEFAULT_SUBTITLE_MONTSERRAT_22 is not set

# CONFIG_LV_FONT_DEFAULT_SUBTITLE_MONTSERRAT_24 is not set

# CONFIG_LV_FONT_DEFAULT_SUBTITLE_MONTSERRAT_26 is not set

# CONFIG_LV_FONT_DEFAULT_SUBTITLE_MONTSERRAT_28 is not set

# CONFIG_LV_FONT_DEFAULT_SUBTITLE_MONTSERRAT_30 is not set

# CONFIG_LV_FONT_DEFAULT_SUBTITLE_MONTSERRAT_32 is not set

# CONFIG_LV_FONT_DEFAULT_SUBTITLE_MONTSERRAT_34 is not set

# CONFIG_LV_FONT_DEFAULT_SUBTITLE_MONTSERRAT_36 is not set

# CONFIG_LV_FONT_DEFAULT_SUBTITLE_MONTSERRAT_38 is not set

# CONFIG_LV_FONT_DEFAULT_SUBTITLE_MONTSERRAT_40 is not set

# CONFIG_LV_FONT_DEFAULT_SUBTITLE_MONTSERRAT_42 is not set

# CONFIG_LV_FONT_DEFAULT_SUBTITLE_MONTSERRAT_44 is not set

# CONFIG_LV_FONT_DEFAULT_SUBTITLE_MONTSERRAT_46 is not set

# CONFIG_LV_FONT_DEFAULT_SUBTITLE_MONTSERRAT_48 is not set

# CONFIG_LV_FONT_DEFAULT_SUBTITLE_UNSCII_8 is not set

# CONFIG_LV_FONT_DEFAULT_SUBTITLE_UNSCII_16 is not set

# CONFIG_LV_FONT_DEFAULT_SUBTITLE_MONTSERRAT12SUBPX is not set

# CONFIG_LV_FONT_DEFAULT_SUBTITLE_MONTSERRAT28COMPRESSED is not set

# CONFIG_LV_FONT_DEFAULT_SUBTITLE_DEJAVU_16_PERSIAN_HEBREW is not set

# CONFIG_LV_FONT_DEFAULT_SUBTITLE_SIMSUN_16_CJK is not set

# CONFIG_LV_FONT_DEFAULT_TITLE_MONTSERRAT_8 is not set

# CONFIG_LV_FONT_DEFAULT_TITLE_MONTSERRAT_12 is not set

# CONFIG_LV_FONT_DEFAULT_TITLE_MONTSERRAT_14 is not set

CONFIG_LV_FONT_DEFAULT_TITLE_MONTSERRAT_16=y

# CONFIG_LV_FONT_DEFAULT_TITLE_MONTSERRAT_18 is not set

# CONFIG_LV_FONT_DEFAULT_TITLE_MONTSERRAT_20 is not set

# CONFIG_LV_FONT_DEFAULT_TITLE_MONTSERRAT_22 is not set

# CONFIG_LV_FONT_DEFAULT_TITLE_MONTSERRAT_24 is not set

# CONFIG_LV_FONT_DEFAULT_TITLE_MONTSERRAT_26 is not set

# CONFIG_LV_FONT_DEFAULT_TITLE_MONTSERRAT_28 is not set

# CONFIG_LV_FONT_DEFAULT_TITLE_MONTSERRAT_30 is not set

# CONFIG_LV_FONT_DEFAULT_TITLE_MONTSERRAT_32 is not set

# CONFIG_LV_FONT_DEFAULT_TITLE_MONTSERRAT_34 is not set

# CONFIG_LV_FONT_DEFAULT_TITLE_MONTSERRAT_36 is not set

# CONFIG_LV_FONT_DEFAULT_TITLE_MONTSERRAT_38 is not set

# CONFIG_LV_FONT_DEFAULT_TITLE_MONTSERRAT_40 is not set

# CONFIG_LV_FONT_DEFAULT_TITLE_MONTSERRAT_42 is not set

# CONFIG_LV_FONT_DEFAULT_TITLE_MONTSERRAT_44 is not set

# CONFIG_LV_FONT_DEFAULT_TITLE_MONTSERRAT_46 is not set

# CONFIG_LV_FONT_DEFAULT_TITLE_MONTSERRAT_48 is not set

# CONFIG_LV_FONT_DEFAULT_TITLE_UNSCII_8 is not set

# CONFIG_LV_FONT_DEFAULT_TITLE_UNSCII_16 is not set

# CONFIG_LV_FONT_DEFAULT_TITLE_MONTSERRAT12SUBPX is not set

# CONFIG_LV_FONT_DEFAULT_TITLE_MONTSERRAT28COMPRESSED is not set

# CONFIG_LV_FONT_DEFAULT_TITLE_DEJAVU_16_PERSIAN_HEBREW is not set

# CONFIG_LV_FONT_DEFAULT_TITLE_SIMSUN_16_CJK is not set

# end of Font usage

#

# Theme usage

#

#

# Enable theme usage, always enable at least one theme

#

# CONFIG_LV_THEME_EMPTY is not set

# CONFIG_LV_THEME_TEMPLATE is not set

CONFIG_LV_THEME_MATERIAL=y

# CONFIG_LV_THEME_MONO is not set

# end of Enable theme usage, always enable at least one theme

# CONFIG_LV_THEME_DEFAULT_INIT_EMPTY is not set

# CONFIG_LV_THEME_DEFAULT_INIT_TEMPLATE is not set

CONFIG_LV_THEME_DEFAULT_INIT_MATERIAL=y

# CONFIG_LV_THEME_DEFAULT_INIT_MONO is not set

CONFIG_LV_THEME_DEFAULT_COLOR_PRIMARY=0xFF0000

CONFIG_LV_THEME_DEFAULT_COLOR_SECONDARY=0x0000FF

CONFIG_LV_THEME_DEFAULT_FLAG_LIGHT=y

# CONFIG_LV_THEME_DEFAULT_FLAG_DARK is not set

# end of Theme usage

#

# Text Settings

#

CONFIG_LV_TXT_ENC_UTF8=y

# CONFIG_LV_TXT_ENC_ASCII is not set

CONFIG_LV_TXT_BREAK_CHARS=" ,.;:-_"

CONFIG_LV_TXT_LINE_BREAK_LONG_LEN=0

CONFIG_LV_TXT_COLOR_CMD="#"

# CONFIG_LV_USE_BIDI is not set

# CONFIG_LV_USE_ARABIC_PERSIAN_CHARS is not set

# CONFIG_LV_SPRINTF_CUSTOM is not set

# CONFIG_LV_SPRINTF_DISABLE_FLOAT is not set

# end of Text Settings

#

# Widgets

#

CONFIG_LV_USE_OBJ_REALIGN=y

# CONFIG_LV_USE_EXT_CLICK_AREA_OFF is not set

CONFIG_LV_USE_EXT_CLICK_AREA_TINY=y

# CONFIG_LV_USE_EXT_CLICK_AREA_FULL is not set

CONFIG_LV_USE_ARC=y

CONFIG_LV_USE_BAR=y

CONFIG_LV_USE_BTN=y

CONFIG_LV_USE_BTNMATRIX=y

CONFIG_LV_USE_CALENDAR=y

# CONFIG_LV_CALENDAR_WEEK_STARTS_MONDAY is not set

CONFIG_LV_USE_CANVAS=y

CONFIG_LV_USE_CHECKBOX=y

CONFIG_LV_USE_CHART=y

CONFIG_LV_CHART_AXIS_TICK_MAX_LEN=256

CONFIG_LV_USE_CONT=y

CONFIG_LV_USE_CPICKER=y

CONFIG_LV_USE_DROPDOWN=y

CONFIG_LV_DROPDOWN_DEF_ANIM_TIME=200

CONFIG_LV_USE_GAUGE=y

CONFIG_LV_USE_IMG=y

CONFIG_LV_USE_IMGBTN=y

# CONFIG_LV_IMGBTN_TILED is not set

CONFIG_LV_USE_KEYBOARD=y

CONFIG_LV_USE_LABEL=y

CONFIG_LV_LABEL_DEF_SCROLL_SPEED=25

CONFIG_LV_LABEL_WAIT_CHAR_COUNT=3

# CONFIG_LV_LABEL_TEXT_SEL is not set

# CONFIG_LV_LABEL_LONG_TXT_HINT is not set

CONFIG_LV_USE_LED=y

CONFIG_LV_LED_BRIGHT_MIN=120

CONFIG_LV_LED_BRIGHT_MAX=255

CONFIG_LV_USE_LINE=y

CONFIG_LV_USE_LIST=y

CONFIG_LV_LIST_DEF_ANIM_TIME=100

CONFIG_LV_USE_LINEMETER=y

CONFIG_LV_LINEMETER_PRECISE_NO_EXTRA_PRECISION=y

# CONFIG_LV_LINEMETER_PRECISE_SOME_EXTRA_PRECISION is not set

# CONFIG_LV_LINEMETER_PRECISE_BEST_PRECISION is not set

CONFIG_LV_USE_OBJMASK=y

CONFIG_LV_USE_MSGBOX=y

CONFIG_LV_USE_PAGE=y

CONFIG_LV_PAGE_DEF_ANIM_TIME=100

CONFIG_LV_USE_SPINNER=y

CONFIG_LV_SPINNER_DEF_ARC_LENGTH=60

CONFIG_LV_SPINNER_DEF_SPIN_TIME=1000

CONFIG_LV_SPINNER_TYPE_SPINNING_ARC=y

# CONFIG_LV_SPINNER_TYPE_FILLSPIN_ARC is not set

# CONFIG_LV_SPINNER_TYPE_CONSTANT_ARC is not set

CONFIG_LV_USE_ROLLER=y

CONFIG_LV_ROLLER_DEF_ANIM_TIME=200

CONFIG_LV_ROLLER_INF_PAGES=7

CONFIG_LV_USE_SLIDER=y

CONFIG_LV_USE_SPINBOX=y

CONFIG_LV_USE_SWITCH=y

CONFIG_LV_USE_TEXTAREA=y

CONFIG_LV_TEXTAREA_DEF_CURSOR_BLINK_TIME=400

CONFIG_LV_TEXTAREA_DEF_PWN_SHOW_TIME=1500

CONFIG_LV_USE_TABLE=y

CONFIG_LV_TABLE_COL_MAX=12

CONFIG_LV_TABLE_CELL_STYLE_CNT=4

CONFIG_LV_USE_TABVIEW=y

CONFIG_LV_TABVIEW_DEF_ANIM_TIME=300

CONFIG_LV_USE_TILEVIEW=y

CONFIG_LV_TILEVIEW_DEF_ANIM_TIME=300

CONFIG_LV_USE_WIN=y

# end of Widgets

# end of LVGL configuration

#

# LVGL TFT Display controller

#

CONFIG_LV_PREDEFINED_DISPLAY_NONE=y

# CONFIG_LV_PREDEFINED_DISPLAY_WROVER4 is not set

# CONFIG_LV_PREDEFINED_DISPLAY_M5STACK is not set

# CONFIG_LV_PREDEFINED_DISPLAY_M5STICK is not set

# CONFIG_LV_PREDEFINED_DISPLAY_M5STICKC is not set

# CONFIG_LV_PREDEFINED_DISPLAY_ERTFT0356 is not set

# CONFIG_LV_PREDEFINED_DISPLAY_ADA_FEATHERWING is not set

# CONFIG_LV_PREDEFINED_DISPLAY_RPI_MPI3501 is not set

# CONFIG_LV_PREDEFINED_DISPLAY_WEMOS_LOLIN is not set

# CONFIG_LV_PREDEFINED_DISPLAY_ATAG is not set

# CONFIG_LV_PREDEFINED_DISPLAY_RPI_RA8875 is not set

# CONFIG_LV_PREDEFINED_DISPLAY_TTGO is not set

# CONFIG_LV_PREDEFINED_DISPLAY_TTGO_CAMERA_PLUS is not set

# CONFIG_LV_PREDEFINED_DISPLAY_WT32_SC01 is not set

CONFIG_LV_TFT_DISPLAY_CONTROLLER_ST7796S=y

CONFIG_LV_TFT_DISPLAY_PROTOCOL_SPI=y

# CONFIG_DISPLAY_ORIENTATION_PORTRAIT is not set

# CONFIG_DISPLAY_ORIENTATION_PORTRAIT_INVERTED is not set

CONFIG_DISPLAY_ORIENTATION_LANDSCAPE=y

# CONFIG_DISPLAY_ORIENTATION_LANDSCAPE_INVERTED is not set

CONFIG_LV_DISPLAY_ORIENTATION=2

CONFIG_LV_PREDEFINED_PINS_NONE=y

# CONFIG_LV_PREDEFINED_PINS_38V4 is not set

# CONFIG_LV_PREDEFINED_PINS_30 is not set

# CONFIG_LV_PREDEFINED_PINS_38V1 is not set

# CONFIG_LV_PREDEFINED_PINS_TKOALA is not set

# CONFIG_LV_TFT_DISPLAY_USER_CONTROLLER_ILI9341 is not set

# CONFIG_LV_TFT_DISPLAY_USER_CONTROLLER_ILI9481 is not set

# CONFIG_LV_TFT_DISPLAY_USER_CONTROLLER_ILI9486 is not set

# CONFIG_LV_TFT_DISPLAY_USER_CONTROLLER_ILI9488 is not set

# CONFIG_LV_TFT_DISPLAY_USER_CONTROLLER_ST7789 is not set

CONFIG_LV_TFT_DISPLAY_USER_CONTROLLER_ST7796S=y

# CONFIG_LV_TFT_DISPLAY_USER_CONTROLLER_GC9A01 is not set

# CONFIG_LV_TFT_DISPLAY_USER_CONTROLLER_ST7735S is not set

# CONFIG_LV_TFT_DISPLAY_USER_CONTROLLER_HX8357 is not set

# CONFIG_LV_TFT_DISPLAY_USER_CONTROLLER_SH1107 is not set

# CONFIG_LV_TFT_DISPLAY_USER_CONTROLLER_SSD1306 is not set

# CONFIG_LV_TFT_DISPLAY_USER_CONTROLLER_FT81X is not set

# CONFIG_LV_TFT_DISPLAY_USER_CONTROLLER_IL3820 is not set

# CONFIG_LV_TFT_DISPLAY_USER_CONTROLLER_JD79653A is not set

# CONFIG_LV_TFT_DISPLAY_USER_CONTROLLER_UC8151D is not set

# CONFIG_LV_TFT_DISPLAY_USER_CONTROLLER_RA8875 is not set

# CONFIG_CUSTOM_DISPLAY_BUFFER_SIZE is not set

CONFIG_LV_TFT_DISPLAY_SPI_HSPI=y

# CONFIG_LV_TFT_DISPLAY_SPI_VSPI is not set

CONFIG_LV_TFT_DISPLAY_SPI_TRANS_MODE_SIO=y

# CONFIG_LV_TFT_DISPLAY_SPI_TRANS_MODE_DIO is not set

# CONFIG_LV_TFT_DISPLAY_SPI_TRANS_MODE_QIO is not set

CONFIG_LV_TFT_DISPLAY_SPI_HALF_DUPLEX=y

# CONFIG_LV_TFT_DISPLAY_SPI_FULL_DUPLEX is not set

# CONFIG_LV_TFT_USE_CUSTOM_SPI_CLK_DIVIDER is not set

CONFIG_LV_TFT_CUSTOM_SPI_CLK_DIVIDER=2

#

# Display Pin Assignments

#

CONFIG_LV_DISP_SPI_MOSI=23

# CONFIG_LV_DISPLAY_USE_SPI_MISO is not set

CONFIG_LV_DISP_SPI_CLK=18

CONFIG_LV_DISPLAY_USE_SPI_CS=y

CONFIG_LV_DISP_SPI_CS=5

CONFIG_LV_DISPLAY_USE_DC=y

CONFIG_LV_DISP_PIN_DC=16

CONFIG_LV_DISP_PIN_RST=21

CONFIG_LV_DISP_PIN_BUSY=35

# CONFIG_LV_ENABLE_BACKLIGHT_CONTROL is not set

CONFIG_LV_DISP_PIN_SDA=5

CONFIG_LV_DISP_PIN_SCL=4

# end of Display Pin Assignments

# end of LVGL TFT Display controller

#

# LVGL Touch controller

#

CONFIG_LV_TOUCH_CONTROLLER=0

CONFIG_LV_TOUCH_CONTROLLER_NONE=y

# CONFIG_LV_TOUCH_CONTROLLER_XPT2046 is not set

# CONFIG_LV_TOUCH_CONTROLLER_FT6X06 is not set

# CONFIG_LV_TOUCH_CONTROLLER_STMPE610 is not set

# CONFIG_LV_TOUCH_CONTROLLER_ADCRAW is not set

# CONFIG_LV_TOUCH_CONTROLLER_FT81X is not set

# CONFIG_LV_TOUCH_CONTROLLER_RA8875 is not set

# end of LVGL Touch controller

# end of Component config

In case anyone else ends up having this problem:

The problem appears to be with the lvgl low level ESP32 drivers.

After finding this:

I switched to lovyanGFX for the low level drivers and LVGL is completely happy.