打印
[GUI]

【STM32H750B-DK评测】二:使用H7的LTDC接口点亮屏幕

[复制链接]
1666|28
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 数码小叶 于 2022-8-30 22:33 编辑

STM32H750B-DK探索套件板载了一块4.3寸的电容触摸屏,RGB接口,刚好可以利用H7自带的LTDC接口来驱动。LTDC全称是LCD-TFT display controller,利用LTDC接口,STM32 MCU可以直接驱动高分辨率显示面板,无需任何CPU干预。另外,LTDC可以自动从帧缓冲器(可以是内部存储器,如内部闪存、内部SRAM,或外部存储器,如FMC_SDRAM或Quad-SPI)读取图形数据并将其驱动到显示器。
H7的LTDC接口特性如下:

其中支持色彩查找表,可以大大节约所需的缓冲空间,比如100x100的200色图片,ARGB888需要100x100x32 bits = 40000 bytes,而要是使用L8_ARGB8888的话只需要00x100x8 bits + 200x32 bits = 10800bytes。


之所以可以用LTDC接口来驱动,是因为STM32H750B-DK探索套件板载的屏幕不是常见的FMC或SPI接口屏幕,而是RGB接口屏幕,当然,FMC接口驱动屏幕也是很有优势的。
STM32H750B-DK探索套件采用的是RK043FN48H-CT672B液晶模组,首先查看原理图连接情况


如果熟悉RGB屏幕就可以直接开始驱动了,不熟悉,可以看下手册,当然,实际驱动时,还是离不开手册上的参数
打开cubeMX,选择好芯片型号

再依此配置工程选项、时钟、调试接口、LTDC接口、NVIC中断
STM32H7在时钟方面和其他系统不一样,不能直接跑到最高频率


不像其他系列,直接设置好主频就就可以了,需要先设置好RCC


需要参考H7的手册来配置

配置完成后,H7就可以跑到高主频了。


然后就是配置LTDC,为了使用内部RAM来直接驱动屏幕,选择RGB565格式以节约RAM资源,这样,两个缓冲层就可以存的下了。

层参数比较简单,先只用一层,分辨率480x272


LDTC的参数,完全来自于屏幕模组的数据手册

关于LTDC的IO口,对比原理图可以发现,并不是全部用的默认值,需要手动修改,这应该是为了兼顾整个板卡的外设资源


这里顺便打开LTDC的中断,这样一会可以利用中断,来实现屏幕颜色更新


顺带着打开了用户按键的中断,再顺带着调整了一下优先级,一切配置ok,生成工程。
因为LTDC几乎不需要CPU的干预,因此留下的工作量也很少,定义个一个数组作为一层的完整缓冲区
uint16_t FrameBuffer[480*272]; 
然后,就是在程序运行的时候,更新这个数组,对于RGB565,可以这样赋值
colour = ((Red>>3)<<11) | ((Green>>2)<<5) | (Blue>>3);
只是为了点亮屏幕,因此,可以设置整个屏幕是同一个颜色,即同一个数值。在网上找一个RGB在线转换工具,完成颜色转换。
这样就完成了全部工作。关于LTDC的数据来源,实际就是上面定义的缓冲数组,这一步实际在配置LTDC的时候已经完成了。编译,烧录到H7中



屏幕顺利点亮了,可以看到,整个过程中,完全不占用CPU的资源,cpu只是给缓冲区数组赋了一个值


[media=x,500,375][/media]


最后看一下,点亮屏幕,在不做任何优化的情况下,需要耗费的资源

这其中,缓冲区占用的资源最大,需要261kb,当然可以优化,这一篇的目的只是点亮屏幕,所以目的已经达到了

使用特权

评论回复
沙发
数码小叶|  楼主 | 2022-8-30 22:38 | 只看该作者
本帖最后由 数码小叶 于 2022-8-31 17:14 编辑

插入的视频不见了


使用特权

评论回复
评论
数码小叶 2022-8-31 17:15 回复TA
@21小跑堂 :在这层编辑可以了…… 
21小跑堂 2022-8-31 16:41 回复TA
编辑器上方插入视频地址无效吗? 
板凳
claretttt| | 2022-9-5 13:31 | 只看该作者
这个只有fsmc吗

使用特权

评论回复
地板
tabmone| | 2022-9-5 17:18 | 只看该作者
stm32h7的性能非常强大

使用特权

评论回复
5
alvpeg| | 2022-9-8 09:22 | 只看该作者
ltdc是什么

使用特权

评论回复
6
jackcat| | 2022-9-8 12:59 | 只看该作者
这个屏幕刷新的速度是多少

使用特权

评论回复
7
数码小叶|  楼主 | 2022-9-8 20:03 | 只看该作者

LCD-TFT display controller

使用特权

评论回复
8
数码小叶|  楼主 | 2022-9-8 20:05 | 只看该作者
jackcat 发表于 2022-9-8 12:59
这个屏幕刷新的速度是多少

主要看选择的分辨率以及色深,基本都在60hz以上

使用特权

评论回复
9
wwppd| | 2022-9-8 20:17 | 只看该作者
是不是直接驱动的呢?

使用特权

评论回复
10
match007| | 2022-9-8 20:40 | 只看该作者
这个接口是第一次听说,
H7专配?

使用特权

评论回复
11
数码小叶|  楼主 | 2022-9-9 21:54 | 只看该作者
match007 发表于 2022-9-8 20:40
这个接口是第一次听说,
H7专配?

不是啊,很多系列都有,比如F4、F7、L4

使用特权

评论回复
12
数码小叶|  楼主 | 2022-9-9 21:54 | 只看该作者
wwppd 发表于 2022-9-8 20:17
是不是直接驱动的呢?

对,要是加上DMA,效果更好

使用特权

评论回复
13
kmzuaz| | 2022-9-11 12:46 | 只看该作者
可以开发h743吗

使用特权

评论回复
14
jimmhu| | 2022-11-3 20:58 | 只看该作者
可以实现音视频的播放的功能吗?              

使用特权

评论回复
15
mnynt121| | 2022-11-5 11:12 | 只看该作者
H7的LTDC接口没有怎么使用过呢。

使用特权

评论回复
16
wwppd| | 2022-11-5 14:12 | 只看该作者
ltdc驱动RGB屏幕屏幕抖动有线条出现怎么回事?   

使用特权

评论回复
17
ulystronglll| | 2022-11-5 15:58 | 只看该作者
LTDC跟fsmc接口有什么不同的吗?

使用特权

评论回复
18
Jacquetry| | 2022-11-5 16:15 | 只看该作者
这个只有fsmc吗?

使用特权

评论回复
19
数码小叶|  楼主 | 2022-11-5 21:11 | 只看该作者

不止FSMC

使用特权

评论回复
20
数码小叶|  楼主 | 2022-11-5 21:12 | 只看该作者
ulystronglll 发表于 2022-11-5 15:58
LTDC跟fsmc接口有什么不同的吗?

要弄清物理接口、传输协议、协议标准、LCD控制器几个概念

使用特权

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

本版积分规则

103

主题

2540

帖子

19

粉丝