[开发工具]

STM32垂直应用挑战第三周+LTDC/STM32CubeMX详解

[复制链接]
828|3
手机看帖
扫描二维码
随时随地手机跟帖
shendu0032|  楼主 | 2020-12-3 19:40 | 显示全部楼层 |阅读模式
本帖最后由 shendu0032 于 2020-12-3 19:40 编辑

这一周我们学习GUI,显示屏无疑是最常用的GUI开发工具。这篇**将详细介绍LTDC控制器与STM32CubeMX来开发LCD-TFT屏。
显示屏属于显示器,常见的显示器有CRT显示器、液晶显示器、LED点阵显示器及OLED显示器。
液晶电视.png
液晶显示器简称LCD,具有功耗低,体积小,承载的信息量大以及不伤眼的优点,因而成为主流电子显示设备。液晶是一种介于固体和液体之间的特殊物质,它是一种有机化合物,常态下呈液态,但它的分子排列却和固体一样非常规则,因此取名液晶。如果给液晶施加电场,会改变它的分子排列,从而改变光线的传播方向,配合偏振光片,它就具有控制光线透过率的作用,再配合彩色滤光片,改变加给液晶电压大小,就能改变某一颜色透光量的多少,图中就是绿色显示结构,
液晶屏绿色显示结构.png
利用这种原理,做出可控红、绿、蓝光输出强度的显示结构,把三种显示结构组成一个显示单位,通过控制红绿蓝的强度,可以使该单位混合输出不同的色彩,这样的一个显示单位被称为像素。
无论是哪一种显示器,都有一定的参数用于描述它们的特性,有以下5个主要的参数。
(1)像素 像素是组成图像的最基本单元要素,显示器的像素指它成像最小的点,即前面讲解液晶原理中提到的一个显示单元。
(2)分辨率 一些嵌入式设备的显示器常常以“行像素值x列像素值”表示屏幕的分辨率。如分辨率800x480表示该显示器的每一行有800个像素点,每一列有480个像素点,也可理解为有800列,480行。(3)色彩深度色彩深度指显示器的每个像素点能表示多少种颜色,一般用“位”(bit)来表示。如单色屏的每个像素点能表示亮或灭两种状态(即实际上能显示2种颜色),用1个数据位就可以表示像素点的所有状态,所以它的色彩深度为1bit,其它常见的显示屏色深为16bit、24bit。
(4)显示器尺寸显示器的大小一般以英寸表示,如5英寸、21英寸、24英寸等,这个长度是指屏幕对角线的长度,通过显示器的对角线长度及长宽比可确定显示器的实际长宽尺寸。
(5)点距 点距指两个相邻像素点之间的距离,它会影响画质的细腻度及观看距离,相同尺寸的屏幕,若分辨率越高,则点距越小,画质越细腻。如现在有些手机的屏幕分辨率比电脑显示器的还大,这是手机屏幕点距小的原因;LED点阵显示屏的点距一般都比较大,所以适合远距离观看。
触摸屏正反面.png
以上内容简单介绍了液晶屏的特点和主要参数,我是从网上copy的,没有个人的总结经验。
下面我将介绍STM32F746如何驱动LCD-TFT液晶屏显示图像。以及如何配置STM32CubeMX相关的参数和时钟序列。首先我们应该知道STM32F746系列芯片内部自带一个LTDC液晶控制器,使用SDRAM的部分空间作为显存,可直接控制面板,无需额外的增加液晶控制器芯片。在ST的官网中查找AN4861 能够找到《STM32 LCD-TFT控制器应用介绍》在这里详细介绍了该系列芯片支持的颜色格式,分辨率,液晶屏尺寸大小,LTDC的实例,总之这本书对液晶屏的底层原理和顶层设计讲解的很清楚,我今天也只是归纳其中我认为对项目应用有用的知识点,加以罗列和阐述。知识点都在这本书中,我把它放在**结尾,读者可以自行下载。
下图是LTDC控制器的结构框图,
LTDC控制器结构图.png
它主要包括信号线,图像处理单元,寄存器及时钟信号。LTDC的控制信号线与LCD的数据线一一对应,包含有HSYNC、VSYNC、DE、CLK及RGB数据线各8根。设计硬件时把LCD与STM32对应的这些引脚连接起来即可,我们也可以查阅《STM32F7xx规格书》也能够知道LTDC信号线对应的引脚,我也把这篇文档放在**结尾。下图是LCD_CLK时钟的配置流程。
LCD_CLK时钟来源.png
LTDC是带时序控制,省去了控制器的控制芯片,节省了成本和PCB的大小。上面说的连接线也只是为了信号的传输。这个没有什么难度,我们只要理解通过LTDC来配置时序参数和每一层的参数,LTDC就会自动从缓冲区取出数据刷新到显示器上。LTDC支持2层数据混合,混合前使用2层数据源,分别为前景层和背景层,如图所示,
图像的分层与混合.png
在输出时实际上液晶屏只能显示一层图像,所以LTDC在输出数据到液晶屏前需要把2层图像混合成一层,这就跟Photoshop软件的分层合成图片过程类似。混合时直接用前景层中的不透明像素替换相同位置的背景像素,而前景层中透明像素的位置,则使用背景的像素数据,也就是显示背景层的像素。LTDC的显示过程是AHB总线从缓存中取数据放到层的FIFO,每个层分别进行像素格式转换,不管每个层的颜色格式是RGB565还是其他的格式都转换成一个字大小ARGB888,然后背景层,前景层混合。混合完成后经过抖动单元输出到显示面板。
通过上面的介绍,再结合我的笔记,相信大家对LTDC都有了一定的了解,其实也就是一个控制器,太底层的原理没必要了解。下面我介绍使用STM32CubeMX来配置LTDC的相关参数。因为《STM32LCD-TFT控制器应用介绍》这篇文档有详细的介绍,我就不再重复介绍。我也是第一次配置LTDC,看文档也有一些不理解的地方,我想说一下我的理解。配置过程中用到了LCD-Image-Converter-20161012这个软件,是用来将要显示的图像转换成C文件,并能够以所需格式生成C文件。我没在官网找到,但我从其他地方找到了能够兼容STM32开发的版本,同样我也放在**最后。关于这个软件的使用,文档中也有介绍。最后我会把我配置的STM32CubeMX文件分享出来,因为我只配置了LTDC,生成的代码还不足以完成显示功能。原本想介绍一下STM32CubeMX窗口界面的,写到这里有点写不动了,毕竟我掌握的知识有限,而且有的我也是刚知道,这篇**有一些知识我也是看公众号知道的,所以可能会感觉思路不够清晰的问题,12月也是考试月,陆陆续续的考试也都来了,也没那么多的精力学习新东西。今天就写到这里,感谢**读到这里的亲们。我们一起加油。
1.jpg
2.jpg
3.jpg
4.jpg
MX.png
stm32f746bg.pdf (3.1 MB)
ST官网与GUI相关的文档.png

使用特权

评论回复
shendu0032|  楼主 | 2020-12-3 19:51 | 显示全部楼层
链接:https://pan.baidu.com/s/1hMrFNJKzwFO7duk3QlohHw
提取码:7e4y
LCD图像转换器文件太大,不能上传,有需要的可以在百度云下载。谢谢

使用特权

评论回复
x史可法| | 2020-12-3 23:43 | 显示全部楼层
楼主写得好详细啊 顶一个

使用特权

评论回复
正圆椭圆| | 2020-12-3 23:55 | 显示全部楼层
楼主写得挺不错的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:总是缺乏自信,进进退退,走走停停,不停的自我耗损,又不断的为自我耗损而再耗损。

28

主题

248

帖子

3

粉丝