- 1
- 2
- 3
- 4
- 5
通过DMA将内存图像旋转90度
资料介绍
1. 问题背景
客户的 UI 应用使用了横屏,但在某个场景中需要使用竖屏显示,因此客户想通过逆时 针 90 度旋转图形,即将 framebuffer 部分内容进行旋转后显示。目前客户使用软件来进 行旋转,但效率较低,希望借助 DMA 来完成旋转操作。
2. 解决办法
客户使用了 RGB565 格式,在 STM32H750 芯片上,用软件方式,已经通过两层循环 实现图像的旋转:
原始像素数据在内存上是连续的,经过旋转后,原始像素数据在目的内存的位置已经 全部不连续,因此即使使用 DMA 搬运数据,也只能每次传输少量数据,无法有效利用 DMA burst 传输提升效率,但能释放 CPU 算力,让 CPU 处理其它事务。
2.1. 使用 STM32H7 MDMA
STM32H7 芯片的 MDMA 支持 LinkedList 模式,可以配置每个 List Node 传输图像 一行数据,将像素数据传输到目的地址,同时转存为一列数据。比如将源数据第一行,转 存为目的数据第一列。
以下是 MDMA LinkedList 模式旋转图像的代码,图像像素宽度、高度分别为 WW, HH,使用 HH 个 List Node 可完成图像旋转。如果图像较大,就会使用更多节点,会占 用较多内存。
以 Figure 1 为例,将源数据第一行转存为目的数据第一列。源数据从 4 开 始,每传输 2 字节后,源地址递减 2;目的地址传输后不递减,但每 block 传输完成后, 目的地址偏移 HH*2 字节。将 block 长度设置为 2 字节,BlockCount 数设置为 WW,即 能保证整行数据的正确传输。
部分文件列表
| 文件名 | 大小 |
| LAT1416_通过DMA将内存图像旋转90度_v1.0.pdf | 291K |
最新上传
-
21ic小能手 打赏10.00元 2小时前
-
21ic小能手 打赏8.00元 2小时前
-
21ic小能手 打赏8.00元 2小时前
-
21ic小能手 打赏5.00元 2小时前
-
21ic小能手 打赏3.00元 2小时前
-
tangyu1 打赏1.00元 3天前
-
jjjjkkkkk 打赏1.00元 3天前
-
emlimei 打赏1.00元 3天前
-
21ic小能手 打赏5.00元 3天前
-
21ic小能手 打赏3.00元 3天前
资料:低频功率放大器的设计.
-
21ic小能手 打赏3.00元 3天前
-
21ic小能手 打赏3.00元 3天前
-
21ic小能手 打赏3.00元 3天前
-
21ic小能手 打赏3.00元 3天前
-
21ic小能手 打赏5.00元 3天前
资料:51单片机数字频率计
-
21ic小能手 打赏5.00元 3天前
-
21ic小能手 打赏5.00元 3天前
-
21ic小能手 打赏5.00元 3天前
-
13573902396 打赏1.00元 3天前
-
21下载积分 打赏310.00元 3天前
用户:江岚
-
21下载积分 打赏310.00元 3天前
用户:潇潇江南
-
21下载积分 打赏60.00元 3天前
用户:他山之石可攻玉
-
21下载积分 打赏310.00元 3天前
用户:小猫做电路
-
21下载积分 打赏210.00元 3天前
用户:zhengdai
-
21下载积分 打赏210.00元 3天前
用户:w993263495
-
21下载积分 打赏10.00元 3天前
用户:烟雨
-
21下载积分 打赏60.00元 3天前
用户:gsy幸运
-
21下载积分 打赏70.00元 3天前
用户:铁蛋锅
-
21下载积分 打赏65.00元 3天前
用户:xzxbybd
-
21下载积分 打赏60.00元 3天前
用户:jh0355
-
21下载积分 打赏60.00元 3天前
用户:w178191520
-
21下载积分 打赏20.00元 3天前
用户:jh03551
-
21下载积分 打赏20.00元 3天前
用户:sun2152
-
21下载积分 打赏20.00元 3天前
用户:kk1957135547
-
21下载积分 打赏25.00元 3天前
用户:w1966891335
-
21下载积分 打赏20.00元 3天前
用户:xuzhen1
-
21下载积分 打赏15.00元 3天前
用户:x15580286248
-
21下载积分 打赏25.00元 3天前
用户:pcb
-
21下载积分 打赏20.00元 3天前
用户:bhacker
-
21下载积分 打赏15.00元 3天前
用户:liqiang9090




全部评论(0)