硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1382|回复: 5
收起左侧

[LVGL] lvgl显示条纹,其他区域正常的问题

[复制链接]

1

主题

3

回帖

6

积分

新手上路

积分
6
发表于 2024-7-22 16:24:40 | 显示全部楼层 |阅读模式
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,定义不了这么多,有没有大佬遇到这样的情况。非常感谢



1721636529565.jpg
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115896
QQ
发表于 2024-7-23 10:21:33 | 显示全部楼层
单步调试my_disp_flush进去,看看是调用那个导致的。
回复

使用道具 举报

1

主题

3

回帖

6

积分

新手上路

积分
6
 楼主| 发表于 2024-7-23 15:43:13 | 显示全部楼层
eric2013 发表于 2024-7-23 10:21
单步调试my_disp_flush进去,看看是调用那个导致的。

在板子和环境调试比较难搞,已经解决了
回复

使用道具 举报

1

主题

3

回帖

6

积分

新手上路

积分
6
 楼主| 发表于 2024-7-23 15:57:51 | 显示全部楼层
已解决:破案了。
背景:用的以前stm32的lcd硬件方案,那个方案cs是直接接地的,放到esp不行,不知道是哪里初始化错误了,vspi(sd卡)和hspi(lcd)是同输出的,所以lcd是一直可以写入的,就导致了这个原因。
过程:还是思维不行,因为这个板子单步调试教程少,一直查网上的资料和用log输出信息看哪里有问题,浪费了大量时间。其实问题是这样的,esp32正常读取了sd卡的bin文件,我用的是分6次缓存刷新一次图片,第一次正常刷新,然后到再次sd卡读数据,由于我的配置,sd卡通信的时候同步lcd也在通信,就会spi也同时写入lcd数据,显示出现问题,加上cs,无论怎么通信没有拉cs,lcd就不动。也是花了好多时间才想起我有逻辑分析仪,一查就发现了,所以排查思维还是很重要,自己都古板了。
回复

使用道具 举报

1

主题

3

回帖

6

积分

新手上路

积分
6
 楼主| 发表于 2024-7-23 16:06:16 | 显示全部楼层
已解决:破案了。
背景:用的以前stm32的lcd硬件方案,那个方案cs是直接接地的,放到esp不行,不知道是哪里初始化错误了,vspi(sd卡)和hspi(lcd)是同输出的,所以lcd是一直可以写入的,就导致了这个原因。
过程:还是思维不行,因为这个板子单步调试教程少,一直查网上的资料和用log输出信息看哪里有问题,浪费了大量时间。其实问题是这样的,esp32正常读取了sd卡的bin文件,我用的是分6次缓存刷新一次图片,第一次正常刷新,然后到再次sd卡读数据,由于我的配置,sd卡通信的时候同步lcd也在通信,就会spi也同时写入lcd数据,显示出现问题,加上cs,无论怎么通信没有拉cs,lcd就不动。也是花了好多时间才想起我有逻辑分析仪,一查就发现了,所以排查思维还是很重要,自己都古板了。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115896
QQ
发表于 2024-7-24 07:52:24 | 显示全部楼层
jun685 发表于 2024-7-23 16:06
已解决:破案了。
背景:用的以前stm32的lcd硬件方案,那个方案cs是直接接地的,放到esp不行,不知道是哪 ...

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-5-25 16:26 , Processed in 0.652584 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表