• 资料介绍
    • 1、问题背景
    • 2、解决办法
    • 3、小结
  • 资料预览
  • 相关推荐
申请入驻 产业图谱

LAT1416 借助 DMA 将内存图像旋转 90 度

03/06 15:52
471
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

LAT1416 借助 DMA 将内存图像旋转 90 度

290.95 KB

1、问题背景

客户的 UI 应用使用了横屏,但在某个场景中需要使用竖屏显示,因此客户想通过逆时针 90 度旋转图形,即将 framebuffer 部分内容进行旋转后显示。目前客户使用软件来进行旋转,但效率较低,希望借助 DMA 来完成旋转操作。

2、解决办法

客户使用了 RGB565 格式,在 STM32H750 芯片上,用软件方式,已经通过两层循环实现图像的旋转:

原始像素数据在内存上是连续的,经过旋转后,原始像素数据在目的内存的位置已经全部不连续,因此即使使用 DMA 搬运数据,也只能每次传输少量数据,无法有效利用DMA burst 传输提升效率,但能释放 CPU 算力,让 CPU 处理其它事务。

3、小结

经过上述代码的测试可知,STM32H7 MDMA 与 STM32U5 GPDMA 都能实现图像旋转 90 度的功能。而 H7 使用 MDMA+LinkedList 方式会根据图像大小,使用不同LinkedList Node 数量,会占用一定的内存资源。而 U5 GPMDA 拥有 2D 寻址能力,能较容易实现此功能,并且不会占用额外内存。以上介绍的是通过 DMA 实现图像旋转,如果 MCU 内部有 GPU2D,如 STM32H7R/S,STM32U59/A/F/G 系列等,则可以通过GPU2D 实现图像的硬件旋转。

资料预览

点赞
收藏
评论
分享
加入交流群
举报

相关推荐