001_通信\007_LTDC
1.LTDC概述
移动、工业和消费应用的发展使得对图形用户界面(GUI)的需求更强,并且所需硬件资源 也有所增加。这些应用需要更高质量的图形、更多的硬件和软件资源(比如图形基元或帧缓 冲区的内存)以及更高的处理性能。 为了应对这种日益增长的需求,通常会使用微处理器单元,而这导致了成本更高、设计更复 杂,而且上市时间也更长。为了应对这些要求,STM32 MCU提供了丰富的图形产品组合。 由于采用了嵌入式LCD-TFT显示控制器(LTDC),STM32 MCU可以直接驱动高分辨率显 示面板,无需任何CPU干预。另外,LTDC可以自主访问内部存储器或外部存储器来获取像素 数据。
2.显示器和图形概述
2.1基本图形概念
本节介绍基本的嵌入式图形系统、显示模块类别和显示技术
图
基本嵌入式图形系统由微控制器、帧缓冲器、显示控制器和显示屏组成。
2.1.1微控制器对要在帧缓冲器中显示的图像进行计算,以组成图标或图像等图形基元。CPU通过运行图形库软件来执行此过程。该过程可以由图形库使用专用硬件(如DMA2DChrom-Art Accelerator®)来加速。帧缓冲器更新的频率越高,动画越流畅(动画每秒帧数)。
2.1.2帧缓冲器是一个易失性存储器,用于存储要显示图像的像素数据。该存储区通常称为图形RAM(GRAM)。所需帧缓冲器大小取决于显示器的分辨率和色深。
双缓冲期数使用两个帧缓冲器,可以避免显示正在写入缓冲器的内容。
2.1.3显示控制器持续“刷新”显示器,以每秒60次(60Hz)的速度将帧缓冲器内容传送到显示屏。显示控制器可以嵌入显示模块或MCU中。
2.1.4显示屏由显示控制器来驱动,并负责显示图像(由像素矩阵组成)
显示器特性为:
显示尺寸(分辨率):由显示像素数定义,表示为水平(像素数)*垂直(行数)。
色深:定义可以绘制像素的颜色数量。它以每像素位数(bpp)来表示。对于24bpp的色深(也可以用RGB888表示),一个像素可以由16777216种颜色表示
刷新率(以Hz为单位):显示面板每秒刷新的次数。因为刷新率较低时产生的视觉效果不佳,所以显示器每秒钟刷新60次(60Hz)。
显示模块类别
显示模块分为两大类,取决于它们是否嵌入了内部控制器和GRAM。
第一类对应于具有显示屏控制器和GRAM的显示器。
第二类对应的显示器,其显示屏没有主控制器,仅有低电平时序控制器。
要连接无控制器和GRAM的显示器,所用帧缓冲器可以位于MCU的内部SRAM中或位于外部存储器中。
显示技术
市场上有许多可用的显示技术,采用的两种主要技术如下所述:
1.LCD-TFT显示器(液晶显示器-薄膜晶体管):是一种LCD变体,它采用TFT技术提高了对每个像素的控制。得益于TFT技术,每个像素都可以通过晶体管进行控制,从而实现快速的响应时间和精确的色彩控制。
2.OLED显示器(有机LED):像素由直接发光的有机LED组成,可以实现更好的对比度并优化功耗。LED技术可以使用柔性显示器,不再需要玻璃屏或背光源。响应时间非常快,视角不受任何光线偏振的影响。
TFT和OLED技术中驱动显示模块的方式非常相似,它们的主要区别在于是否需要背光源,因为OLED不需要任何背光源。
2.2显示接口标准
MIPI(移动行业处理器借口)联盟是一个致力于定义和推广移动设备借口规范的全球协作组织。MIPI联盟不仅开发了新标准,还将现有的显示借口进行了标准化。
MIPI显示总线接口(MIPI-DBI)
MIPI-DBI师MIPI联盟发布的第一个显示标准,用来规定显示接口。MIPI-DBI中定义了三类接口:
A类:基于Motorola 6800总线
B类:基于Intel 8080总线
C类:基于SPI协议
MIPI显示并行接口(MIPI-DPI)
DPI通过TFT控制器对接口进行标准化。一个例子是当16到24位RGB信令与同步信号(HSYNC,VSYNC和LCD_CLK)结合使用时。DPI用来与没有帧缓冲器的显示器进行连接。像素数据必须实时流式传输到显示器。
其实时性能非常好,但它要求MCU具有大带宽以支持显示。
MIPI显示串行接口(MIPI_DSI)
为了减少连接显示器的线路数量,MIPI联盟对DSI进行了定义。DSI是高带宽多通道差分链路;它使用标准的MIPI D-PHY作为物理链路。
DSI封装了DBI或DPI信号,并通过PPI协议将它其发送到D-PHY。
2.3STM32 MCU支持的显示接口
下面总结了STM32 MCU支持的MIPI联盟显示接口:
所有STM32 MCU均支持MIPI-DBI C类(SPI)接口
带F(S)MC的所有STM32 MCU均支持MIPI-DBI A类和B类接口
带LTDC的STM32 MCU支持MIPI-DPI接口
嵌入DSI主机的STM32 MCU支持MIPI-DSI接口
2.4使用STM32 LTDC控制器的优势
3.LCD-TFT(LTDC)显示控制器说明
LTDC是以逐行方式读取图像数据的控制器。其存储器访问模式的长度为64字节,但当到达一行的结尾并且剩余数据少于64个字节时,LTDC将提取剩余的数据。
3.1功能描述
在每个像素时钟上升沿或时钟下降沿,并在屏幕有效区域内,LTDC层从其FIFO中检索一个 像素数据,将其转换为内部ARGB8888像素格式,并将其与背景和/或其他图层像素颜色进 行混合。得到的像素以RGB888格式编码,通过抖动单元并被驱动到RGB接口中。像素便会 显示到屏幕上。
3.1.1LCD-TFT引脚和信号接口
为了驱动LCD-TFT显示器,LTDC利用简单的3.3V信号提供了多达28个信号,包括: • 像素时钟LCD_CLK。 • 数据使能LCD_DE。 • 同步信号(LCD_HSYNC和LCD_VSYNC)。 • 像素数据RGB888。 注: 如果接口兼容,那么LTDC控制器还可以支持其他显示技术。 LTDC接口输出信号如 表 6中所示。
其它信号 通常情况下,显示面板接口还包含其他信号,这些信号不属于表 5中所述LTDC信号的一部 分。显示模块要完全发挥作用,这些额外的信号 是必需的。LTDC控制器只能驱动表 5中所 述的信号。 不属于LTDC的信号可以使用GPIO和其他外设进行管理,这可能需要特定的电路。 显示面板通常会嵌入背光单元,背光单元需要额外的背光控制电路和GPIO。 一些显示面板需要复位信号以及串行接口(如I2C或SPI)。这些接口通常用于显示器初始 化命令或触摸面板控制。
LTDC可以按照以下并行格式输出数据:RGB565、RGB666和RGB888。因此可以连接16位的 RGB565、18位的RGB888或24位的RGB888显示器。 LTDC信号极性可编程 LTDC控制信号的极性是可编程的,这使得STM32微控制器能够驱动任意RGB并行显示器。利 用LTDC_GCR寄存器,可以将控制信号(Hsync, Vsync和数据使能DE)以及像素时钟 (LCD_CLK)定义为高电平有效或低电平有效。
4.使用LTDC创建图形应用
本章说明使用LTDC进行图形应用开发之前和期间所需的不同步骤。用户首先应确定图形应 用的要求,然后检查所需的显示器尺寸是否适合硬件配置。在图形应用兼容性检查阶段,用 户可以使用表 17中所述的现有STM32参考板来评估其硬件和软件配置。
4.1确定图形应用要求
确定图形应用要求是开始时的关键步骤。在开始创建图形应用之前,必须要定义的一些重要 参数为:显示分辨率、色深以及待显示数据的性质(静态图像、文本或动画)。 当定义了上述基本参数后,用户应确定应用的图形硬件结构以及所需的硬件资源。用户应根 据以下参数选择最适合的STM32封装(参见表 13): • 如果帧缓冲器需要外部存储器 • 外部帧缓冲器存储器总线宽度 • LTDC接口:RGB565、RGB666或RGB888,具体取决于显示模块 • 如果需要外部存储器来存储图形基元(QSPI或FMC_NOR)
4.2检查显示器尺寸和色深与硬件配置的兼容性
当使用STM32微控制器开始图形应用开发时,用户通常已定义了所需的显示器尺寸和色深。 在继续开发之前用户必须回答的一个关键问题是,这种显示器尺寸和色深与具体硬件配置是 否相匹配? 要回答这个问题,用户应按照以下步骤进行: 1. 确定所需的帧缓冲器大小及其位置。 2. 检查显示器与帧缓冲存储器带宽要求的兼容性。 3. 检查显示面板接口与LTDC的兼容性。
4.2.1帧缓冲器存储器大小要求和位置
确定帧缓冲存储器大小及其位置是显示兼容性检查的关键参数。 RAM中支持帧缓冲器所需的内存空间应该是连续的,并且最小大小等于: 帧缓冲器大小 = 像素数 x 每像素位数
如上面的公式所示,所需的帧缓冲器大小取决于显示分辨率及其色深。 帧缓冲器色深(bpp)不一定与显示色深相同。例如,可以使用RGB565帧缓冲器来驱动 RGB888显示器。 注: 双帧缓冲器配置时所需帧缓冲器大小也是双倍的。通常使用双缓冲区配置,其中一个图形缓 冲区用于存储当前图像,而第二个缓冲区用于准备下一个图像。 表 9显示了不同像素格式下标准屏幕分辨率所需的帧缓冲器大小。
帧缓冲器位置 根据所需的帧缓冲器大小,它可以位于内部SRAM或外部SRAM/SDRAM中。 如果内部RAM不足以支持帧缓冲器,那么用户必须使用连接到FMC的外部SDRAM / SRAM。 因此,所需的帧缓冲器大小将决定是否需要使用外部存储器。所需的帧缓冲器大小取决于显 示器的尺寸和色深。
帧缓冲器在内部SRAM中 根据帧缓冲器大小,它可以位于内部SRAM或外部SRAM或SDRAM中。 使用内部SRAM作为帧缓冲器可实现最高性能,并可避免LTDC的所有带宽限制问题。
使用内部SRAM而不是外部SRAM或SDRAM具有许多优点: • 具有更高的吞吐量(0等待状态访问)。 • 减少了所需引脚数量,降低了PCB设计复杂性。 • 由于不需要外部存储器,因此降低了BOM,并因此降低了成本。
使用内部SRAM的唯一限制是其大小有限(几百KB)。当帧缓冲器大小超过可用存储器时, 应使用外部SDRAM或SRAM(由FMC接口驱动)。但是,在处理外部存储器时,用户必须小心 避免带宽限制。详情请参见第 4.5节:图形性能优化。 注: 色彩查找表CLUT可用来减少所需的帧缓冲器大小。(更多详细信息,请参考相关STM32 MCU 参考手册)。
检查显示面板接口与LTDC的兼容性
用户应根据应用需求来选择LCD面板。选择LCD面板时需要考虑的两个主要因素是分辨率和色深。这两个因素对以下参数有直接影响:
所需GPIO数
帧缓冲器大小和位置
显示器的像素时钟
当选择了一个显示面板时,用户应:
确保显示器接口与LTDC(带控制信号的并行RGB)兼容。
检查控制信号是否可以由LTD控制(有时需要额外的GPIO)。
确保显示信号电平与LTDC接口信号电平(VDD从1.8V至3.6V)匹配。
确保显示器的像素时钟可以被相关STM32微控制器数据表中定义的LTDC最大像素时钟支持。
确保LTDC时序可以支持显示时序参数
检查显示器的尺寸和色深是否可由LTDC支持
4.3LTDC与DMA2D和CPU同步
4.3.1DMA2D的用法
DMA2D时AHB总线矩阵上的主设备,将图形数据传输到内存。建议使用DMA2D来为CPU减荷。
DMA2D执行四项基本任务:
填充独特颜色的矩形形状。
将一帧或一帧的矩形部分从一个存储器复制到另一个存储器。
转换一帧或一帧的矩形部分的像素格式,同时将其从一个存储器传输到另一个存储器。
混合两种不同尺寸和像素格式的图像,并将结构图像存储在一个结果存储器中。
4.3.2LTDC和DMA2D/CPU同步
当仅使用一个帧缓冲区时,会出现帧缓冲器计算显示在屏幕上的风险。通常使用多重缓冲技术(例如双缓冲)来避免在屏幕上显示帧缓冲器计算。
即使使用双缓冲技术,由于LTDC和帧缓冲器更新(利用CPU或DMA2D)之间的非同步,也可能会出现撕裂效应。解决此问题的一个方法是使用VSYNC信号来同步这两个主设备(LTDC与CPU或DMA2D)的工作流程。
LTDC从缓冲区(称为前缓冲区)获取图形数据,而DMA2D在另一个缓冲区中准备下一帧(称为后缓冲区)。VSYNC周期指示实际帧显示的结束以及应该翻转的两个缓冲区。
5.LTDC应用示例
本节提供了:
考虑了资源需求时的一些图形实现示例
关于如何创建基本图形应用的示例
嵌入LTDC并具有板载LCD-TFT面板的STM32参考板总结
6.1实现示例和资源要求
浙公网安备 33010602011771号