LTDC/DMA2D—液晶显示

本章参考资料:《STM32F4xx 参考手册 2》、《STM32F4xx 规格书》、库帮助文档
stm32f4xx_dsp_stdperiph_lib_um.chm》。
关于开发板配套的液晶屏参数可查阅《5.0 寸液晶屏数据手册》配套资料获知。
显示器简介
显示器属于计算机的 I/O 设备,即输入输出设备。它是一种将特定电子信息输出到屏
幕上再反射到人眼的显示工具。 常见的有 CRT 显示器、液晶显示器、 LED 点阵显示器及
OLED 显示器。
液晶显示器
液晶显示器,简称 LCD(Liquid Crystal Display),相对于上一代 CRT 显示器(阴极射线
管显示器)LCD 显示器具有功耗低、体积小、承载的信息量大及不伤眼的优点,因而它成
为了现在的主流电子显示设备,其中包括电视、电脑显示器、手机屏幕及各种嵌入式设备
的显示器。27-1 是液晶电视与 CRT 电视的外观对比,很明显液晶电视更薄,“时尚”
是液晶电视给人的第一印象,而 CRT 电视则感觉很“笨重”。

 

液晶是一种介于固体和液体之间的特殊物质,它是一种有机化合物,常态下呈液态,
但是它的分子排列却和固体晶体一样非常规则,因此取名液晶。 如果给液晶施加电场,会
改变它的分子排列, 从而改变光线的传播方向, 配合偏振光片,它就具有控制光线透过率
的作用,再配合彩色滤光片,改变加给液晶电压大小,就能改变某一颜色透光量的多少,
27-2 中的就是绿色显示结构。 利用这种原理,做出可控红、绿、蓝光输出强度的显示结
构,把三种显示结构组成一个显示单位,通过控制红绿蓝的强度,可以使该单位混合输出
不同的色彩,这样的一个显示单位被称为像素

 

注意液晶本身是不发光的,所以需要有一个背光灯提供光源,光线经过一系列处理过
程才到输出,所以输出的光线强度是要比光源的强度低很多的,比较浪费能源(当然,比
CRT 显示器还是节能多了)。而且这些处理过程会导致显示方向比较窄,也就是它的视角较
小,从侧面看屏幕会看不清它的显示内容。另外,输出的色彩变换时,液晶分子转动也需
要消耗一定的时间,导致屏幕的响应速度低。
LED OLED 显示器
LED 点阵显示器不存在以上液晶显示器的问题, LED 点阵彩色显示器的单个像素点内
包含红绿蓝三色 LED 灯,显示原理类似我们实验板上的 LED 彩灯,通过控制红绿蓝颜色
的强度进行混色,实现全彩颜色输出,多个像素点构成一个屏幕。由于每个像素点都是
LED 灯自发光的,所以在户外白天也显示得非常清晰,但由于 LED 灯体积较大,导致屏幕
的像素密度低,所以它一般只适合用于广场上的巨型显示器。相对来说,单色的 LED 点阵
显示器应用得更广泛,如公交车上的信息展示牌、店招等,见图 27-3

新一代的 OLED 显示器与 LED 点阵彩色显示器的原理类似,但由于它采用的像素单元
是“有机发光二极管” (Organic Light Emitting Diode),所以像素密度比普通 LED 点阵显示
器高得多,见图 27-5

 

OLED 显示器不需要背光源、对比度高、轻薄、视角广及响应速度快等优点。待到生
产工艺更加成熟时,必将取代现在液晶显示器的地位,见图 27-5

 

 显示器的基本参数
不管是哪一种显示器,都有一定的参数用于描述它们的特性,各个参数介绍如下:
(1) 像素
像素是组成图像的最基本单元要素,显示器的像素指它成像最小的点,即前面讲解液
晶原理中提到的一个显示单元。
(1) 分辨率
一些嵌入式设备的显示器常常以“行像素值 x 列像素值”表示屏幕的分辨率。如分辨
800x480 表示该显示器的每一行有 800 个像素点,每一列有 480 个像素点,也可理
解为有 800 列, 480 行。
(2) 色彩深度
色彩深度指显示器的每个像素点能表示多少种颜色,一般用“位” (bit)来表示。如单
色屏的每个像素点能表示亮或灭两种状态(即实际上能显示 2 种颜色),用 1 个数据位

就可以表示像素点的所有状态,所以它的色彩深度为 1bit,其它常见的显示屏色深为
16bit24bit
(3) 显示器尺寸
显示器的大小一般以英寸表示,如 5 英寸、 21 英寸、 24 英寸等,这个长度是指屏幕对
角线的长度, 通过显示器的对角线长度及长宽比可确定显示器的实际长宽尺寸。
(4) 点距
点距指两个相邻像素点之间的距离, 它会影响画质的细腻度及观看距离,相同尺寸的
屏幕,若分辨率越高,则点距越小,画质越细腻。如现在有些手机的屏幕分辨率比电
脑显示器的还大,这是手机屏幕点距小的原因; LED 点阵显示屏的点距一般都比较大,
所以适合远距离观看。
STM32F429 系列的芯片不需要额外的液晶控制器,也就是说它把专用液晶控制器的功能集成到 STM32F429 芯片内部了,节约
了额外的控制器成本。 

(1) RGB 信号线
RGB 信号线各有 8 根,分别用于表示液晶屏一个像素点的红、绿、蓝颜色分量。使用
红绿蓝颜色分量来表示颜色是一种通用的做法,打开 Windows 系统自带的画板调色工
具,可看到颜色的红绿蓝分量值,见图 27-7。常见的颜色表示会在“RGB”后面附带
各个颜色分量值的数据位数,如 RGB565 表示红绿蓝的数据线数分别为 565 根,
一共为 16 个数据位,可表示 216 种颜色;而这个液晶屏的种颜色分量的数据线都有 8
根,所以它支持 RGB888 格式,一共 24 位数据线,可表示的颜色为 224种。

(2) 同步时钟信号 CLK
液晶屏与外部使用同步通讯方式,以 CLK 信号作为同步时钟,在同步时钟的驱动下,
每个时钟传输一个像素点数据。
(3) 水平同步信号 HSYNC
水平同步信号 HSYNC(Horizontal Sync)用于表示液晶屏一行像素数据的传输结束,每
传输完成液晶屏的一行像素数据时, HSYNC 会发生电平跳变,如分辨率为 800x480
显示屏(800 列, 480 ),传输一帧的图像 HSYNC 的电平会跳变 480 次。
(4) 垂直同步信号 VSYNC
垂直同步信号 VSYNC(Vertical Sync)用于表示液晶屏一帧像素数据的传输结束,每传
输完成一帧像素数据时, VSYNC 会发生电平跳变。其中“帧”是图像的单位,一幅
图像称为一帧,在液晶屏中,一帧指一个完整屏液晶像素点。人们常常用“帧/秒”来
表示液晶屏的刷新特性,即液晶屏每秒可以显示多少帧图像,如液晶屏以 60 /秒的
速率运行时, VSYNC 每秒钟电平会跳变 60 次。
(5) 数据使能信号 DE
数据使能信号 DE(Data Enable)用于表示数据的有效性,当 DE 信号线为高电平时,
RGB 信号线表示的数据有效。

液晶数据传输时序
通过上述信号线向液晶屏传输像素数据时,各信号线的时序见图 27-8。 图中表示的是
向液晶屏传输一帧图像数据的时序, 中间省略了多行及多个像素点。

液晶屏显示的图像可看作一个矩形,结合图 27-9 来理解。液晶屏有一个显示指针,它
指向将要显示的像素。显示指针的扫描方向方向从左到右、从上到下,一个像素点一个像
素点地描绘图形。这些像素点的数据通过 RGB 数据线传输至液晶屏,它们在同步时钟
CLK 的驱动下一个一个地传输到液晶屏中,交给显示指针,传输完成一行时,水平同步信
HSYNC 电平跳变一次,而传输完一帧时 VSYNC 电平跳变一次。

显存
液晶屏中的每个像素点都是数据,在实际应用中需要把每个像素点的数据缓存起来,
再传输给液晶屏,这种存储显示数据的存储器被称为显存。显存一般至少要能存储液晶屏
的一帧显示数据,如分辨率为 800x480 的液晶屏,使用 RGB888 格式显示,它的一帧显示
数据大小为: 3x800x480=1152000 字节;若使用 RGB565 格式显示,一帧显示数据大小为:
2x800x480=768000 字节。

常见的颜色表示会在“RGB”后面附带各个颜色分量值的数据位数,如RGB565
表示红绿蓝的数据线数分别为565根,一共为16个数据位,可表示216
种颜色;而我们这个液晶屏的种颜色分量的数据线都有8根,所以它支持
RGB888格式,一共24位数据线,可表示的颜色为224种。

RGB后面的数值,分别代表其表示颜色的bits。

 

LCD-TFT 控制器 (LTDC)
LTDC 液晶控制器简介
STM32F429 系列芯片内部自带一个 LTDC 液晶控制器,使用 SDRAM 的部分空间作为
显存,可直接控制液晶面板,无需额外增加液晶控制器芯片。 STM32 LTDC 液晶控制器
最高支持 800x600 分辨率的屏幕;可支持多种颜色格式,包括 RGB888RGB565
ARGB8888 ARGB1555 (其中的“A”是指透明像素);支持 2 层显示数据混合,利用这
个特性,可高效地做出背景和前景分离的显示效果,如以视频为背景,在前景显示弹幕。
图像数据混合
LTDC 外设支持 2 层数据混合,混合前使用 2 层数据源,分别为前景层和背景层,见
27-10。在输出时,实际上液晶屏只能显示一层图像,所以 LTDC 在输出数据到液晶屏
前需要把 2 层图像混合成一层,跟 Photoshop 软件的分层合成图片过程类似。混合时,直
接用前景层中的不透明像素替换相同位置的背景像素;而前景层中透明像素的位置,则使
用背景的像素数据,即显示背景层的像素。

 

如果想使用图像混合功能,前景层必须使用包含透明的像素格式,如 ARGB1555
ARGB8888。其中 ARGB1555 使用 1 个数据位表示透明元素,它只能表示像素是透明或不
透明,当最高位(即“A”位)1 时,表示这是一个不透明的像素,具体颜色值为 RGB
表示的颜色,而当最高位为 0 时,表示这是一个完全透明的像素, RGB 位的数据无效;而
ARGB8888 的像素格式使用 8 个数据位表示透明元素,它使用高 8 位表示“透明度” (即代
表“A”的 8 个数据位),若 A 的值为“0xFF”,则表示这个像素完全不透明,若 A 的值为
0x00”则表示这个像素完全透明,介于它们之间的值表示其 RGB 颜色不同程度的透明度,
即混合后背景像素根据这个值按比例来表示。
注意液晶屏本身是没有透明度概念的,如 24 位液晶屏的像素数据格式是 RGB888
RGB 颜色各有对应的 8 根数据线,不存在用于表示透明度的数据线,所以实际上 ARGB
是针对内部分层数据处理的格式,最终经过混合运算得出直接颜色数据 RGB888 才能交给
液晶屏显示。

 

图像处理单元
LTDC 框图标号表示的是图像处理单元,它通过“AHB 接口”获取显存中的数据,
然后按分层把数据分别发送到两个“层 FIFO”缓存,每个 FIFO 可缓存 64x32 位的数据,
接着从缓存中获取数据交给“PFC(像素格式转换器),它把数据从像素格式转换成字
(ARGB8888)的格式,再经过“混合单元”把两层数据合并起来,最终混合得到的是单层要
显示的数据,通过信号线输出到液晶面板。这部分结构与 DMA2D 的很类似,我们在下一
小节详细讲解。
在输出前混合单元的数据还经过一个“抖动单元”,它的作用是当像素数据格式的色
深大于液晶面板实际色深时,对像素数据颜色进行舍入操作,如向 18 位显示器上显示 24
位数据时,抖动单元把像素数据的低 6 位与阈值比较,若大于阈值,则向数据的第 7 位进
1,否则直接舍掉低 6 位。

配置和状态寄存器
框图中标号表示的是 LTDC 的控制逻辑,它包含了 LTDC 的各种配置和状态寄存器。
如配置与液晶面板通讯时信号线的有效电平、各种时间参数、有效数据宽度、像素格式及
显存址等等, LTDC 外设根据这些配置控制数据输出,使用 AHB 接口从显存地址中搬运数
据到液晶面板。还有一系列用于指示当前显示状态和位置的状态寄存器,通过读取这些寄
存器可以了解 LTDC 的工作状态。
时钟信号
LTDC 外设使用 3 种时钟信号,包括 AHB 时钟、 APB2 时钟及像素时钟 LCD_CLK
AHB 时钟用于驱动数据从存储器存储到 FIFOAPB2 时钟用于驱动 LTDC 的寄存器。而
LCD_CLK 用于生成与液晶面板通讯的同步时钟,见图 27-12,它的来源是 HSE(高速外部
晶振),经过“/M”分频因子分频输出到“PLLSAI”分频器,信号由“PLLSAI”中的倍频
因子 N 倍频得到“PLLSAIN”时钟、然后由“/R”因子分频得到“PLLCDCLK”时钟,再
经过“DIV”因子得到“LCD-TFT clock”,“LCD-TFT clock”即通讯中的同步时钟
LCD_CLK,它使用 LCD_CLK 引脚输出。

 

  /************************************************2017.7.29***************************************************************/

LTDC 初始化结构体

这里有很多涉及寄存器的东西,如果不是必要,不用自己去配置。

但是却有几个值得注意的地方:

第一:关于LTDC的引脚复用:

看到上图不要以为LCD_G3和LCD_B2可以同时使用一个引脚,LCD_B2还有其他引脚可以使用,只是提醒自己不要以为复用只有AF14的LCD,在AF9处还隐藏着有LCD的复用功能。

有可能是复用AF14也可能是复用AF9,具体如何选择AF14还是AF9的复用呢?在stm32f4xx_gpio.h中:

期间当然还有更多的复用选择:

需要注意的是这里LTDC复用不是单纯的只有AF14,还有AF9的。

第二点:用sdram写点刷屏方式:

 

 这样可能会在屏幕下方有乱码或者花屏这样的现象,此时需要更改sdram中的一个配置:

static void SDRAM_InitSequence(void)函数中的:

突发长度如果配置成8可能会出现上面所说的花屏问题,改成4之后,得到了解决。

 /************************************************2017.7.29***************************************************************/

 

转载于:https://www.cnblogs.com/yangguang-it/p/7227356.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/400423.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【51单片机快速入门指南】4.3.2: MPU6050:一阶互补滤波、二阶互补滤波和卡尔曼滤波获取欧拉角

目录源码MPU6050_Filter.cMPU6050_Filter.h使用方法测试程序一阶互补滤波效果二阶互补滤波效果卡尔曼滤波效果总结普中51-单核-A2 STC89C52 Keil uVision V5.29.0.0 PK51 Prof.Developers Kit Version:9.60.0.0 上位机:Vofa 1.3.10 参考资料: MPU6050…

NGUI基础-三大基础组件之Root组件

NGUI NGUI(Next-Gen UI)是一款用于Unity游戏引擎的UI插件,它提供了一套功能强大、灵活易用的界面开发工具。在NGUI中,Root(根节点)是一个重要的概念。 基础组件之Root Root是NGUI中的最高层级节点&#…

【转】android 中如何限制 EditText 最大输入字符数

原文网址:http://blog.csdn.net/fulinwsuafcie/article/details/7437768 方法一: 在 xml 文件中设置文本编辑框属性作字符数限制 如:android:maxLength"10" 即限制最大输入字符个数为10 方法二: 在代码中使用InputFilte…

【51单片机快速入门指南】4.3.3: MPU6050使用Mahony AHRS算法实现六轴姿态融合获取四元数、欧拉角

目录源码Mahony_6.cMahony_6.h使用方法测试程序main.c效果STC89C516 32MHz Keil uVision V5.29.0.0 PK51 Prof.Developers Kit Version:9.60.0.0 上位机:Vofa 1.3.10 移植自MPU6050姿态解算——Mahony互补滤波 —— 大写的小写字母 加入了输入数据范围的自动处理…

linux文件系统及bash基础特性

linux文件系统 一、根文件系统 linux被识别的第一个被称为根之间关联的文件系统叫做根文件系统(rootfs),其他分区要想被读到,需要挂载到根目录的某个挂载点(根的子目录)上。根文件系统至关重要,…

【51单片机快速入门指南】4.3.4: MPU6050使用Madgwick AHRS算法实现六轴姿态融合获取四元数、欧拉角

目录源码Madgwick_6.cMadgwick_6.h使用方法测试程序main.c效果STC89C516 32MHz Keil uVision V5.29.0.0 PK51 Prof.Developers Kit Version:9.60.0.0 上位机:Vofa 1.3.10 移植自AHRS —— LOXO,算法作者:SOH Madgwick 源码 为了避免所用R…

Hybris商品图片导入与压缩有关的配置.

1. 在电脑上安装 ImageMagick 软件(windows平台还需要安装VC),下载路径:http://www.imagemagick.org/script/download.php#windows 在local.properies文件配置安装路径和配置文件路径: Windows版本的,安装…

poj 2507Crossed ladders 计算几何

链接:http://poj.org/problem?id2507 题意:哪个直角三角形,一直角边重合, 斜边分别为 X, Y, 两斜边交点高为 C , 求重合的直角边长度~ 思路: 设两个三角形不重合的两条直角边长为 a &#xff0…

【机器视觉学习笔记】VS2015 安装 opencv_contrib并测试

目录opencv_contrib的获取主要工具编译 opencv编译 opencv_contribVisual Studio 编译配置新项目的环境添加包含目录添加库目录配置调试环境添加依赖项测试平台:Windows 10 20H2 Visual Studio 2015 opencv_contrib-3.4.12 参考文章: 添加OpenCV_contr…

Windows Server 2012 R2 或 2016 无法安装 .Net 3.5.1

租用阿里云ECS服务器的用户使用 Windows Server 2012 R2 或 Windows Server 2016 64位系统,发现在安装 .net framework 3.5.1 时报错,报错内容如下: 原因分析 找不到安装源文件。 解决办法 可以通过如下 PowerShell 脚本进行安装:…

Concept3D推出交互式3D地图平台

对于活动组织者而言,能够在不必实际旅行的情况下参观活动地点的想法非常具有吸引力,特别是对于日程安排繁忙的人员。Concept3D通过其交互式地图和身临其境的虚拟导览软件实现了这一点。 Concept3D平台的首要位置之一是棕榈泉会议中心,该中心支…

【机器视觉学习笔记】OpenCV C++ 调用笔记本摄像头

目录测试程序实验现象平台&#xff1a;Windows 10 20H2 Visual Studio 2015 opencv_contrib-3.4.12 转自【opencv七】利用opencv调用电脑摄像头 —— yuanCruise 测试程序 #include <opencv2/opencv.hpp> #include <iostream>using namespace cv;int main() {n…

深入分析 Java 中的中文编码问题

几种常见的编码格式 为什么要编码 不知道大家有没有想过一个问题&#xff0c;那就是为什么要编码&#xff1f;我们能不能不编码&#xff1f;要回答这个问题必须要回到计算机是如何表示我们人类能够理解的符号的&#xff0c;这些符号也就是我们人类使用的语言。由于人类的语言有…

APP图标生成工具

今天25学堂跟大家推荐一款非常有趣和简单的APP图标生成工具&#xff1a;Iconion Icon Generator&#xff08;iconion图标生成器&#xff09; 我们可以用它来创建美丽的扁平化图标&#xff0c;长投影图标&#xff0c;桌面图标&#xff0c;社会媒体图标和移动APP图标等&#xff0…

基本形态学算法

基本形态学算法为什么要做基本形态学算法的研究和实现&#xff1f;是因为形态学是一个非常有力&#xff0c;应用 广泛的工具&#xff0c;但同时也是研究不是很清楚的工具。往往一个恰到好处的变换&#xff0c;就能够省下许多的劳动。对此的分类和研究就显得非常有必要&#xff…

【51单片机快速入门指南】4.4:I2C 读取HMC5883L / QMC5883L 磁力计

目录硬知识简介操作模式HMC5883L连续测量模式单次测量模式闲置模式QMC5883L连续测量模式待命模式主要差异寄存器寄存器列表HMC5883LQMC5883L配置寄存器HMC5883L配置寄存器 A配置寄存器 B模式寄存器QMC5883L控制寄存器1控制寄存器2SET/RESET Period Register数据输出寄存器HMC58…

leaflet加载离线OSM(OpenStreetMap)

转载&#xff1a; https://www.cnblogs.com/RainyBear/p/6011832.html leaflet作为广为应用的开源地图操作的API,是非常受欢迎&#xff0c;轻量级的代码让使用者更容易操作。 废话不多说&#xff0c;下面直接给出范例。 首先在这个网站下载leaflet的压缩包&#xff0c;其中包括…

Nginx 实战(一) 集群环境搭建

Nginx是什么&#xff1f; Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器&#xff0c;也是一个 IMAP/POP3/SMTP 代理服务器。一直纳闷这个X是怎么来的在网上查了查原来X代表很牛逼的样子&#xff0c;Nginx就是代表一个非常牛逼的引擎服务器系统&#xf…

【51单片机快速入门指南】4.4.1:python串口接收磁力计数据并进行最小二乘法椭球拟合

目录硬知识Python代码使用方法串口收集数据椭球拟合验证STC15F2K60S2 16.384MHz Keil uVision V5.29.0.0 PK51 Prof.Developers Kit Version:9.60.0.0 Python 3.8.11 (default, Aug 6 2021, 09:57:55) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32 参考资料&…

MATLAB之基本语法之常用命令

1. whos&#xff08;或者who&#xff09; 可以查看command window的变量 当调试MATLAB程序时&#xff0c;该条命令经常用到&#xff01;&#xff01;&#xff01; 2. clc 清除命令窗口内容但是不清除变量 3. clear 清除命令窗口内容并且清除变量 4. …