ST7735(128*160) interface with esp32 framework : ESPIDF

my lvgl screen is not applied to whole display and my hello world example is diplayed in a slanted form i am not getting straight one i gave hor : 160 and ver : 128 orientation : landscape dpi :15

i am using esp32 wrover IE module custom board “esp-idf” FRAME WORK

i want to get basic widgets on my display like button, tabview ,image and prper labels

i have cloned lvgl_port_esp32 project from git and made chnages as suggested in components in lvgl configuration and lvgl tft display configuration mine is a non touch display

Code to reproduce

i did not change the code it is an eample code given by lvlgl

The code block(s) should be between ```c and ``` tags:

/*You code here*/
display inti : FOR st7735
void st7735s_init(void)

    lcd_init_cmd_t init_cmds[]={
		{ST7735_SWRESET, {0}, 0x80},         		// Software reset, 0 args, w/delay 150
		{ST7735_SLPOUT, {0}, 0x80},                 // Out of sleep mode, 0 args, w/delay 500
		{ST7735_FRMCTR1, {0x01, 0x2C, 0x2D}, 3},    // Frame rate ctrl - normal mode, 3 args: Rate = fosc/(1x2+40) * (LINE+2C+2D)
		{ST7735_FRMCTR2, {0x01, 0x2C, 0x2D}, 3},    // Frame rate control - idle mode, 3 args:Rate = fosc/(1x2+40) * (LINE+2C+2D)
		{ST7735_FRMCTR3, {0x01, 0x2C, 0x2D,0x01, 0x2C, 0x2D}, 6}, //Frame rate ctrl - partial mode, 6 args:Dot inversion mode. Line inversion mode
		{ST7735_INVCTR, {0x07}, 1},                 // Display inversion ctrl, 1 arg, no delay:No inversion
		{ST7735_PWCTR1, {0xA2,0x02, 0x84}, 3},      // Power control, 3 args, no delay:-4.6V AUTO mode
		{ST7735_PWCTR2, {0xC5}, 1},                 // Power control, 1 arg, no delay:VGH25 = 2.4C VGSEL = -10 VGH = 3 * AVDD
		{ST7735_PWCTR3, {0x0A, 0x00}, 2},           // Power control, 2 args, no delay: Opamp current small, Boost frequency
		{ST7735_PWCTR4, {0x8A,0x2A }, 2},           // Power control, 2 args, no delay: BCLK/2, Opamp current small & Medium low
		{ST7735_PWCTR5, {0x8A, 0xEE}, 2},           // Power control, 2 args, no delay:
		{ST7735_VMCTR1, {0x0E}, 1},                 // Power control, 1 arg, no delay:
#if ST7735S_INVERT_COLORS == 1
		{ST7735_INVON, {0}, 0},                     // set inverted mode
 		{ST7735_INVOFF, {0}, 0},                    // set non-inverted mode
		{ST7735_COLMOD, {0x05}, 1},               	// set color mode, 1 arg, no delay: 16-bit color
		{ST7735_GMCTRP1, {0x02, 0x1c, 0x07, 0x12,
			0x37, 0x32, 0x29, 0x2d,
			0x29, 0x25, 0x2B, 0x39,
			0x00, 0x01, 0x03, 0x10}, 16},           // 16 args, no delay:
		{ST7735_GMCTRN1, {0x03, 0x1d, 0x07, 0x06,
			0x2E, 0x2C, 0x29, 0x2D,
			0x2E, 0x2E, 0x37, 0x3F,
			0x00, 0x00, 0x02, 0x10}, 16},           // 16 args, no delay:
		{ST7735_NORON, {0}, TFT_INIT_DELAY},       	// Normal display on, no args, w/delay 10 ms delay
		{ST7735_DISPON, {0}, TFT_INIT_DELAY},       // Main screen turn on, no args w/delay 100 ms delay
		{0, {0}, 0xff}

Screenshot and/or video

1 Like

Slanting is usually caused by your width and/or height handling being off-by-one somewhere in flush_cb.

thank you for your reply

it worked , i have adjusted my row start from 1 to 0 , can you also suggest on how to get the screen to be matched to display size my display size is 128x160 and i am getting only a 80x160 screen

@harshit Did you ever figure this out? Currently facing the same issue: content is not being drawn on the entire screen despite having disp_drv.hor_res = 160; disp_drv.ver_res = 128;

EDIT: setting both COLSTART and ROWSTART to zero in the st7735s.h file fixes this issue.