QSPI 接口
QSPI(Quad Serial Peripheral Interface,四线串行外设接口)是 SPI 接口的扩展模式。与单线数据传输的传统 SPI 相比,QSPI 使用四条数据线并行传输数据,在保持串行接口布线方式的同时提高数据吞吐能力,适用于小尺寸、高分辨率或高刷新率 LCD。
在 LCD 应用中,QSPI 由同一个接口外设完成命令传输和色彩数据传输。LCD 驱动芯片接收初始化命令、寄存器参数和图像数据,并根据自身是否集成 GRAM(Graphics RAM,图形 RAM)采用不同的显示刷新方式。
接口信号
QSPI LCD 通常包含以下信号:
| 信号 | 说明 |
|---|---|
SCLK | QSPI 时钟信号 |
CS | 片选信号,通常为低电平有效 |
IO0–IO3 | 四线数据通道,用于传输命令、参数和色彩数据 |
RST | LCD 复位信号 |
BL | 背光控制信号 |
QSPI 只负责显示控制器的接口通信。带触摸功能的 LCD 通常另外使用 I2C 连接触摸控制器,触摸控制器的地址、复位和中断信号由具体产品决定。
硬件驱动框架
QSPI LCD 的硬件驱动方式取决于 LCD 驱动芯片是否内置 GRAM。
内置 GRAM 的 QSPI LCD
内置 GRAM 的驱动芯片可以在内部保存完整或局部的图像数据。主控通过 QSPI 发送命令和局部色彩数据,驱动芯片将接收的数据写入内部 GRAM,再按照面板的刷新时序将 GRAM 内容显示到屏幕上。
这一工作方式与 SPI/I80 LCD 类似:主控不需要持续输出整帧 RGB 数据,图像刷新主要由 LCD 驱动芯片完成。以 SPD2010 为例,其 QSPI 接口用于传输命令和显示数据,触摸功能通常通过独立的 I2C 接口连接。
未内置 GRAM 的 QSPI LCD
部分 QSPI 驱动芯片不具备足够的内部 GRAM,主控需要持续传输显示数据,才能维持面板刷新。这种工作方式需要在主控侧准备帧缓冲区,数据传输和面板刷新之间的时序关系也更接近 RGB LCD。
因此,QSPI 并不直接决定系统所需的帧缓冲大小。设计显示应用时,应同时确认驱动芯片是否内置 GRAM、目标分辨率、像素格式、刷新率以及主控可用的 SRAM/PSRAM 容量。
ESP-IDF 软件框架
在 ESP-IDF 中,QSPI LCD 通常通过 esp_lcd 组件进行开发。软件可以分为以下三层:
- SDK 层:ESP-IDF 提供 QSPI 外设驱动和
esp_lcd通用 API,用于初始化接口、传输命令和色彩数据,以及执行显示反转、镜像和刷新等操作。 - Driver 层:LCD 驱动组件根据具体控制器型号完成复位、初始化命令和显示参数配置,并创建
esp_lcd_panel_handle_t类型的 LCD 设备句柄。接口设备通常使用esp_lcd_panel_io_handle_t类型的句柄。 - APP 层:应用通过 LCD 通用 API 或 LVGL 等 GUI 框架完成图像、文字、动画和触摸交互功能。
即使使用相同的 LCD 驱动芯片,不同屏幕的初始化命令、分辨率、像素格式和时序参数也可能不同。移植驱动时,应以对应屏幕的硬件资料和初始化参数为准。
常见 QSPI 驱动组件
乐鑫 esp_lcd 及相关 ESP 组件中已提供多种 QSPI LCD 驱动,常见控制器包括:
AXS15231BGC9B71SH8601SPD2010ST77903ST77916ST77922CO5300
驱动组件会随 ESP-IDF 和 ESP 组件仓库持续更新。使用前请确认组件支持的接口模式、初始化参数和目标 ESP 芯片版本。
参考资料
QSPI LCD 的开发流程和 esp_lcd 软件框架可参考 乐鑫 LCD 开发指南。