硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2489|回复: 3
收起左侧

[DMA2D] STM32H7中DMA2D的行偏移理解

[复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
发表于 2020-7-19 02:05:50 | 显示全部楼层 |阅读模式

理解DMA2D传输的关键就是理解行偏移。前景层,背景层和输出区都有一个行偏移的寄存器,为了方便大家理解,这里画一个框图:

1.jpg


条件:
前景层,背景层和输出区分辨率都是800*480分辨率,颜色格式均为RGB565。
将前景层里面起始坐标(40,30),长480,高272的数据与
背景层里面起始坐标(50,40),长480,高272的数据复制到
输出区起始地址(60,50),长480,高272的区域。

引出问题:
那么问题来了,前景层和背景层的起始坐标在各自数据缓冲区的起始位置都比较好计算。比如前景层就是前景层首地址加上30*800*2 + 40*2,乘以2的原因是RGB565颜色格式的1个像素占用两个字节。

而难点就在如何保证前景层复制完480长度的数据后,如何切换到下一行。这个时候,行偏移就派上用场了,行偏移的意思是一行结束到下一行开始的距离,单位像素个数(也就是上面框图中两个红色箭头的总长度)。通过这个行偏移,我们就可以从前景层复制出来480*272的数据。同理,背景层和输出区的行偏移也是这个意思。

回复

使用道具 举报

3

主题

1222

回帖

1231

积分

至尊会员

积分
1231
发表于 2020-7-19 09:45:20 | 显示全部楼层
讲解清晰,辛苦了硬汉大哥
回复

使用道具 举报

8

主题

33

回帖

57

积分

初级会员

积分
57
发表于 2020-7-20 22:39:17 | 显示全部楼层
利用行偏移技巧 可以用dma2d实现图像两倍像素缩放同时色深转换
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
 楼主| 发表于 2020-7-21 07:36:36 | 显示全部楼层
jisaowang2 发表于 2020-7-20 22:39
利用行偏移技巧 可以用dma2d实现图像两倍像素缩放同时色深转换

用那个MDMA整这种方式最溜。ST整了不少这方面的例子。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-4-28 03:15 , Processed in 0.165747 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表