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.
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.
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 );