|
STM32U5A9DK板上带有一个2.47寸 16.7M彩色的TFT屏幕 ,配合他的4M超大flash 无需外部Flash即可实现高清图片显示,本次来展示如何从零开始使用DSI外设来驱动这块屏幕
首先是DMA2D配置我们配置为MToM模式 即MemoryToMemory,DMA2D外设在一些中高端控制器中都有存在 主要功能就是颜色填充,图像复制(从一个Buffer复制到另一块Buffer),颜色格式转换,透明度混合,听起来很像一块显卡的功能(其实更像是搬运工)。例如在颜色填充的过程中,传统操作是嵌套For循环来不断判断赋值,但是DMA2D我们只需要指定工作在RToM模式,设置填充区域大小 偏移 像素格式 然后打开传输即可完成 即可实现高速的图形渲染。 DMA2D配置参考如下
然后打开DMA2D中断 DSIHost我们配置成Vidoe模式,Command模式看屏幕是否支持
如果要适配其他屏幕 需要参考手册中的时许来配置外设 DK板中的屏幕是2lane
不同屏幕设置参数k可能有差异 图上配置仅供参考 我的屏幕参数如下参考
LTDC控制器配置,相关介绍可以参考如下链接[https://doc.embedfire.com/mcu/stm32/h750prov/hal/zh/latest/book/LTDC_DMA2D.html#ltdc ]()注意选择的是DSI模式 控制线会自动使能
以上就完成了Cubemx初始化 生成代码即可 工程结构如下
我们需要先将CubeU5软件包中的stm32_lcd驱动以及字体文件复制到工程中
宏定义参数以及图像显存地址
函数声明
屏幕初始化序列ST已经给我们写好了 我们直接拿过来用即可,剩下的就是屏幕显存操作,直接拿过来用即可 避免重复造轮子,基本都是操作buffer的操作
这句话是打开DSI时钟,初始化完屏幕后打开, 也就是CLK_P/CLKN开始发送信号 同时复位LCD开始显示 显示效果如下
图片显示的原理也是一样 都是先把图像转换成ARGB8888格式数组 然后操作DMA2D将图像数组搬运到显存中
|
【逢7发帖赢大礼】#5 Arduino UNO Q的led matrix
【逢7发帖赢大礼】#4 使用Arduino APP LAB 玩arduino UNO Q
【逢7发帖赢大礼】STM32开发之WIFI实时时钟
【逢7发帖赢大礼】#3 STM32U新进驻的新开发板Arduino UNO Q
【逢7发帖赢大礼】#2 STM32F429-Discovery在 Arduino 中的使用
【逢7发帖赢大礼】别忘了懒人IDE,arduino IDE怎么玩
【逢7发帖赢大礼】STM32开发之指纹识别!
【逢7发帖赢大礼】STM32开发之环境空气质量监测
【逢7发帖赢大礼】STM32开发之人体实时运动信息监测!
【逢7发帖赢大礼】全网最简单的Arduino_STM32开发环境搭建教程!
微信公众号
手机版
感谢分享可以试试做个表盘设计的Demo