你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32H7 LTDC与DMA2D外设 (一)

[复制链接]
STMCU小助手 发布时间:2021-12-25 22:00
LTDC外设可以看成是一种M2LCD的的DMA,LTDC的初始化结构体中有一段映射地址,这个地址一般为片外RAM,也可以片内。程序修改这个RAM对应地址段的值,就会体现在屏幕上。就好比一个大数组,每个元素对应LCD的一个像素色。例如RGB888,那么每个像素点,有三个色,各占8bit,一个字节。一个像素点24bit,3字节。开辟一个这样的数组,与LTDC的起始地址段共地址,那么修改这个数组的元素值,就会体现在LCD屏幕上。这样就实现了屏幕显示。
$ v; I- s5 b& Y: h8 U+ ~( V0 q& j4 C  ^. R" m
5 @6 w$ u& f2 ?2 @0 M  N, X0 _
3 n: M" [( F; d- f
        DMA2D就直接是一种DMA了,加上了2D,不知道这个2D是 to display的意思还是2D图像的意思。不管怎么说,就是一种专门给图形显示加速的DMA无疑了。DMA2D可以混合两张图片,然后给LCD显示。其实我原来一直没有搞懂,这个混合怎么用。如果想混合,我需要3个GRAM空间。LTDC那个不能动,需要另外两个GRAM作为DMA2D的输入。由DMA2D完成混合之后,搬移到LTDC的GRAM上,实现显示。看到很多人实际的代码中,其实是只有两个GRAM,LTDC的GRAM和另外一片GRAM空间,由这俩空间混合后,搬移到LTDC的GRAM上。有点像a=a+b的意思。其实我一直觉得这样不好的原因并不是3片空间太浪费,主要是想不明白,LTDC的空间被修改之后,下一次往上附加或者混合别的内容,会不会有残留。举个例子,我想让一个图片移动。那么如果直接混合到LTDC的内存上,那么它就会把LTDC原来的信息覆盖,图片移走之后,虽然可以擦除图片痕迹,但LTDC怎么恢复之前的信息呢?这些需要再想想。因为即便有无数个GRAM空间,总有需要混合和覆盖的问题,都需要解决。除非每个GRAM的信息都能独立被保存,实时被刷新。以便重新覆盖有移动的地方的内存空位。这样代价会不会太大?有几个图层就需要几个刷新的线程,不断的更新。不断的混合。如果只是直接修改LTDC的存储还可以少点内存。如果每个图层用独立的GRAM空间,那就热闹了,得多大的RAM啊?
5 e% h; O" l# i& C& y! T# }5 n' R2 r8 r% \
. |: o4 G) m! z) P( o

5 P; r0 k* k. I& n0 H3 Y- E, L: H" p% L, Q: ^$ J6 b
收藏 评论0 发布时间:2021-12-25 22:00

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版