|
esp32+sd卡+lvgl,用的是240x240的屏幕
把gui生成的.c文件,一起烧到程序里的图片lvgl正常显示,但是个人技术原因,只能烧4m的程序,想显示视频远远不够
就采用了sd+文件系统的形式,但是显示出来有条纹,麻了找不出原因。
现象如下:
我是分10次缓存刷新一个图片,我加了延时发现,他本来已经正常显示了,但是正常调用 my_disp_flush的时候就上一个刷新出来的就变成条纹了
找找了好久都没有分析是哪里有问题
具体分析如下:
void my_disp_flush( lv_disp_drv_t *disp_drv, const lv_area_t *area, lv_color_t *color_p )
{
log_d("start");
delay(3000);
uint32_t w = ( area->x2 - area->x1 + 1 );
uint32_t h = ( area->y2 - area->y1 + 1 );
tft.startWrite();
tft.setAddrWindow( area->x1, area->y1, w, h );
log_d("is2");
tft.pushColors( ( uint16_t * )&color_p->full, w * h, true );
tft.endWrite();
lv_disp_flush_ready( disp_drv );
log_d("lv_disp_flush_read");
}
lv_conf.h
/*API for FATFS (needs to be added separately). Uses f_open, f_read, etc*/
#define LV_USE_FS_FATFS 1
#if LV_USE_FS_FATFS
#define LV_FS_FATFS_LETTER 'A' /*Set an upper cased letter on which the drive will accessible (e.g. 'A')*/
#define LV_FS_FATFS_CACHE_SIZE 240*120 /*>0 to cache this number of bytes in lv_fs_read()*/
#endif
发现#define LV_FS_FATFS_CACHE_SIZE加大可以减少条纹,或者缓存Buf直接240x240直接显示就没有问题,但是这个芯片只有300k,定义不了这么多,有没有大佬遇到这样的情况。非常感谢
|
-
|