为了应对这种日益增长的需求,通常会使用微处理器单元,而这导致了成本更高、设计更复 杂,而且上市时间也更长。为了应对这些要求,STM32 MCU提供了丰富的图形产品组合。 由于采用了嵌入式LCD-TFT显示控制器(LTDC),STM32 MCU可以直接驱动高分辨率显 示面板,无需任何CPU干预。另外,LTDC可以自主访问内部存储器或外部存储器来获取像素数据。
基本嵌入式图形系统由微控制器、帧缓冲器、显示控制器和显示屏组成。 • 微控制器对要在帧缓冲器中显示的图像进行计算,以组成图标或图像等图形基元。CPU 通过运行图形库软件来执行此过程。该过程可以由图形库使用专用硬件(如DMA2D Chrom-Art Accelerator®)来加速。帧缓冲器更新的频率越高,动画越流畅(动画每秒 帧数)。
帧缓冲器是一个易失性存储器,用于存储要显示图像的像素数据。该存储区通常称为图 形RAM(GRAM)。所需帧缓冲器大小取决于显示器的分辨率和色深。关于所需帧缓冲器 大小的更多信息,请参阅第 4.2.1节:帧缓冲存储器大小要求和位置。 – 双缓冲技术使用两个帧缓冲器,可以避免显示正在写入帧缓冲器的内容。 • 显示控制器持续“刷新”显示器,以每秒60次(60Hz)的速度将帧缓冲器内容传送到显 示屏。显示控制器可以嵌入显示模块或MCU中。 • 显示屏由显示控制器来驱动,并负责显示图像(由像素矩阵组成)。 显示器特性为: – 显示尺寸(分辨率):由显示像素数定义,表示为水平(像素数)×垂直(行 数)。 – 色深:定义可以绘制像素的颜色数量。它以每像素位数(bpp)来表示。对于24 bpp的色深(也可以用RGB888表示),一个像素可以有16777216种颜色表示。 – 刷新率(以Hz为单位):显示面板每秒刷新的次数。因为刷新率较低时产生的视 觉效果不佳,所以显示器每秒钟刷新60次(60 Hz)。
MIPI(移动行业处理器接口)联盟是一个致力于定义和推广移动设备接口规范的全球协作组 织。MIPI联盟不仅开发了新标准,还将现有的显示接口进行了标准化: MIPI显示总线接口(MIPI-DBI) MIPI-DBI是MIPI联盟发布的第一个显示标准,用来规定显示接口。MIPI-DBI中定义了三类 接口: • A类:基于Motorola 6800总线 • B类:基于Intel® 8080总线 • C类:基于SPI协议 MIPI-DBI用来与带有集成图形RAM(GRAM)的显示器进行连接。像素数据在显示器的本地 GRAM中进行更新。图 5中举例说明了一个MIPI-DBI的A类或B类显示接口示例。
下面总结了STM32 MCU支持的MIPI联盟显示接口:
• 所有STM32 MUC均支持MIPI-DBI C类(SPI)接口
• 带F(S)MC的所有STM32 MCU均支持MIPI-DBI A类和B类接口
• 带LTDC的STM32 MCU支持MIPI-DPI接口
• 嵌入DSI主机的STM32 MCU支持MIPI-DSI接口
STM32微控制器上的LTDC是片上LCD显示控制器,可提供高达24位的并行数字RGB信号, 以便与各种显示面板连接。LTDC还可以像AMOLED显示器一样使用并行RGB接口来驱动其他 显示技术。LTDC可以连接既不嵌入控制器也不嵌入图形RAM的低成本显示面板。
(LTDC)显示控制器说明
LTDC是以逐行方式读取图像数据的控制器。其存储器访问模式的长度为64字节,但当到达 一行的结尾并且剩余数据少于64个字节时,LTDC将提取剩余的数据。
两个可编程LTDC层 LTDC有两层,每层都可以分别启用、禁用和配置。图层显示的顺序是固定的,因此始终是由 下至上的。如果使能两个层,则层 2 为顶部显示窗口。 LTDC具有可配置的混合因数。混合始终使用alpha值来激活。混合顺序固定,即由下至上。 如果使能了两层,首先第 1 层将与背景色混合,随后第 2 层与第 1 层和背景的混合颜色结果 再次混合。 背景颜色可通过LTDC_BCCR寄存器进行编程。可以在RGB888格式中编程常量背景颜色,其 中BCRED[7:0]字段用于红色值,BCGREEN[7:0]用于绿色值,BCBLUE[7:0]用于蓝色值。
STM32电源状态对LTDC外设有直接影响。在睡眠模式下,LTDC不受影响,并持续将图形数 据驱动到屏幕上。在待机和停止模式下,LTDC被禁用,不会驱动输出通过其并行接口。应在 LTDC重新配置后退出待机模式。 由于STM32微控制器中嵌入了智能架构,这使得即使在睡眠模式下也可以启用所有外设,因 此可以在CPU停止时的睡眠模式下驱动显示面板。此功能适合要求低功耗的可穿戴应用。 作为AHB主设备的LTDC可能会继续从FMC_SDRAM或Quad-SPI(当使用存储器映射模式时) 获取数据,即使MCU进入休眠模式后也是如此。当到达屏幕上定义的行或发生阴影重载时, 可以生成行事件或寄存器重载中断,来唤醒STM32。 |