
序言众所周知,STM32H系列作为高性能芯片,大部分都具有专门为LCD屏幕服务的外设。其中LTDC就是专门的控制LCD屏幕的外设。 LTDC全称Lcd-Tft Display Controller即LCD刷新控制器,在许多H7系列和其他一些系列上都有。 我们以STM32N6为例介绍如何使用STM32中的LTDC外设。 LTDC支持多种图像颜色格式,他们通过LTDC的抖动单元统一为RGB格式输出到LCD显示屏中。 LTDC支持双图层混叠,我们可以单独设置两个图层的内容和透明度,以及对图层进行设置,具有非常高的显示性能和操控性。 CubeMX我们打开CubeMX查看LTDC选项。由于我们的显示屏是RGB888的,因此设置显示屏刷新模式为RGB888。 参数设置中,按照LCD屏幕手册输入参数,HSYNC Width设置为5,设置为参考数+1,这是要求。所以设置为5的时候,实际应用的是4. 设置层数和窗体的起始位置和位置。 设置帧缓存区的数据格式以及默认透明度,我们拉满就是不透明。 最后对帧缓存区进行设置,我们设置为和显示窗口一样的大小。 需要注意的是有一些型号需要在这里填入帧缓存区的地址就是存放我们想要显示的内容的地址。但是N6这里是没有地址选项的,我们需要在代码中进行修改。 紧接着我们还需要检查GPIO引脚是否对应LCD的实际引脚,并且开启两个IO控制LCD的亮灭。 最后就是LTDC的时钟,根据芯片手册的典型值25MHZ,我们需要从时钟树中拉出来一条25MHZ的时钟。 代码实现我们需要一张图片数据,这里采用ST的例程,一张156X129的RGB565数据。
设置LTDC的地址,参数分别是ltdc句柄,图画地址以及图层索引。 这样子就可以正常的显示图片了。
我们简单的写一个函数让图层0渐渐黯淡即透明度递减。 除此之外,我们可以在这个的基础上添加一个图层,实现两张图的混叠。 并且额外需要注意的是,STM32N6有着独特的防火墙机制,我们需要为LTDC提供足够高的优先级满足其能够正常的访问内存 |
【STM32N6570-DK评测】 4. 使用TouchGFX 生成CubeMX文件的Bug
【STM32N6570-DK评测】 3. 外部存储器的使用
【STM32N6570-DK评测】1.开箱测评
【STM32N6570-DK评测】摄像头video encoder
【STM32N6570-DK评测】开发环境及LED debug
【STM32N6570-DK评测】测试LCD显示
STM32N6570 OTP配置
【STM32N6570-DK评测】6.驱动摄像头
【STM32N6570-DK评测】开箱、开发环境及简单功耗测试
【STM32N6570-DK评测】移植FreeRTOS系统