ESP32-S3 点亮RGB接口LCD教程

一、 常用 LCD 接口简介

目前常用的驱屏方式  - - >   8080 接口 SPI 接口, RGB 接口

8080 接口 数据位传输有 8 位,  16 位和 18 位。连线分为: CS RS RD WR ,数据线。 8080 写入速度比 SPI ,但是占用的管脚资源相对 spi 接口来说较多。

SPI 接口 小屏常用的驱屏方案之一, 连线为 CS SLK SDI SDO 四根线,连线少但是软件控制比较复杂。

以上两种方式适用于 320*480 分辨率及以下的 LCD LCD 分辨率越高需要更大的 GRAM 空间,这样一来屏幕的成本就大大提高了。所以一般高于 320*480 分辨率的屏幕多数使用的是 RGB 接口的方式。

RGB 接口 大屏采用较多的模式,数据位传输也有 16 位和 18 , 24 , 之分。连线一般有: CLK VSYNC HSYNC DE ,数据线。 RGB 接口的屏一般不带 GRAM ,价格相对比较便宜。通过数据线直接将数据写入屏幕, 常用于显示视频或动画。

二、开发环境及硬件准备

ESP32-S3 SDK

https://github.com/espressif/esp-idf

ESP32 - S3 SDK 环境搭建文档 :

https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32s3/get-started/index.html

 

Esp32- S3 官方驱动 RGB example:

https://github.com/espressif/esp-idf/tree/master/examples/peripherals/lcd/rgb_panel


注意事项 :

有些屏幕驱动芯片需要先使用 SPI 配置参数 官方历程不带 …. 需要自己手动添加 SPI 相关的配置,官方例程适用于自带默认参数的屏幕。

 

硬件准备

1.  ESP32-S3 PSRAM 的开发板 ,推荐使用 ESP32-S3R8 的芯片。

2.  通用 RGB 接口显示屏, 16 位宽

3.  用于供电和烧录的 USB 电缆

     硬件连接示意图

    

二、 使用 ESP32-S3 点亮 SPI 配置 +RGB 接口屏幕。

RGB 接口驱动芯片一般都不带显存,需要 MCU 准备充足的显存空间,一般的 MCU 都没有这么大的 RAM ,但 ESP32- S3 (S3R8) 带有 8 线 8M PS RAM

         

ESP32-S3 是一款低功耗的 MCU 系统级芯片 (SoC) ,支持 2.4 GHz Wi-Fi 和低功耗蓝牙 (Bluetooth® LE) 双模无 线通信。芯片集成了 Xtensa® 32 LX7 双核处理器、超低功耗协处理器、 Wi-Fi 基带、蓝牙基带、 RF 模块以及 外设。芯片的功能框图如下图所示。

 

下面分析一下官方 rgb_panel 的例程。

1.  先将控制 LCD 背光的引脚配置为输出模式,通过设置 IO 的高低电平来控制 LCD 背光的亮灭。

2、  LCD RG B 接口相关 配置
     分为两大部分

1)    RGB 接口所需要配置的 IO
2)  RGB 接口所需的时序参数

  

使用的屏幕数据格式是 RGB565 ,因此数据宽度设置为 16 位。

ESP32-S3 搭载 Xtensa® 32 LX7 双核处理器, 拥有 45 个可编程 GPIO 主频高达 240 MHz ,直接将时钟设置为 240MHz


注意事项:

RGB 面板的帧缓冲区位于 ESP (与其他基于控制器的 LCD 不同,帧缓冲区位于外部芯片中)。由于帧缓冲区通常会消耗大量 RAM (取决于 LCD 分辨率和颜色深度),建议将帧缓冲区放入 PSRAM 。但是在 PSRAM 中放置帧缓冲区会将 PCLK 限制在 12MHz 左右(由于 PSRAM 的带宽)。

 

EXAMPLE_LCD_PIXEL_CLOCK_HZ   默认是 10MHz (实测可以跑到 15MHz )。

RGB 时序结构可以参考下面的时序结构图

至此 LCD 相关的配置已经完成,接下来就是通过这些配置来初始化 LCD 屏幕,并显示图像。

1)  通过配置将 LCD 屏幕初始化完成,并打开 LCD 屏幕的背光。

2)  ESP 系列芯片都是上的 LVGL ,需要初始化 LVGL 相关的库,将屏幕驱动和 LVGL 对接,就可以直接使用 lvgl 进行 UI 的开发。

3)  下面以 LVGL 官方的演示示例,展示屏幕的显示效果。 ( 可以将 lvgl 库移植到 components 里面,可以直接调用官方演示 demo)

编译: idf.py build

烧录: idf.py -p PORT   -b BAUD   flash

PORT: 端口号
BAUD: 波特率

显示效果如下 :





请使用浏览器的分享功能分享到微信等