LCD¶
Copyright © Quectel Wireless Solutions Co., Ltd. 2026. All rights reserved.
基础知识¶
Liquid Crystal Display,简称 LCD,是一种利用液晶分子控制光线通过与否来显示图像的平面面板。其核心在于驱动电路接收来自处理器(如MCU、MPU)的图像数据,并通过特定的物理接口将其转换为控制每个像素点所需的电压。
LCD驱动包括以下几个基本要素:
LCD面板:显示图像的物理界面,由大量的像素点矩阵构成。
驱动IC:面板的关键芯片,负责接收主机发送的图像数据与指令,并生成精确的电压来控制液晶偏转。
接口:连接主控处理器与LCD驱动IC的物理通道和通信协议,负责传输图像数据、控制指令和时钟信号。
背光:为被动发光的LCD提供光源的组件,通常需要独立的电源驱动。
LCD驱动流程概述¶
LCD驱动流程是指主控处理器通过特定接口向LCD驱动IC发送图像数据和控制信号,最终在屏幕上点亮像素的过程。这个过程的核心在于接口协议的时序交互,确保数据能够被驱动IC准确接收并锁存。
LCD的驱动流程详细步骤¶
初始化:主控处理器向LCD驱动IC发送一系列指令,配置其工作模式,如颜色深度、扫描方向等。
帧数据传输:主控处理器将帧缓存中的图像数据通过数据线发送,驱动IC接收数据并将其存储到内部的GRAM中。
行/像素驱动:驱动IC将GRAM中的数据按行取出,并转换为对应的模拟电压,施加到相应的行和列电极上,控制每个像素的透光率。
图像刷新:当一帧图像完全显示后,驱动IC等待下一帧数据的到来。对于动态画面,此过程以固定的刷新率循环进行。
LCD驱动常用接口模式¶
SPI接口¶
SPI接口是驱动中小型LCD屏的常用串行接口,以其线路简单、协议成熟而广泛应用。根据数据线方向可分为I型(双向)和II型(独立输入输出)。
SPI 模式 |
数据线配置 |
关键特征 |
|---|---|---|
3-Line SPI I |
SCLK, CS, SDA(双向) |
最省引脚,D/CX信号通过指令模拟 |
4-Line SPI I |
SCLK, CS, SDA(双向), D/CX |
最常用,有独立D/CX线,协议直观 |
3-Line SPI II |
SCLK, CS, SDA(输入), SDO(输出) |
数据线独立,支持读状态和更高时钟 |
4-Line SPI II |
SCLK, CS, SDA(输入), SDO(输出), D/CX |
全功能SPI,兼具独立数据线和D/CX |
2 Data Lane SPI |
SCLK, CS, D/CX, SDA0, SDA1 |
双数据线并行,传输速率翻倍 |
3-Line SPI I (双向数据线)¶
线路配置:SCLK(时钟)、CS(片选)、SDA(双向数据线)
工作原理:通过单一的SDA线进行双向数据传输。命令/数据选择(D/CX)通过发送特定的指令字节来模拟,而非使用独立的物理引脚。
应用场景:最节省引脚的模式,适合对成本极其敏感、MCU引脚资源非常紧张的应用。
4-Line SPI I(双向数据线)¶
线路配置:SCLK、CS、SDA(双向数据线)、D/CX(命令/数据选择)
工作原理:使用独立的D/CX引脚来直接区分当前传输的是命令(低电平)还是数据(高电平),协议简单直观,无需模拟。
应用场景:最常用、最标准的SPI LCD驱动方式,在引脚资源和使用便利性间取得良好平衡。
3-Line SPI II(独立输入输出)¶
线路配置:SCLK、CS、SDA(数据输入)、SDO(数据输出)
工作原理:数据输入和输出分离,支持全双工通信。命令/数据选择仍需要通过指令模拟。
应用场景:需要读取LCD状态寄存器或显存数据的应用,由于输入输出隔离,可支持更高的通信时钟频率。
4-Line SPI II (独立输入输出)¶
线路配置:SCLK、CS、SDA(数据输入)、SDO(数据输出)、D/CX
工作原理:结合了独立数据线和独立D/CX信号的双重优势,既能高速读写,又具有清晰简单的协议。
应用场景:高性能SPI应用,需要频繁读取显示状态或进行高速双向通信的场合。
2 Data Lane SPI (双数据线SPI)¶
线路配置:SCLK、CS、D/CX、SDA0、SDA1(双数据线)
工作原理:两条数据线并行传输数据,在相同时钟频率下实现近乎双倍的数据传输率。
应用场景:需要较高刷新率的中分辨率屏幕,在保持SPI接口简单性的同时有效提升带宽。
SPI接口通用特点¶
优点:引脚占用少,协议简单,成本低廉,几乎所有MCU都原生支持。
缺点:传输带宽有限,通常适用于分辨率较低(如QVGA及以下)的屏幕。
开发要点:需仔细阅读驱动IC数据手册,正确配置接口模式。
MCU接口¶
基本概念:一种面向控制的并行接口,因早期在微控制器单元中广泛应用而得名。它直接将驱动IC视为一个带显存的外设。
工作原理:
8080模式:基于Intel 8080总线时序,控制引脚包括写使能、读使能、命令/数据选择。
6800模式:基于Motorola 6800总线时序,使用使能信号和读写信号进行控制。
数据传输:通过8位、16位或18位的并行数据总线进行。
优点:
接口简单,易于在低端MCU上实现。
无需专用视频控制器,成本低。
在显示静态图像时功耗较低。
缺点:
并行总线占用IO口多。
传输速率有限,通常用于中小尺寸分辨率较低的屏幕。
RGB接口¶
基本概念:一种直接传输像素数据的并行接口。它模拟了显示器标准的信号时序,将每个像素的RGB数据、行场同步信号和时钟直接送给驱动IC。
工作原理:
主控端通常需要专用的LCD控制器。
数据线包括:RGB各6/8位数据线、像素时钟、行同步、场同步。
数据在像素时钟的驱动下连续传输,无需等待应答。
优点:
传输速率高,支持大尺寸和高分辨率的屏幕。
显示动态画面流畅,CPU负担小。
缺点:
需要大量的数据线,布线复杂。
对时序要求严格。
MIPI DSI接口¶
基本概念:由MIPI联盟制定的串行显示接口。它采用差分信号传输,将数据和时钟打包成数据包进行高速串行通信。
工作原理:
采用1对时钟线和1~4对数据线。
传输的数据是打包后的指令和视频流数据包。
支持高速模式和低功耗模式,在不需要刷新显示时可以切换到低功耗模式以节省电量。
优点:
线数少,布线简单,抗干扰能力强。
传输速率极高,支持超高分辨率和高刷新率。
功耗控制优秀。
缺点:
协议复杂,开发调试难度较大。
通常需要主控芯片原生支持。
接口选择与应用场景说明¶
SPI 接口:适用于引脚资源紧张、显示内容相对简单且屏幕尺寸较小的设备,如智能手表、小型物联网设备显示屏、便携式仪表的单色或低色彩深度屏幕。
MCU接口:适用于计算能力有限、显示内容相对简单的嵌入式设备,如智能家居面板、工业仪表盘等。
RGB接口:适用于需要显示丰富动态内容、但对成本和功耗不是极度敏感的设备,如中高端工业HMI、车载显示屏等。
MIPI DSI接口:是现代移动设备(智能手机、平板电脑)和高性能嵌入式设备的主流选择,追求高分辨率、高刷新率、低功耗和紧凑的物理设计。
API说明¶
头文件¶
qosa_lcd.h
LCD 函数列表¶
函数 |
描述 |
|---|---|
qosa_lcd_init() |
初始化LCD控制器 |
qosa_lcd_deinit() |
反初始化LCD控制器 |
qosa_lcd_clear_screen() |
清除LCD屏幕 |
qosa_lcd_display_on() |
开启LCD显示 |
qosa_lcd_display_off() |
关闭LCD显示 |
qosa_lcd_write_cmd() |
向LCD发送配置命令 |
qosa_lcd_write_cmd_data() |
向LCD发送数据 |
qosa_lcd_flush_cmd() |
刷新所有缓存的命令和命令数据 |
qosa_lcd_read_cmd_data() |
LCD控制器读取LCD配置 |
qosa_lcd_write() |
向LCD指定位置发送图片数据 |
qosa_lcd_ioctl() |
LCD控制接口 |
函数定义¶
LCD基础控制¶
qosa_lcd_init¶
函数原型¶
qosa_lcd_error_e qosa_lcd_init(qosa_lcd_channel_e lcd_no)
功能描述¶
初始化指定通道的LCD控制器,配置相关硬件参数和驱动设置
参数说明¶
参数名 |
类型 |
是否必填 |
范围/单位 |
说明 |
|---|---|---|---|---|
lcd_no |
|
是 |
参考 |
LCD通道号选择 |
返回值说明¶
成功返回 QOSA_LCD_SUCCESS,失败返回其他错误码
备注
注意:
在调用其他LCD函数之前必须先调用此函数进行初始化
重复初始化同一通道会返回
QOSA_LCD_INIT_REPEAT_ERR错误初始化过程会配置GPIO、SPI等硬件外设,请确保相关引脚未被其他功能占用
qosa_lcd_deinit¶
函数原型¶
qosa_lcd_error_e qosa_lcd_deinit(qosa_lcd_channel_e lcd_no)
功能描述¶
反初始化LCD控制器,释放相关资源
参数说明¶
参数名 |
类型 |
是否必填 |
范围/单位 |
说明 |
|---|---|---|---|---|
lcd_no |
|
是 |
参考 |
LCD通道号选择 |
返回值说明¶
成功返回 QOSA_LCD_SUCCESS,失败返回其他错误码
备注
注意:
反初始化后需要重新初始化才能再次使用LCD功能
建议在系统关机或进入低功耗模式前调用此函数
反初始化会关闭显示并释放内存资源
qosa_lcd_ioctl¶
函数原型¶
qosa_lcd_error_e qosa_lcd_ioctl(qosa_lcd_channel_e lcd_no, qosa_lcd_ioctl_cmd_e cmd, void *arg)
功能描述¶
LCD控制接口,用于执行各种控制命令
参数说明¶
参数名 |
类型 |
是否必填 |
范围/单位 |
说明 |
|---|---|---|---|---|
lcd_no |
|
是 |
参考 |
LCD通道号选择 |
cmd |
|
是 |
参考 |
对应的控制命令 |
arg |
void * |
是 |
无 |
对应的控制命令参数 |
返回值说明¶
成功返回 QOSA_LCD_SUCCESS,失败返回其他错误码
备注
注意: 不同的命令需要不同类型的参数,请参考枚举体说明
显示控制¶
qosa_lcd_clear_screen¶
函数原型¶
qosa_lcd_error_e qosa_lcd_clear_screen(qosa_lcd_channel_e lcd_no, qosa_uint16_t color)
功能描述¶
使用指定颜色清除整个LCD屏幕
参数说明¶
参数名 |
类型 |
是否必填 |
范围/单位 |
说明 |
|---|---|---|---|---|
lcd_no |
|
是 |
参考 |
LCD通道号选择 |
color |
qosa_uint16_t |
是 |
0x0000~0xffff |
需要填充的颜色值(RGB565格式) |
返回值说明¶
成功返回 QOSA_LCD_SUCCESS,失败返回其他错误码
备注
注意:
颜色值应符合当前设置的输出格式(默认为RGB565)
该操作会覆盖屏幕上所有现有内容
在显示动态内容前建议先清屏以避免残影
qosa_lcd_display_on¶
函数原型¶
qosa_lcd_error_e qosa_lcd_display_on(qosa_lcd_channel_e lcd_no)
功能描述¶
开启LCD显示,使屏幕内容可见
参数说明¶
参数名 |
类型 |
是否必填 |
范围/单位 |
说明 |
|---|---|---|---|---|
lcd_no |
|
是 |
参考 |
LCD通道号选择 |
返回值说明¶
成功返回 QOSA_LCD_SUCCESS,失败返回其他错误码
备注
注意:
与 qosa_lcd_display_off 配合使用可实现低功耗控制
qosa_lcd_display_off¶
函数原型¶
qosa_lcd_error_e qosa_lcd_display_off(qosa_lcd_channel_e lcd_no)
功能描述¶
关闭LCD显示,屏幕内容不可见
参数说明¶
参数名 |
类型 |
是否必填 |
范围/单位 |
说明 |
|---|---|---|---|---|
lcd_no |
|
是 |
参考 |
LCD通道号选择 |
返回值说明¶
成功返回 QOSA_LCD_SUCCESS,失败返回其他错误码
备注
注意:
关闭显示可显著降低系统功耗
重新开启显示后,原有显示内容保持不变
qosa_lcd_write¶
函数原型¶
qosa_lcd_error_e qosa_lcd_write(qosa_lcd_channel_e lcd_no, qosa_uint8_t *buffer, qosa_uint16_t start_x, qosa_uint16_t start_y, qosa_uint16_t end_x, qosa_uint16_t end_y)
功能描述¶
向LCD指定矩形区域发送图片数据
参数说明¶
参数名 |
类型 |
是否必填 |
范围/单位 |
说明 |
|---|---|---|---|---|
lcd_no |
|
是 |
参考 |
LCD通道号选择 |
buffer |
qosa_uint8_t * |
是 |
无 |
需要发送的数据地址 |
start_x |
qosa_uint16_t |
是 |
0~屏幕最大宽度 |
起始X坐标 |
start_y |
qosa_uint16_t |
是 |
0~屏幕最大高度 |
起始Y坐标 |
end_x |
qosa_uint16_t |
是 |
0~屏幕最大宽度 |
结束X坐标 |
end_y |
qosa_uint16_t |
是 |
0~屏幕最大高度 |
结束Y坐标 |
返回值说明¶
成功返回 QOSA_LCD_SUCCESS,失败返回其他错误码
备注
注意:
坐标范围必须在LCD分辨率范围内:0 ≤
start_x≤end_x<lcd_width,0 ≤start_y≤end_y<lcd_height数据缓冲区格式应与配置的输入格式一致
大数据量传输时注意缓冲区大小,避免内存溢出
命令和数据操作¶
qosa_lcd_write_cmd¶
函数原型¶
qosa_lcd_error_e qosa_lcd_write_cmd(qosa_lcd_channel_e lcd_no, qosa_uint8_t cmd)
功能描述¶
向LCD发送配置命令
参数说明¶
参数名 |
类型 |
是否必填 |
范围/单位 |
说明 |
|---|---|---|---|---|
lcd_no |
|
是 |
参考 |
LCD通道号选择 |
cmd |
qosa_uint8_t |
是 |
0x00-0xff |
需要发送的命令 |
返回值说明¶
成功返回 QOSA_LCD_SUCCESS,失败返回其他错误码
备注
注意:
命令值需参考具体LCD驱动IC的数据手册
某些命令需要配合
qosa_lcd_write_cmd_data发送参数数据在SPI模式下,命令和数据通过D/CX引脚区分
qosa_lcd_write_cmd_data¶
函数原型¶
qosa_lcd_error_e qosa_lcd_write_cmd_data(qosa_lcd_channel_e lcd_no, qosa_uint8_t cmd_data)
功能描述¶
向LCD发送命令数据,配合命令使用
参数说明¶
参数名 |
类型 |
是否必填 |
范围/单位 |
说明 |
|---|---|---|---|---|
lcd_no |
|
是 |
参考 |
LCD通道号选择 |
cmd_data |
qosa_uint8_t |
是 |
0x00-0xff |
需要发送的命令数据 |
返回值说明¶
成功返回 QOSA_LCD_SUCCESS,失败返回其他错误码
备注
注意:
通常在前一个
qosa_lcd_write_cmd后调用,用于发送命令参数数据格式和长度取决于前导命令的要求
多个参数数据需要多次调用此函数
qosa_lcd_flush_cmd¶
函数原型¶
qosa_lcd_error_e qosa_lcd_flush_cmd(qosa_lcd_channel_e lcd_no)
功能描述¶
刷新所有缓存的命令和命令数据,确保所有操作被执行
参数说明¶
参数名 |
类型 |
是否必填 |
范围/单位 |
说明 |
|---|---|---|---|---|
lcd_no |
|
是 |
参考 |
LCD通道号选择 |
返回值说明¶
成功返回 QOSA_LCD_SUCCESS,失败返回其他错误码
备注
注意:
在批量发送命令后调用,确保所有命令被LCD控制器执行
由于LCD控制器设计不同,部分平台该函数可能无实际作用
qosa_lcd_read_cmd_data¶
函数原型¶
qosa_lcd_error_e qosa_lcd_read_cmd_data(qosa_lcd_channel_e lcd_no, qosa_uint8_t cmd, qosa_uint8_t *data, qosa_uint32_t length, qosa_uint32_t dummyCycleLen)
功能描述¶
LCD控制器读取LCD配置信息
参数说明¶
参数名 |
类型 |
是否必填 |
范围/单位 |
说明 |
|---|---|---|---|---|
lcd_no |
|
是 |
参考 |
LCD通道号选择 |
cmd |
qosa_uint8_t |
是 |
0x00~0xff |
需要读取的LCD配置地址指令 |
data |
qosa_uint8_t * |
是 |
无 |
待读取数据的地址 |
length |
qosa_uint32_t |
是 |
无 |
待读取数据的长度 |
dummyCycleLen |
qosa_uint32_t |
是 |
无 |
命令传输后驱动程序等待的虚拟周期长度 |
返回值说明¶
成功返回 QOSA_LCD_SUCCESS,失败返回其他错误码
备注
注意:
需要确保LCD驱动IC支持读取操作
dummyCycleLen参数需根据具体LCD型号设置,通常为1-2个时钟周期读取的数据格式需参考LCD驱动IC数据手册解析
数据结构定义¶
qosa_lcd_operations_t¶
/**
* @struct qosa_lcd_operations_t
* @brief LCD操作回调函数集。
*/
typedef struct
{
void (*init)(qosa_lcd_channel_e lcd_no); /*!< LCD初始化完成后执行的函数 */
void (*deInit)(qosa_lcd_channel_e lcd_no); /*!< LCD反初始化前执行的函数 */
void (*enterSleep)(qosa_lcd_channel_e lcd_no, qosa_bool_t is_sleep); /*!< 尝试显示LCD开/关前执行的函数 */
void (*setDisplayWindow)(qosa_lcd_channel_e lcd_no,uint16_t left,uint16_t top,uint16_t right,uint16_t bottom); /*!< 尝试向LCD写入数据包前执行的函数 */
qosa_uint32_t (*readId)(qosa_lcd_channel_e lcd_no); /*!< 需要读取LCD ID时执行的函数 */
} qosa_lcd_operations_t;
qosa_lcd_reset_func_t¶
/**
* @struct qosa_lcd_reset_func_t
* @brief LCD复位功能配置。
*/
typedef struct
{
qoes_gpio_num_e reset_gpio; /*!< 复位引脚对应的GPIO编号 */
qosa_uint32_t low_level_time; /*!< 复位引脚保持低电平的时间(毫秒) */
} qosa_lcd_reset_func_t;
qosa_lcd_spi_func_t¶
/**
* @struct qosa_lcd_spi_func_t
* @brief LCD SPI功能配置。
*/
typedef struct
{
qosa_spi_frame_format_e frame_format; /*!< SPI时钟极性和相位配置 */
qosa_spi_bit_order_e bit_order; /*!< SPI数据传输位序 */
qosa_spi_transmit_mode_e transmit_mode; /*!< SPI传输模式 */
qosa_spi_nss_mode_e nss_mode; /*!< SPI片选信号控制方式 */
qoes_gpio_num_e nss_gpio; /*!< 标准SPI片选引脚(若nss_mode为硬件控制,此参数无效) */
qoes_gpio_num_e ds_gpio; /*!< 使用标准SPI时,需要通过软件控制的LCD数据/命令选择引脚 */
} qosa_lcd_spi_func_t;
qosa_lcd_drv_cfg_t¶
/**
* @struct qosa_lcd_drv_cfg_t
* @brief LCD驱动配置选项。
*/
typedef struct
{
qosa_lcd_channel_e lcd_channel; /*!< LCD通道配置 */
qosa_uint8_t *lcd_name; /*!< LCD名称 */
qosa_uint32_t lcd_device_id; /*!< LCD设备ID */
qosa_uint32_t lcd_width; /*!< LCD宽度配置 */
qosa_uint32_t lcd_height; /*!< LCD高度配置 */
qosa_lcd_bus_mode_e bus_mode; /*!< LCD操作总线模式 */
qosa_lcd_input_format_opt_e lcd_input_format; /*!< LCD输入数据格式 */
qosa_lcd_output_format_opt_e lcd_output_format; /*!< LCD输出数据格式 */
qosa_lcd_operations_t *operation; /*!< LCD操作回调函数集 */
qosa_uint32_t lcd_write_frequence; /*!< LCD控制器写入频率 */
qosa_uint32_t lcd_read_frequence; /*!< LCD控制器读取频率 */
qosa_lcd_reset_func_t lcd_reset_func; /*!< LCD复位功能配置 */
qosa_lcd_spi_func_t lcd_spi_func; /*!< LCD标准SPI功能配置 */
} qosa_lcd_drv_cfg_t;
枚举类型定义¶
qosa_lcd_error_e¶
/**
* @enum qosa_lcd_error_e
* @brief LCD错误代码定义。
*/
typedef enum
{
QOSA_LCD_SUCCESS = 0, /*!< 操作成功 */
QOSA_LCD_EXECUTE_ERR = 1 | QOSA_LCD_ERRCODE_BASE, /*!< LCD执行错误 */
QOSA_LCD_MEM_ADDR_NULL_ERR, /*!< 内存地址为空 */
QOSA_LCD_INVALID_PARAM_ERR, /*!< 参数无效 */
QOSA_LCD_MEM_LOW_ERR, /*!< 内存不足 */
QOSA_LCD_INIT_REPEAT_ERR, /*!< LCD重复初始化 */
QOSA_LCD_INIT_ERR, /*!< LCD初始化错误 */
QOSA_LCD_NO_INIT_ERR, /*!< LCD未初始化 */
QOSA_LCD_OPTION_NOT_SUPPORT_ERR, /*!< LCD配置不支持 */
QOSA_LCD_OPTION_NOT_FIND_ERR, /*!< 未找到LCD配置 */
QOSA_LCD_INPUT_FORMAT_NOT_SUPPORT_ERROR, /*!< 输入格式不支持 */
QOSA_LCD_OUTPUT_FORMAT_NOT_SUPPORT_ERROR, /*!< 输出格式不支持 */
QOSA_LCD_SEM_CREATE_ERROR, /*!< 信号量创建失败 */
QOSA_LCD_SEM_WAIT_ERROR, /*!< 等待信号量失败 */
QOSA_LCD_MUTEX_NOT_CREATE_ERROR, /*!< 互斥锁未创建 */
} qosa_lcd_error_e;
qosa_lcd_channel_e¶
/**
* @enum qosa_lcd_channel_e
* @brief LCD通道枚举定义。
*/
typedef enum
{
QOSA_LCD_SPECIAL_PORT = 0, /*!< LCD专用控制器 */
QOSA_LCD_SPI_PORT_0, /*!< 标准SPI端口0 */
QOSA_LCD_SPI_PORT_1, /*!< 标准SPI端口1 */
QOSA_LCD_SPI_PORT_2, /*!< 标准SPI端口2 */
QOSA_LCD_PORT_MAX, /*!< 最大端口数 */
} qosa_lcd_channel_e;
qosa_lcd_input_format_opt_e¶
/**
* @enum qosa_lcd_input_format_opt_e
* @brief 输入数据原始格式定义。
*/
typedef enum
{
QOSA_LCD_INPUT_FORMAT_RGB565 = 0, /*!< RGB565格式输入(默认) */
QOSA_LCD_INPUT_FORMAT_RGB444, /*!< RGB444格式输入 */
QOSA_LCD_INPUT_FORMAT_RGB555, /*!< RGB555格式输入 */
QOSA_LCD_INPUT_FORMAT_RGB666, /*!< RGB666格式输入 */
QOSA_LCD_INPUT_FORMAT_RGB888, /*!< RGB888格式输入 */
QOSA_LCD_INPUT_FORMAT_GREY, /*!< 仅亮度Y分量输入 */
QOSA_LCD_INPUT_FORMAT_YUV422, /*!< YUV422格式输入 */
QOSA_LCD_INPUT_FORMAT_YUV420, /*!< YUV420格式输入 */
QOSA_LCD_INPUT_FORMAT_YUV400, /*!< YUV400格式输入 */
QOSA_LCD_INPUT_FORMAT_YUV420_3PLANE, /*!< YUV420三平面格式输入 */
QOSA_LCD_INPUT_FORMAT_MAX, /*!< 最大输入格式 */
} qosa_lcd_input_format_opt_e;
qosa_lcd_output_format_opt_e¶
/**
* @enum qosa_lcd_output_format_opt_e
* @brief 输出数据目标格式定义。
*/
typedef enum
{
QOSA_LCD_OUTPUT_FORMAT_RGB565 = 0, /*!< RGB565格式输出(默认) */
QOSA_LCD_OUTPUT_FORMAT_RGB444, /*!< RGB444格式输出 */
QOSA_LCD_OUTPUT_FORMAT_RGB666, /*!< RGB666格式输出 */
QOSA_LCD_OUTPUT_FORMAT_RGB888, /*!< RGB888格式输出 */
QOSA_LCD_OUTPUT_FORMAT_MAX, /*!< 最大输出格式 */
} qosa_lcd_output_format_opt_e;
qosa_lcd_bus_mode_e¶
/**
* @enum qosa_lcd_bus_mode_e
* @brief LCD SPI总线模式定义。
*/
typedef enum
{
QOSA_LCD_BUS_MODE_3_WIRE_I_SPI = 0, /*!< 3线I型SPI接口(默认) */
QOSA_LCD_BUS_MODE_3_WIRE_II_SPI, /*!< 3线II型SPI接口 */
QOSA_LCD_BUS_MODE_4_WIRE_I_SPI, /*!< 4线I型SPI接口 */
QOSA_LCD_BUS_MODE_4_WIRE_II_SPI, /*!< 4线II型SPI接口 */
QOSA_LCD_BUS_MODE_4_WIRE_II_2_DATA_SPI, /*!< 4线II型双数据SPI接口 */
QOSA_LCD_BUS_MODE_8080, /*!< 8080(MCU)并行接口 */
QOSA_LCD_BUS_MODE_MIPI, /*!< MIPI接口 */
} qosa_lcd_bus_mode_e;
qosa_lcd_ioctl_cmd_e¶
/**
* @enum qosa_lcd_ioctl_cmd_e
* @brief LCD控制命令定义。
*/
typedef enum
{
QOSA_LCD_IOCTL_NONE, /*!< 空命令 */
QOSA_LCD_IOCTL_GET_STD_CHANNEL, /*!< 获取标准版本LCD默认通道号
- 配置值参考 @ref qosa_lcd_channel_e */
QOSA_LCD_IOCTL_SET_DRV_CFG, /*!< 设置LCD驱动配置
- 配置值参考 @ref qosa_lcd_drv_cfg_t */
QOSA_LCD_IOCTL_GET_DRV_CFG, /*!< 获取LCD驱动配置
- 配置值参考 @ref qosa_lcd_drv_cfg_t */
QOSA_LCD_IOCTL_SET_SLEEP, /*!< 控制LCD控制器进入/退出睡眠模式
- 配置值参考 @ref qosa_bool_t */
} qosa_lcd_ioctl_cmd_e;
应用示例¶
LCD完整示例Demo¶
请查看 https://github.com/UniRTOS/UniRTOS-Doc-Examples/blob/main/peripheral/lcd/lcd_demo.c