支持的芯片
概述
PPE(像素处理引擎)是一款弱化的 2D 图像处理引擎,提供基础的图像处理能力,专为满足嵌入式系统等对资源和成本有严格要求的场景而设计。
PPE 支持常用的像素级操作,如颜色转换、缩放、Alpha 混合、抠色等,可高效完成常见的 2D 图像处理任务,但并不具备复杂 3D 渲染能力。
功能特性
PPE 有 3 个输入层和 1 个输出层。有以下特性:
Alpha 混合
缩放
窗口配置
抠色
像素转换
多输入输出源
备注
Alpha 混合功能和缩放功能是并列功能,不能同时使用。
在使用 alpha 混合功能或者缩放功能时,可以同时使用其他功能特性。
Alpha 混合
PPE 支持最高 3 层 alpha 混合功能。

alpha 混合功能计算公式如下:
缩放
PPE 使用双线性插值算法可以实现良好的缩放效果,最高可放大或者缩小 16 倍。
备注
使用缩放时,不支持可变像素起始位置。
只有第一层支持缩放。
窗口配置
PPE 的窗口配置功能有以下特性:
可变像素起始位置。即可以控制输入窗口在输出窗口的位置。
可变窗口大小。可以配置输入窗口和输出窗口的大小。
可变行宽度。可以实现输入窗口的裁剪功能,和输出窗口的画中画功能。

抠色
当输出窗口的像素符合设定的值时,该像素将会输出 0 值。
像素转换
输入和输出支持多种像素格式,包括 ARGB8888,RGB888, RGB565 等多种常见格式。
支持的所有格式参考文件 ameba_ppe.h
中的 PPE_PIXEL_FORMAT
。部分格式如 XRGB8888 中的 X 表示 alpha 值取反,即实际计算时会对 X 值取反进行计算。
多输入输出源
输入地址可以是 PPE 设定的内部像素值,也可以是内存。
输出的地址可以是内存,也可以是 QSPI。通过 QSPI 可以直接将输出显示到外接的屏幕上。
PPE 有 3 个输入层和 1 个输出层。有以下特性:
Alpha 混合
缩放
窗口配置
抠色
像素转换
多输入源
旋转
异或
Alpha 混合
PPE 支持最高 3 层 alpha 混合功能。还支持 PPE 内部的背景层。

alpha 混合功能计算公式如下:
缩放
PPE 使用双线性插值算法可以实现良好的缩放效果,最高可放大或者缩小 16 倍。
备注
仅第一层和第二层输入层支持缩放功能。
窗口配置
PPE 的窗口配置功能有以下特性:
可变像素起始位置。即可以控制输入窗口在输出窗口的位置。
可变窗口大小。可以配置输入窗口和输出窗口的大小。
可变行宽度。可以实现输入窗口的裁剪功能,和输出窗口的画中画功能。

抠色
当输出窗口的像素符合设定的值时,该像素将会输出 0 值。抠色支持外抠色和内抠色两种模式。
内抠色满足以下条件的像素将会输出 0:
外抠色满足以下条件的像素将会输出 0:
像素转换
输入和输出支持多种像素格式,包括 ARGB8888,RGB888, RGB565 等多种常见格式。
支持的所有格式参考文件 ameba_ppe.h
中的 PPE_PIXEL_FORMAT
。部分格式如 XRGB8888 中的 X 表示 alpha 值取反,即实际计算时会对 X 值取反进行计算。
多输入源
输入地址可以是 PPE 设定的内部像素值,也可以是内存。
旋转
支持 90,180,270 度的旋转。
备注
仅第一层支持旋转功能。
异或
支持 2 层或者 3 层数据的异或。即:
备注
使用异或功能时,无法使用其他特性。
API 参考
要详细了解和使用相关 API,请参阅 {SDK}\component\soc\amebaxxxx\fwlib\include\ameba_ppe.h
。
应用示例
SDK 提供了功能示例帮助开发者了解和使用 PPE :
raw 示例
路径:
{SDK}\component\example\peripheral\raw\Display\PPE\{demo}
以下是对 raw 示例功能的简要说明:
raw_ppe_as_dma 演示如果把 ppe 当作 dma 搬运数据或者显示到 QSPI 中;
raw_ppe_3_layer_alpha_blending 演示如何使用 3 层 alpha 混合;
raw_ppe_scale 演示如何使用 scale 功能;
raw_ppe_autoload 演示如何使用 autoload 功能一次处理多帧;
raw_ppe_linklist 演示如何使用 linklist 功能一次处理多帧;