显示器-应用

显示器

许多应用需要把信息显示给用户,因此显示屏是很重要的一个显示设备。 QuecPython 系列模块为屏幕显示应用提供了丰富的外设支持,包含的接口类型有SPI 和 MIPI

一块屏幕通常有两个主要部分:显示基板 和 驱动 IC。显示基板(也称显示面板)决定了显示的尺寸、分辨率、色彩等参数;驱动 IC (也称屏幕控制器)是匹配显示基板并与基板封装在一起的,它通过一定的接口对外通信并控制显示基板进行显示。

类型

现代显示器的种类非常多样化,它们用于各种不同的设备和应用,从个人计算机到商业广告屏,从手机到电视,从游戏设备到嵌入式设备等。以下是一些常见的显示器类型:

  1. 液晶显示器(Liquid Crystal Display,LCD) :
    • 工作原理:LCD 显示器使用液晶分子控制光线的通过,从而显示图像。液晶本身不发光,所以需要背光源。
    • 特点:LCD 显示器体积小、功耗低、发热少,适合嵌入式系统使用。它可以根据需求进行各种尺寸和形状的定制。
    • 应用:LCD 显示器广泛应用于各种嵌入式设备,如手持设备、仪器仪表、家用电器等。
  2. 有机发光二极管(Organic Light Emitting Diode,OLED) :
    • 工作原理:OLED 显示器利用有机物质发光的特性,通过施加电压使得有机物质发出光线,从而显示图像。每一个像素都可以单独发光。
    • 特点:OLED 显示器具有色彩鲜明、对比度高、反应速度快的特点,且可以制造出柔性和透明的显示器。
    • 应用:OLED 显示器目前主要应用于高端移动设备,如智能手机和可穿戴设备。
  3. 电子纸显示(E-Ink Display) :
    • 工作原理:电子纸通过在两个透明电极间夹层中的微胶囊改变显示颜色。每个微胶囊内含有黑色和白色粒子,通过施加电压使得黑色和白色粒子在微胶囊中的位置发生变化,从而改变显示颜色。
    • 特点:电子纸的功耗极低,且具有非常好的阅读体验,尤其在光照条件下,清晰度极高。
    • 应用:电子纸主要应用于电子阅读器,也逐渐被应用到各种显示标签和长时间显示的设备上。
  4. 微型 LED(Micro LED) :
    • 工作原理:微型 LED 显示器由无数微小的 LED 像素组成,每个像素可以单独发光和调整亮度。
    • 特点:微型 LED 显示器色彩丰富、对比度极高、响应速度快,且功耗低、寿命长。
    • 应用:目前微型 LED 主要被应用于高端的大型显示屏和电视产品,但随着技术的进步,未来可能会逐渐应用于更多的嵌入式设备中。

以上就是一些常见的嵌入式系统中的显示器类型。嵌入式系统中的显示器需求可能会根据具体的应用和性能需求有所不同,因此选择适合的显示器类型是非常重要的。

驱动框图

其主控,驱动 IC, 接口关系如下:

  1. 主控(MCU/CPU):这是嵌入式系统的核心部分,负责处理数据,执行代码,以及管理和控制系统的各个部分。
  2. 显示接口:这是主控和显示芯片之间的通信连接。常见的显示接口包括:SPI、I2C、HDMI、VGA、LVDS、MIPI DSI 等等。主控通过这些接口向显示芯片发送数据和命令。
  3. 显示芯片:显示芯片接收来自主控的数据和命令,然后根据这些信息驱动显示面板进行相应的显示。
  4. 显示基板(或显示面板):显示面板是嵌入式系统中实际显示图像的部分。它包含一系列像素,这些像素根据来自显示芯片的信号来改变其状态,从而显示出图像。

主控通过显示接口向显示芯片发送数据和命令,然后显示芯片根据这些信息驱动显示面板显示图像。这就是这些组件在一个嵌入式系统中的基本关系。

适配说明

大部分屏幕控制器可以支持多种显示接口。如 ILI9486 支持 MCU 接口(即 8080 接口)、SPI 接口、RGB 接口和 MIPI 接口。

QuecPython 目前支持接口如下:

SPI 接口

QuecPython 系列模块的 SPI 接口特点:

  • SPI 时钟频率最高可达 50MHz

MIPI接口

QuecPython 系列模块的 MIPI 接口特点:

  • MIPI 时钟频率最高可达 100MHz

  • 最高支持 2Lane

QuecPython 系列模组支持情况如下:

SoC MIPI 接口 SPI 接口
EC200U_XXX √ √
EC600U_XXX √ √
EC600N_XXX × √
EC800N_XXX × √
EC600M_XXX × √
EC800M_XXX × √
EC800G_XXX × √
EC810M_XXX × √
EG912N_XXX × √
EG912U_XXX √ √
EG915N_XXX × √
EG915U_XXX √ √

已适配的屏幕控制器型号如下表所示:

控制器型号 类型 接口 分辨率 驱动 数据手册
ILI9225 Color SPI 176*220 ILI9225.py ILI9225.pdf
ILI9341 Color SPI 240*320 ILI9341.py ILI9341.pdf
ILI9806 Color MIPI 480*800 ILI9806.py ILI9806.pdf
ST7735 Color SPI 128*160 ST7735.py ST7735.pdf
ST7789 Color SPI 240*320 ST7789.py ST7789.pdf
ST7701 Color MIPI 480*854 ST7701.py ST7701.pdf
JD9365 Color MIPI 800*1280 JD9365.py JD9365.pdf
SC7705 Color MIPI 800*1280 SC7705.py SC7705.pdf
SSD1306 Mono SPI 128*64 SSD1306.py SSD1306.pdf
UC1628 Mono SPI 128*64 UC1628.py UC1628.pdf

说明:使用 lcd 方法时,只要参数传输正确,理论是支持任意 SPI或MIPI 屏幕的。

驱动结构#

QuecPython 为了更自由的控制屏幕,python 脚本可以通过 lcd.lcd_init 传入的参数驱动屏幕。

在设计上,每驱动一款屏幕差异点仅仅为脚本 lcd.lcd_init 或 lcd.mipi_init 中的参数不一样而已。

屏幕的分类

对屏幕进行分类的讨论将有助于我们对驱动的理解,这里将按照屏幕可显示的色彩来分类,而非 OLED、LCD 等屏幕的面板材料。 一般情况下,屏幕显示的色彩决定了 BPP (Bits Per Pixel),而 BPP 的不同导致程序的处理方式有一些不同,下面将更直观地列举几种 GRAM 映射到像素点的方式:

language-none 复制代码
<span style="color:#262626"><span style="background-color:#ffffff"><span style="background-color:#2d2d2d"><span style="color:#cccccc"><code class="language-none">              BPP = 16 GRAM 结构

</code></span></span></span></span>
language-none 复制代码
<span style="color:#262626"><span style="background-color:#ffffff"><span style="background-color:#2d2d2d"><span style="color:#cccccc"><code class="language-none">               BPP = 1 GRAM 结构

</code></span></span></span></span>
language-none 复制代码
<span style="color:#262626"><span style="background-color:#ffffff"><span style="background-color:#2d2d2d"><span style="color:#cccccc"><code class="language-none">    		  BPP = 4 GRAM 结构
</code></span></span></span></span>

从以上图中可以看出,映射方式大概可以分为两类:

  • BBP >= 8,通常是支持 RGB888、RGB666、RGB565 等编码的彩色屏幕。
  • BPP < 8,通常是单色的屏幕,可能是黑白的,也可能是灰阶的。

BPP < 8 时,一个字节映射到了多个像素,因此无法直接地控制单个像素。而 QuecPython 为了更好的控制单色屏幕这种情况,lcd_write 接口依旧传入 RGB565 数据,底层将自动完成转换,这样 python 脚本能达到访问单个像素的目的。BPP >= 8 时,则可以轻松地访问单个像素。

注意:对于彩色屏幕,驱动仅支持 RGB565 颜色编码。

屏幕控制器驱动

该部分将根据不同的屏幕控制器分别实现显示等功能 。

显示方向

这里设置的屏幕显示方向是完全由屏幕硬件实现的,这个功能在不同的屏幕控制器上会有差异。一共有 8 种可能的显示方向, 显示器可以旋转 0°、90°、180° 或 270°,也可以从顶部或底部查看,默认方向为 0° 和顶部查看。 这 8 (4 × 2) 个不同的显示方向也可以表示为 3 个二进制开关的组合:X-mirroring、Y-mirroring 和 X/Y swapping。

下表将列出全部 8 种组合显示的方向。如果显示方向不正常,请查看下表中的配置开关使其正常工作。

L2R_U2D Y-mirroring L2R_D2U
X_mirroring R2L_U2D X-mirroring Y-mirroring R2L_D2U
X/Y swapping U2D_L2R X/Y swapping Y-mirroring D2U_L2R
X/Y swapping X-mirroring U2D_R2L X/Y swapping X-mirroring Y-mirroring D2U_R2L

对于不同屏幕控制器,屏幕显示方向的实现并不完全相同,通常分为以下的情况:

  • 对于彩色屏幕,支持 8 个方向的旋转。
  • 对于单色屏幕,如 SSD1306 等屏幕来说,只支持前 4 个方向,即不支持交换 XY 轴。

注解:

显示方向还和使用的屏幕面板有关系,你可能会发现两种异常的情况:

  • 显示方向设置为 L2R_U2D,屏幕却不是按照上表中对应的显示方向。这可能是因为屏幕面板上的走线对 X/Y 方向上进行了镜像,这时应该根据实际情况调整旋转以得到期望的显示方向。

  • 旋转了屏幕后,显示内容不见了。这可能是因为屏幕面板的分辨率小于屏幕控制器的分辨率,导致旋转后显示区域没有完全落在屏幕面板上,这时应考虑设置正确的显示区域偏移。

常见屏幕参数解析

屏幕驱动 IC 包含多种寄存器,它们控制着各种功能和设定。以下是一些你可能需要关注的寄存器参数:

  1. 模式寄存器:这些寄存器通常控制显示模式(如分辨率、颜色深度等)和电源管理模式。例如,一些屏幕驱动 IC 可能有专门的寄存器用于切换睡眠模式或正常模式。

  2. 控制寄存器:控制寄存器用于配置屏幕驱动 IC 的各种功能,如屏幕旋转、翻转、反色等。

  3. 定时寄存器:这些寄存器用于控制像素时钟、水平同步和垂直同步信号的定时。

  4. Gamma 寄存器:Gamma 寄存器用于设置屏幕的 gamma 校正。这对于图像质量和颜色准确性非常重要。

  5. RAM 寄存器:RAM 寄存器是用来存储帧缓冲区数据的。驱动 IC 会从这些寄存器读取数据,然后把数据发送到屏幕。

  6. 状态寄存器:状态寄存器可以让你读取 IC 的当前状态,比如是否在正常工作、是否有错误发生等。

  7. 亮度/对比度寄存器:一些驱动 IC 可能会有这些寄存器来调整屏幕的亮度或对比度。

  8. 偏移寄存器:这些寄存器通常用于控制图像在屏幕上的位置。

需要注意的是 ,每个屏幕驱动 IC 都有其自己的寄存器映射和功能。所以在开始使用新的驱动 IC 时,你应该阅读其数据手册来了解其寄存器的详细信息。

相关推荐
开开心心_Every22 分钟前
文件查重软件批量删除重复文件释放空间
java·开发语言·c#·计算机外设·ocr·excel·perl
雪碧透心凉_1 天前
PythonWin32API窗口与鼠标操作
开发语言·python·计算机外设
遇见小修修1 天前
电脑无法正常启动原因分析 零基础排查教程
计算机外设·电脑
硅基手札1 天前
【I2C 技术系列 11】I2C Linux 驱动框架
linux·驱动开发·stm32·单片机·嵌入式硬件·mcu·计算机外设
开开心心就好2 天前
把手机变成电脑麦克风,WiFi连接就能用
智能手机·ffmpeg·计算机外设·电脑·word·音视频
硅基手札2 天前
【I2C 技术系列 08】I2C 控制器寄存器与 IP 架构
驱动开发·stm32·单片机·嵌入式硬件·mcu·架构·计算机外设
硅基手札2 天前
【I2C 技术系列 09】I2C 传输模式:轮询 / 中断 / DMA
驱动开发·stm32·单片机·嵌入式硬件·mcu·计算机外设
打工仔折腾 AI2 天前
鸿蒙平板远控电脑实测:ToDesk蓝牙键鼠、双模式鼠标与跨端剪贴板落地记录
人工智能·后端·python·性能优化·计算机外设·电脑·harmonyos
打工仔折腾 AI2 天前
鸿蒙端ToDesk远控电脑实测:蓝牙键鼠、双模式鼠标与跨端剪贴板实践
后端·python·性能优化·计算机外设·电脑·harmonyos·ai agent 实战
硅基手札3 天前
【I2C 技术系列 05】I2C 多主仲裁与时钟同步
驱动开发·stm32·单片机·嵌入式硬件·mcu·计算机外设