打印
[应用相关]

STM32硬件基础--LTDC显示图像

[复制链接]
1142|41
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
【海东青电子原创**,转载请注明出处:https://www.jianshu.com/p/216388df4d4d】
(实例代码下载地址:https://github.com/haidongqing/ltdc-demo)
LTDC是一种显示接口,主要被MCU用来连接TFT屏,这也是Lcd-Tft Display Controller(LTDC)的本意。各种常用的显示接口请参见这篇**:《各种显示接口DBI、DPI、LTDC、DSI、FSMC》https://blog.csdn.net/qq_23899395/article/details/90667169(向原作者致意!),文中详细描述了3大类显示接口:DBI、DPI和DSI。LTDC属于DPI(display pixel interface,显示像素接口,也称RGB接口),它不断地向显示器(TFT液晶屏)发送图像数据(即:不断刷新),液晶屏不需要具备显存,显存在MCU一端(片内RAM或外扩RAM)。可以直观地认为LTDC就是PC上的“显卡”。



作者:海东青电子
链接:https://www.jianshu.com/p/216388df4d4d
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

使用特权

评论回复
沙发
parameters|  楼主 | 2020-6-26 14:51 | 只看该作者
液晶屏上的像素点是一行、一行地显示出来的,扫描到最后一行后,再回到第一行扫描,如此循环往复,很像VGA显示器的工作模式。

使用特权

评论回复
板凳
parameters|  楼主 | 2020-6-26 14:51 | 只看该作者
而且,LTDC的信号时序确实沿用了VGA的术语,为了便于理解LTDC的时序参数如何设置,先来看看关于传统的VGA的信号时序:《VGA原理详解》https://blog.csdn.net/shichao1470/article/details/81840978(向原作者致意!)。

使用特权

评论回复
地板
parameters|  楼主 | 2020-6-26 14:53 | 只看该作者
核心概念如下:

      “显示器的扫描方式:扫描从屏幕左上角一点开始,从左向右逐点扫描。每扫描完一行,电子束回到屏幕的左边下一行的起始位置,在这期间,CRT对电子束进行消隐,每行结束时,用行同步信号进行同步;当扫描完所有的行,形成一帧,用场同步信号进行场同步,并使扫描回到屏幕左上方,同时进行场消隐,开始下一帧。

使用特权

评论回复
5
parameters|  楼主 | 2020-6-26 14:53 | 只看该作者
从扫描方式中我们知道,行同步,场同步以及消隐区的概念。回到时钟上来。以行扫描为例子,在一行中由于需要行消隐,所以要求一定的时钟周期用于行消隐,当然也有行同步信号。”

上图中,1-6处是重点,是LTDC的主要参数,后面将详述。

使用特权

评论回复
6
parameters|  楼主 | 2020-6-26 14:54 | 只看该作者
LTDC的功能框图:

使用特权

评论回复
7
parameters|  楼主 | 2020-6-26 14:55 | 只看该作者
LTDC的信号可以分为两类:4个控制信号(像素时钟LCD_CLK、水平同步HSYNC、垂直同步VSYNC、数据有效DE)和3个RGB数据信号(8-bit x 3)。LTDC与液晶面板之间的通讯是“同步的”,受LCD_CLK的控制。

使用特权

评论回复
8
parameters|  楼主 | 2020-6-26 14:55 | 只看该作者
STM32F746G-DISCO开发板有关TFT显示器的电路原理图如下:

使用特权

评论回复
9
parameters|  楼主 | 2020-6-26 14:56 | 只看该作者
4个控制信号和3个RGB数据信号与图三相对应。除此之外,注意上图绿色框中的 LCD_BL_CTRL 和 LCD_DISP 2个信号线。LCD_BL_CTRL 控制电源芯片 STLD40D 的输出,当其高电平时有效,使得输出的 LCD_BL_A(阳极)与 LCD_BL_K(阴极)导通,TFT面板的背光打开。这样,LCD_BL_CTRL (板子上是PK3管脚)可以用来控制TFT面板是否显示。

使用特权

评论回复
10
parameters|  楼主 | 2020-6-26 14:57 | 只看该作者
LCD_DISP(板子上是PI12管脚) 用来控制 TFT面板是否进入休眠状态,见 RK043FN48H-CT672B 模组的参考手册:

使用特权

评论回复
11
parameters|  楼主 | 2020-6-26 14:58 | 只看该作者
RK043FN48H-CT672B 是深圳晶鸿公司的带触摸的TFT液晶模组,其中液晶驱动IC型号为 OTA5180A,其数据手册里也有关于DISP信号的描述:

使用特权

评论回复
12
parameters|  楼主 | 2020-6-26 14:58 | 只看该作者
这个DISP 名字实在是令人费解,换成 Standby 或 Sleep 就容易理解了,反正是需要给高电平,才能使液晶屏正常工作。 LCD_BL_CTRL 和 LCD_DISP 这2个信号线不是LTDC“标配”的,是液晶模组“特有”的,不同的模组可能有不同的控制信号,这里特别说明一下,后面需要用CUBEMX专门配置对应的GPIO。

使用特权

评论回复
13
parameters|  楼主 | 2020-6-26 14:59 | 只看该作者
LTDC的硬件接口介绍完了,下面具体说说LTDC的控制逻辑。

使用特权

评论回复
14
parameters|  楼主 | 2020-6-26 14:59 | 只看该作者
图七中的1-6 标号与图二的标号是一一对应的:

1、HSYNC,水平同步信号,需要指明它的脉宽,单位:像素时钟DCLK。

2、HBP,Horizontal Back Porch,水平同步信号后肩(后沿,后廓,一个意思),它之后就是真正的数据开始了。单位:像素时钟。

3、HFP,Horizontal Front Porch,水平同步信号前肩,表明一行结束,单位:像素时钟。

4、VSYNC,垂直同步信号,一帧的开始,需要指明宽度,单位:行。

5、VBP,Vertical Back Porch,垂直同步信号后肩,它之后就是一帧的首行数据开始了,单位:行。

6、VHP,Vertical Front Porch,垂直同步信号前肩,表明一帧结束,单位:行。

使用特权

评论回复
15
parameters|  楼主 | 2020-6-26 15:00 | 只看该作者
再加上 Active Width(宽,像素,本例中为480)、Active height(高,像素,本例中为272),这8个数据是LTDC需要配置的最重要的参数。看看液晶控制芯片手册中对参数的要求:

上表给出了各个参数的范围,实际使用时可以在这个参考范围内做调整。注意,像素时钟DCLK的范围在5--12MHz,本例中将使用9.8MHz。

使用特权

评论回复
16
parameters|  楼主 | 2020-6-26 15:01 | 只看该作者
这里还要介绍两个LTDC的重要概念:显示层(Layer)与窗口(Window)。LTDC支持2个Layer,每个Layer对应一个显存,也就是一个图像。LTDC可以将2个图像叠加,layer1在下、layer2在上。2个层可以分别被使能,可以单独使用,也可以一起叠加使用。显然,这种2个(硬件)图层的结构非常利于动画的实现。例如,layer1保持不动,layer2不停改变相对位置,则看到的是上面的图像(比如,动画人物)在背景图上运动。进一步,每个层都有一个活动的“窗口”,就是图像具体的显示位置和大小,即图七中的 Active display area。窗口的大小可以等同于图层的大小(满屏),也可以小于图层,这样的设计利于编程的灵活性。例如,当只需要显示1/4大小的图片时,可以定义一个1/4大小的窗口来显示图片,对应的显存也只需要1/4大小,节省内存。而且图片的显示位置可以动态调整。

使用特权

评论回复
17
parameters|  楼主 | 2020-6-26 15:02 | 只看该作者
补充:关于图四中LCD_DE信号的说明:

使用特权

评论回复
18
parameters|  楼主 | 2020-6-26 15:03 | 只看该作者
当 LCD_DE 为高电平时,LTDC向液晶面板输出数据有效(就是说,LCD_DE变高后,LCD_R[7:0]等24条数据线上的输出数据有效)。

至此,与LTDC有关的参数配置讲完了,下面可以使用CUBEMX具体来配置LTDC了。

使用特权

评论回复
19
parameters|  楼主 | 2020-6-26 15:03 | 只看该作者
选择芯片 STM32F746NG:

使用特权

评论回复
20
parameters|  楼主 | 2020-6-26 15:04 | 只看该作者
配置外部晶振:

使用特权

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

本版积分规则

20

主题

361

帖子

0

粉丝