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

[复制链接]
2960|28
 楼主| 数码小叶 发表于 2022-8-30 22:37 | 显示全部楼层 |阅读模式
本帖最后由 数码小叶 于 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接口特性如下:
2022-08-30_20-54-51.png
其中支持色彩查找表,可以大大节约所需的缓冲空间,比如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液晶模组,首先查看原理图连接情况
2022-08-30_21-08-58.png

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

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

不像其他系列,直接设置好主频就就可以了,需要先设置好RCC
2022-08-27_15-07-29.png

需要参考H7的手册来配置
2022-08-30_21-48-05.png
配置完成后,H7就可以跑到高主频了。


然后就是配置LTDC,为了使用内部RAM来直接驱动屏幕,选择RGB565格式以节约RAM资源,这样,两个缓冲层就可以存的下了。
2022-08-30_21-52-02.png
层参数比较简单,先只用一层,分辨率480x272

2022-08-30_21-57-02.png
LDTC的参数,完全来自于屏幕模组的数据手册
2022-08-30_21-56-52.png
关于LTDC的IO口,对比原理图可以发现,并不是全部用的默认值,需要手动修改,这应该是为了兼顾整个板卡的外设资源
2022-08-30_22-26-48.png

这里顺便打开LTDC的中断,这样一会可以利用中断,来实现屏幕颜色更新
2022-08-30_22-00-24.png

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

微信图片_20220830221300.jpg

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


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


最后看一下,点亮屏幕,在不做任何优化的情况下,需要耗费的资源
2022-08-30_22-08-59.png
这其中,缓冲区占用的资源最大,需要261kb,当然可以优化,这一篇的目的只是点亮屏幕,所以目的已经达到了

 楼主| 数码小叶 发表于 2022-8-30 22:38 | 显示全部楼层
本帖最后由 数码小叶 于 2022-8-31 17:14 编辑

插入的视频不见了


评论

@21小跑堂 :在这层编辑可以了……  发表于 2022-8-31 17:15
编辑器上方插入视频地址无效吗?  发表于 2022-8-31 16:41
claretttt 发表于 2022-9-5 13:31 | 显示全部楼层
这个只有fsmc吗
tabmone 发表于 2022-9-5 17:18 | 显示全部楼层
stm32h7的性能非常强大
alvpeg 发表于 2022-9-8 09:22 | 显示全部楼层
ltdc是什么
jackcat 发表于 2022-9-8 12:59 | 显示全部楼层
这个屏幕刷新的速度是多少
 楼主| 数码小叶 发表于 2022-9-8 20:03 | 显示全部楼层

LCD-TFT display controller
 楼主| 数码小叶 发表于 2022-9-8 20:05 | 显示全部楼层
jackcat 发表于 2022-9-8 12:59
这个屏幕刷新的速度是多少

主要看选择的分辨率以及色深,基本都在60hz以上
wwppd 发表于 2022-9-8 20:17 | 显示全部楼层
是不是直接驱动的呢?
match007 发表于 2022-9-8 20:40 | 显示全部楼层
这个接口是第一次听说,
H7专配?
 楼主| 数码小叶 发表于 2022-9-9 21:54 | 显示全部楼层
match007 发表于 2022-9-8 20:40
这个接口是第一次听说,
H7专配?

不是啊,很多系列都有,比如F4、F7、L4
 楼主| 数码小叶 发表于 2022-9-9 21:54 | 显示全部楼层
wwppd 发表于 2022-9-8 20:17
是不是直接驱动的呢?

对,要是加上DMA,效果更好
kmzuaz 发表于 2022-9-11 12:46 | 显示全部楼层
可以开发h743吗
jimmhu 发表于 2022-11-3 20:58 | 显示全部楼层
可以实现音视频的播放的功能吗?              
mnynt121 发表于 2022-11-5 11:12 | 显示全部楼层
H7的LTDC接口没有怎么使用过呢。
wwppd 发表于 2022-11-5 14:12 | 显示全部楼层
ltdc驱动RGB屏幕屏幕抖动有线条出现怎么回事?   
ulystronglll 发表于 2022-11-5 15:58 | 显示全部楼层
LTDC跟fsmc接口有什么不同的吗?
Jacquetry 发表于 2022-11-5 16:15 | 显示全部楼层
这个只有fsmc吗?
 楼主| 数码小叶 发表于 2022-11-5 21:11 | 显示全部楼层

不止FSMC
 楼主| 数码小叶 发表于 2022-11-5 21:12 | 显示全部楼层
ulystronglll 发表于 2022-11-5 15:58
LTDC跟fsmc接口有什么不同的吗?

要弄清物理接口、传输协议、协议标准、LCD控制器几个概念
您需要登录后才可以回帖 登录 | 注册

本版积分规则

105

主题

2560

帖子

19

粉丝
快速回复 在线客服 返回列表 返回顶部