硬汉嵌入式论坛

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

[ThreadX全家桶] RT1052平台PXP+GUIX实现屏幕旋转

[复制链接]

14

主题

50

回帖

97

积分

初级会员

积分
97
发表于 2022-9-22 11:41:09 | 显示全部楼层 |阅读模式
前言:
           目前在RT1052平台做了ThreadX/GUIX/FileX/USBX,因为开发功能需要将横屏显示的硬件平台通过软件修改为竖屏显示,因此研究了适合现有硬件平台的屏幕显示旋转方法,特此记录。

2D图形处理--PXP概述:
         PXPNXP设计的一种高性能的2D图形处理微构架。用于图像数据发送到LCD或者TV编码器之前的数据处理,例如图像缩放、旋转等。为无SDRAM和基于SRAM的系统提供占用内存最小的图像数据优化和性能。
特性:
PXP能将以下内容组合到一个处理引擎中:
-图像缩放;
-图像色彩转换;
-图像旋转;
-alpha混合;
-颜色键算法;
-像素校正。
PXP由多个流水线块组成,共同完成复杂算法或组合操作。
配置步骤:
l 选择PXP时钟源,配置时钟频率;
l 使能PXP时钟;
l 复位PXP外设;
l 根据要操作的具体内容配置PXP相应控制寄存器;
l 设置输入缓冲区配置,包括输入像素格式,输入缓冲区地址等;
l 设置输出缓冲区配置,包括输出像素格式,输出模式等;
l 如果使用中断需要置位相应中断位,并使能中断号;
l 若对中断优先级有要求,配置中断优先级;
l 填充要进行数据处理的缓冲数据区;
l 将数据区的地址填入PXP相应寄存器;
l 使能PXP进行数据处理。
         
         本文介绍使用PXP的旋转功能实现横屏转竖屏的效果。

软件实现过程:初始化: image.png
                              
GUIX接口函数添加旋转90°处理: image.png
         将下一帧数据复制到PXP输入帧里面,设置旋转角度为90°,输出地址设置为下一帧数据缓存。启动PXP后开始旋转计算,等待完成后下一帧的数据缓存里面就是旋转了90°的数据了,可以开始将之传入LCD显示。
局部控件刷新设置:
         根据上述修改后可以将整个界面旋转90°了,但是当界面中局部空间刷新时将会显示异常。因为局部控件的刷新是在当前显示帧数据中进行数据修改的,而修改是按照旋转前的坐标和方向进行的,这就意味着横屏的局部修改数据将会填充到旋转90°后的整体数据中,这样显示就会呈现异常情况。
         因此,即使是局部修改,也要触发为整体修改,这样就可以避免局部控件刷新后的显示异常。
         首先需要对每一个窗口进行绑定:
         image.png
image.png
         
         然后在窗口回调函数中局部刷新时将整个窗口标记为脏:
image.png
触摸校准:
         触摸校准的三个校准点是根据屏幕的长和宽设置的,翻转90°后需要将输入校准函数的长和宽对调,同时校准函数中的局部刷新也要更改为全局刷新:
image.png
image.png

  
总结:
         使用了RT1052PXP功能进行了旋转处理。如此旋转处理后对于局部刷新的效率有所降低,整体刷新需要增加一个旋转的过程。实际测试下来没有肉眼可见的延迟。

评分

参与人数 1金币 +20 收起 理由
eric2013 + 20 很给力!

查看全部评分

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117564
QQ
发表于 2022-9-22 11:47:42 | 显示全部楼层
非常好,先点个赞
回复

使用道具 举报

14

主题

50

回帖

97

积分

初级会员

积分
97
 楼主| 发表于 2022-9-22 13:32:35 | 显示全部楼层
将整个窗口标记为脏的贴图错了,应如下:
image.png
回复

使用道具 举报

14

主题

50

回帖

97

积分

初级会员

积分
97
 楼主| 发表于 2022-9-22 13:33:09 | 显示全部楼层
eric2013 发表于 2022-9-22 11:47
非常好,先点个赞

感谢硬汉哥,以后有积累和问题就在论坛和大家讨论!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-15 02:06 , Processed in 0.041467 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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