My LCD does not display whole screen

Don’t use I2C. Use SPI.
According the SSD1327 manual. Maximum clock frequency for I2C is 400 kHz (2.5 us cycle time). Even with this clock, it would need too much time.

SPI’s maximum clock frequency is 10 MHz (100 ns cycle time). Which is 25 times faster.

Yes SPI is better and here is example cb

static void my_flush_cb(lv_disp_drv_t *disp_drv, const lv_area_t *area, lv_color_t *color_p)
{
	int16_t x, y;
	uint8_t *buf = (uint8_t*) color_p;

	for(y = area->y1; y < area->y2; y++) {

		for(x = area->x1; x < area->x2; x++) {
			SSD1327_DrawPixel(x, y, (uint8_t)color_p->full);
			color_p++;
		}
	}

	lv_disp_flush_ready(disp_drv);

 	SSD1327_Command(SSD1327_SETROWADDRESS);
	SSD1327_Command(area->y1);
	SSD1327_Command(area->y2);
  HAL_I2C_Mem_Write(ssd1337_i2c, SSD1327_I2C_ADDRESS, 0x40, 1, (uint8_t*)&buffer[64*area->y1], 64 * (area->y2-area->y1), 1000);      //maybe -1

}

I want to use SPI, but I want to try it through I2C.

It doesn’t show full screen…

This is ok. Flush_cb is called repeatly over all screen if your config is ok.

I think it might be your flush callback because I had the same problem before. You can make sure your flush callback is OK by creating a one color buffer and using the flush callback to display the screen without LVGL.

Try show what is rendered.

my config is ok. So flush_cb is called repeatly. When debugging flush_cb, that area->x, area->y values does not change.

Did you mean SSD1327_DrawPixel(x, y, Color) instead of SSD1327_DrawPixel(x, y, 0x00) ??

How can i show you?

New problem is when debugging function flush_cb, that area->x, area->y values does not change.

Place into flush cb
Serial.printf("%d %d %d %d \r\n",area->x1,area->x2,area->y1,area->y2);
and show here serial out.
Ofcourse you need other func for STM if not on arduino.
Plus i mean your issue is not started tick handler for lvgl. Then your loop for rendering next areas not work.

  lv_timer_handler(); /* let the GUI do its work */
  delay( 5 );