基于ESP32-S3驱动RGB的86中控面板如何解决画面飘移、撕裂问题

前言:

作为Espressif(乐鑫科技)大中华区合作伙伴及sigmastar(厦门星宸)VAD合作伙伴,同时启明智显也推出了极具性价比的HMI人机交互应用方案的M系列(M3C\M3A\M3\M4)芯片、核心板,我们不仅用心整理了你在开发过程中可能会遇到的问题以及快速上手的简明教程供开发小伙伴参考。同时也用心整理了乐鑫及星宸科技的新产品、新方案的主要特点及应用以及M系列芯片、核心板、开发板软硬件全开源!希望你能第一时间了解并快速用上好的方案和产品!

今天为大家带来的技术分享主要是:ESP32-S3驱动RGB的4寸86中控面板如何解决画面飘移、撕裂问题,且适用于所有RGB屏幕。

ZX3D95CE01S-TR-4848

为什么驱动 RGB LCD 屏幕时出现偏移(显示画面整体漂移)?

原因

  • PCLK 设置过高,PSRAM 带宽跟不上。
  • List item 受写 flash 操作影响,期间 PSRAM 被禁用。

配置方面

  • 提高 PSRAM 和 flash 带宽,设置 flash 为 QIO 120 M,PSRAM 为 Octal 120 M。
  • 开启 CONFIG_COMPILER_OPTIMIZATION_PERF。
  • 降低 data_cache_line_size 到 32 Byte。
  • 开启 CONFIG_SPIRAM_FETCH_INSTRUCTIONS 和 CONFIG_SPIRAM_RODATA。
  • 开启 CONFIG_LCD_RGB_RESTART_IN_VSYNC,可能会导致闪花屏和降帧率,一般不推荐,可以尝试。

应用方面

  • 如果需要使用 Wi-Fi 和连续写 flash 的操作,请采用 XIP PSRAM + RGB Bounce buffer 的方法,设置步骤如下:
  • 确认 ESP-IDF 版本为较新(> 2022.12.12)的 release/v5.0 及以上,因为旧版本不支持 XIP PSRAM 的功能。
  • 确认 PSRAM 配置里面是否能开启 SPIRAM_FETCH_INSTRUCTIONS 和 SPIRAM_RODATA 这两项(如果 rodata 段数据过大,会导致 PSRAM 空间不够)。
  • 确认内存(SRAM)是否有余量,大概需要占用 [10 * screen_width * 4] 字节。
  • 需要将 Data cache line size 设置为 64 Byte(可设置 Data cache size 为 32 KB 以节省内存)。
  • 如以上均符合条件,那么就可以参考 文档 修改 RGB 驱动为 Bounce buffer 模式。
  • 如操作 Wi-Fi 仍存在屏幕漂移问题,可以尝试关闭 PSRAM 里 CONFIG_SPIRAM_TRY_ALLOCATE_WIFI_LWIP 一项(会占用较大 SRAM)。
  • 设置后带来的影响包括:CPU 使用率升高、可能会造成中断看门狗复位、会造成较大内存开销。
  • 短时操作 flash 导致漂移的情况,如 wifi 连接等操作前后,可以在操作前调用
  • esp_lcd_rgb_panel_set_pclk() 降低 PCLK(如 6 MHz)并延时大约 20 ms(RGB
  • 刷完一帧的时间),然后在操作结束后提高 PCLK 至原始水平,期间可能会造成短暂的闪白屏现象。
  • 使能 esp_lcd_rgb_panel_config_t 中的 flags.refresh_on_demand,通过调用
  • esp_lcd_rgb_panel_refresh() 接口手动刷屏,在保证屏幕不闪白的情况下尽量降低刷屏频率。
  • 如果无法避免,可以调用 esp_lcd_rgb_panel_restart() 接口重置 RGB 时序,防止永久性漂移。

以启明智显ZX3D95CE01S-TR-4848 86盒为例:

一、控件刷新时出现的撕裂

产生原因:

  • RGB屏幕刷新时RAM的读取和控件RAM的写入时序不同步,导致画面出现撕裂

解决方案:

  • 启明智显开源SDK里已经适配LVGL的刷新,按照默认RGB配置运行即可。

二、屏幕出现夸张的整体花屏或偏移,无法恢复

产生原因:

  • FLASH与PSRAM共用一套硬件,当FLASH进行写入或擦除时,PSRAM会出现长时间无法访问,导致RGB外设无法读取正确的数据.
  • PSRAM带宽被其他应用程序全部占据,导致RGB外设无法正常获取图像数据。

会出现花屏或偏移的情况:

  • NVS操作、Wi-Fi的开启、蓝牙的开启、OTA等。
  • 有应用程序大量且长时间不间断地访问PSRAM,并且具有较高的优先级

解决方案:

  • IDF需要更新至4.4.5版本及以上,确保支持XIP模式(片内执行)
  • 参考ZX3D95CE01S-TR-4848/sdkconfig.defaults.menuconfig里面配置Cache fetch instructions from SP1 RAM和Cache load read only data from SPI RAM
  • 修改对应板子的qmsd- screen- rgb.c里的bounce- buffer- size- px
  • 设置为QMSD- SCREEN- WIDTH* 16,开启CPU搬运RGB数据。此选项会导致内存被使用: QMSD- SCREEN -WIDTH162(BYTE)

代码建议

  • 写NVS时不能频繁进行写入,建议在页面切换或保存时再写入
  • 当RODATA太大时,可以将文件直接嵌入到bin文件中,参考: components-ext/qmsd audio/mp3player/example。程序中可以按数组访问。如果嵌入的文件太大,超过8M,需要将IDF更新至5.1及以上版本
  • 22
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 首先,ESP32-S3是一款强大的微控制器,它可以通过GPIO引脚来驱动各种外设,包括LCD显示。ST7789是一款高速SPI接口驱动的彩色LCD控制器芯片,它可以驱动各种类型的彩色LCD显示。 要驱动ST7789显示,首先需要连接ESP32-S3的SPI接口和ST7789芯片,然后需要编写SPI通信程序。这个程序需要使用SPI库来控制SPI总线,同时通过GPIO引脚来控制ST7789芯片的复位、片选等引脚。接下来,需要编写初始化程序来设置ST7789芯片的显示模式和显示参数,如分辨率、字体大小等等。最后,可以编写显示程序来在LCD显示上显示想要的图形、文字等内容。 在驱动ST7789时需要注意几点。首先,需要根据ST7789的数据手册设置正确的初始化参数,以确保LCD显示效果正常。其次,在数据传输过程中需要注意时序控制,否则会导致传输数据出错。最后,需要注意LCD显示带宽的限制,以避免传输速度过慢或数据传输错误。 总之,驱动ST7789需要同时注意ESP32-S3和ST7789的特性和要求,编写合适的程序来完成SPI通信和LCD显示。不仅需要掌握SPI接口的编程技能,还需要熟悉ST7789芯片的工作原理和各种参数设置,才能保证LCD显示效果的稳定性和精准度。 ### 回答2: ESP32-S3是一款集成了WiFi和蓝牙功能的微控制器,可用于IoT和无线通信应用。st7789是一款常用的TFT-LCD显示驱动器,可用于控制显示分辨率为240x320的彩色幕。 要驱动st7789显示,需要将SPI总线与ESP32-S3的I/O口连接。使用SPI总线可以更快地传输数据,增加显示刷新速度。要驱动视觉效果,我们可以使用Adafruit GFX库或其他类似库。这些库提供了绘制各种形状和文本的函数,可动态呈现图形而无需逐个像素地写入。 在编写代码时,需要将st7789的初始化和配置放在setup函数中。这包括设置databit和频率以及其他控制参数。然后,将渲染过程放在主循环中,以确保显示持续更新。 总的来说,驱动st7789显示ESP32-S3并不困难,只需要连接正确的SPI信号和使用适当的库即可。在实际应用中,可以根据需要进行优化和调整以获得更好的性能和视觉效果。 ### 回答3: ESP32-S3是一款高性能、高集成度、低功耗的Wi-Fi SoC芯片,具有强大的硬件支持和易于开发的软件API。ST7789是一款早期的SPI接口驱动的彩色液晶显示器,可以用于显示文本和图像,并具有高亮度和广泛的工作温度范围。 要驱动ST7789液晶幕,首先需要连接ESP32-S3芯片和ST7789显示器。可以通过SPI接口来实现连接。在接线完成后,需要正确配置ESP32-S3芯片的SPI引脚。配置后,通过SPI接口向ST7789发送一系列命令和数据,从而控制液晶幕的显示。 为了方便驱动ST7789液晶幕,可以使用现有的驱动程序库。例如,Adafruit_ST7789库(https://github.com/adafruit/Adafruit-ST7789-Library)可以用于驱动ST7789液晶幕,支持SPI接口和多种显示模式,如全彩色、红色、黑色和白色。可以根据具体的需求进行配置。 在使用ESP32-S3驱动ST7789液晶幕时应该注意一些问题。尽可能避免长时间运行高亮度显示,以防止液晶幕老化。在发送命令和数据时,应该根据液晶幕的规格进行配置。如果具有多个SPI设备,则应注意选择正确的设备。为了提高显示效果,可以使用外部电源供电以提高工作电压。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BoRuiYiQi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值