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

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

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

 

LCD-TFT 控制器 (LTDC)
LTDC 液晶控制器简介
STM32F429 系列芯片内部自带一个 LTDC 液晶控制器,使用 SDRAM 的部分空间作为
显存,可直接控制液晶面板,无需额外增加液晶控制器芯片。 STM32 的 LTDC 液晶控制器
最高支持 800x600 分辨率的屏幕;可支持多种颜色格式,包括 RGB888、 RGB565、
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 时钟用于驱动数据从存储器存储到 FIFO, APB2 时钟用于驱动 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.tpcf.cn/news/400423.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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…

Mac 运行 psql postgres 报错

psql: could not connect to server: No such file or directoryIs the server running locally and accepting用brew卸载postgresql: brew uninstall postgresqlbrew doctor (修正这里的一切)brew prune删除所有Postgres文件夹:r…

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…

ibatis 中 $与#的区别

在sql配置中比如in(#rewr#) 与in ($rewr$) 在Ibatis中我们使用SqlMap进行Sql查询时需要引用参数,在参数引用中遇到的符号#和$之间的区分为,#可以进行与编译,进行类型匹配,而$不进行数据类型匹配,例如: sele…

【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),其他分区要想被读到,需要挂载到根目录的某个挂载点(根的子目录)上。根文件系统至关重要,…

WordPress调用自带jquery的方法 ,使 $ 生效

<script>// jQuery.noConflict(); // 由于wordpress 添加了这一行&#xff0c;所以&#xff0c; $ 操作&#xff0c;会报错。(function ($) {function readyFn() {// Set your code here!!}$(document).ready(readyFn); })(jQuery);</script> https://www.kevin…

【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 上位机&#xff1a;Vofa 1.3.10 移植自AHRS —— LOXO&#xff0c;算法作者&#xff1a;SOH Madgwick 源码 为了避免所用R…

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

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

RTP协议学习大总结从原理到代码

from:http://wenku.baidu.com/view/aaad3d136edb6f1aff001fa5.html 一、流媒体概念 流媒体包含广义和狭义两种内涵&#xff1a;广义上的流媒体指的是使音频和视频形成稳定和连续的传输流和回放流的一系列技术、方法和协议的总称&#xff0c;即流媒体技术&#xff1b;狭义上 的流…

poj 2507Crossed ladders 计算几何

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

响应式样式

/* ##PC##1281px或更高分辨率 */media (min-width: 1281px) {}/* ##笔记本或PC##1025px - 1280px */media (min-width: 1025px) and (max-width: 1280px) {//CSS}/* ##平板电脑/Ipad竖屏##768px - 1024px */media (min-width: 768px) and (max-width: 1024px) {//CSS}/* ##平板…

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

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

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

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

PHP CURL 多线程 GET/POST 类

PHP CURL 多线程 GET/POST 类 2015-01-01 分类&#xff1a;技术文章 阅读(623) 评论(0)如果有需要更正或更高效的建议&#xff0c;欢迎在OSchina分享~\(≧▽≦)/~ http://www.oschina.net/code/snippet_1475115_44902 <?php /********************************************…

C#中打开设计视图时报未将对象引用设置到对象的实例

通常情况下&#xff0c;若是你将用户控件写好了放入窗体中&#xff0c;若是有不合理的代码&#xff0c;则会弹出错误提示框&#xff0c;不让你放。若是你之前只是随便加了一个用户控件&#xff0c;并且没有什么问题&#xff0c;但后来你又把控件改坏掉了&#xff0c;那么你打开…

C#线程调用带参数的方法,给控件赋值

System.Threading.Thread thread new System.Threading.Thread(() > { //各种业务 //定义一个委托 public delegate void ProcessDelegate(string a); if (this.lbStatus.InvokeRequired) { ProcessDelegate df new ProcessDelegate(AddStatus); this.Invoke(df, new obj…

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

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

【机器视觉学习笔记】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…