emWin平台上应用RA8889显示控制的UI界面的优化

2023-10-14 19:20

本文主要是介绍emWin平台上应用RA8889显示控制的UI界面的优化,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

RA8889与emWin驱动移植指南及显示优化


文章目录

  • RA8889与emWin驱动移植指南及显示优化
  • 在RA8889上使用emWin的优势
  • 前言
  • 一、获得emWin Graphic Library
    • 1.1 安装Keil MDK,在C:\Keil_v5\ARM\Segger\emWin 路径下获得emWin library
    • 1.2 在C:\Keil_v5\ARM\Segger\emWin\Doc 获得emWin User&Reference Guide
    • 1.3 获得RA8889 API 范例程序
  • 二、开始移植
    • 2.1. 新增3个文件夹 emwin_config,emwin_inc,emwin_lib
    • 2.2 建立emwin_config 、 emwin_lib 、 emwin_demo 3个Groups
    • 2.3 以上设定完后,我们编译时应该会产生以下错误:
    • 2.4 emWin GUI 时基源
    • 2.5 分配内存给emWin系统
    • 2.6. GUIDRV_Template.c 修改
    • 2.7 修改LCDConf.c如下图:
  • 三、在RA8889上使用emWin的优势
    • 3.1 显示效果优化
    • 3.2 多缓存应用
  • 总结
  • RA8889 + emWin Demo 视频


在RA8889上使用emWin的优势

为了更好能实现RA8889的功能,如多缓存的应用(内置有128Mbit SDRAM),画几何图形引擎,2D图形加速引擎(BTE),画中画(PIP 实现弹窗利器)、显示图片(BMP、JPEG),视频播放等等功能,我们已在emWin平台上加入了以上的功能,提高实现显示效率。

前言

本文在说明如何将瑞佑科技的RA8889(液晶屏控制器TFT LCD Controller)的驱动移植到emWin GUI Library里,实现在emWin平台上使用RA8889内置的液晶显示控制功能,以下说明请对照RA8889_API_emwin546_stm32f103_8080IF 范例程序,此范例基于使用RA8889 EV Board板上使用STM32F103VET6 MCU,使用Keil MDK 编译。


一、获得emWin Graphic Library

1.1 安装Keil MDK,在C:\Keil_v5\ARM\Segger\emWin 路径下获得emWin library

在这里插入图片描述

1.2 在C:\Keil_v5\ARM\Segger\emWin\Doc 获得emWin User&Reference Guide

在这里插入图片描述

1.3 获得RA8889 API 范例程序

获得RA8889 API 范例程序/RA8889_API_emwin546_stm32f103_8080IF ,请与瑞佑科技深圳分公司瑞福科技的业务员联系,获取最新的RA8889_API_Demo_Vxx与RA8889_API_emwin546_stm32f103_8080IF范例。

二、开始移植

RA8889_API_emwin546_stm32f103_8080IF 是由RA8889_API_Demo_Vxx加入emWin Library产生的,以下修改说明请参考RA8889_API_emwin546_stm32f103_8080IF范例程序项目。

2.1. 新增3个文件夹 emwin_config,emwin_inc,emwin_lib

在这里插入图片描述
(1) 在 C:\Keil_v5\ARM\Segger\emWin\Sample\Config,复制GUIConf.c 、GUIConf.h 、LCDConf.c 、LCDConf.h 4个文件到emwin_config文件夹内。
(2) 在 C:\Keil_v5\ARM\Segger\emWin\Sample\DisplayDriver,复制GUIDRV_Template.c 文件到emwin_config文件夹内。
(3) 在 C:\Keil_v5\ARM\Segger\emWin\Sample\GUI_X,复制GUI_X.c文件到emwin_config文件夹内。
(4) 在C:\Keil_v5\ARM\Segger\emWin\Include,复制所有的.h文件到emwin_inc文件夹内。
(5) 在C:\Keil_v5\ARM\Segger\emWin\Lib,复制GUI_CM3.lib文件到emwin_lib文件夹内。(由于我们的STM32F103是CM3核心,所以选用CM3)。
(6) 在C:\Keil_v5\ARM\Segger\emWin\Sample\Application\GUIDemo内,复制全部的文件夹到emwin_demo文件夹内。

2.2 建立emwin_config 、 emwin_lib 、 emwin_demo 3个Groups

打开Keil项目,在Manage Project Items 内建立emwin_config 、 emwin_lib 、 emwin_demo 3个Groups并加入文件,如下图。在这里插入图片描述
在Option for Target里面的Include Paths 新增3个include paths如下图。
在这里插入图片描述

2.3 以上设定完后,我们编译时应该会产生以下错误:

Error: L6218E: Undefined symbol GUI_X_GetTaskId (referred from gui_task.o).
Error: L6218E: Undefined symbol GUI_X_InitOS (referred from gui_task.o).
Error: L6218E: Undefined symbol GUI_X_Lock (referred from gui_task.o).
Error: L6218E: Undefined symbol GUI_X_Unlock (referred from gui_task.o).

由于本范例不使用OS操作系统,所以我们先忽略这个问题,为了让编译可以正常,我们在GUI_X.c内加入这几个函数,如下图。
在这里插入图片描述

2.4 emWin GUI 时基源

emWin GUI 需要一个时基源并须1ms递增,即OS_TimeMS变数在GUI_X.c文件内声明,MCU必须先提供一个1ms的timer tick,通常在Cortex-M由SysTick的设定由SysTick_Handler{}中断函数去递增变量来实现,而本文范例采用MCU TIMER中断来提供1ms的tick,在stm32f10x_it.c内TIM3_IRQHandler()中断函数实现tick递增。

2.5 分配内存给emWin系统

在GUIConf.c文件内设定,内存大小会影响效能,须根据MCU的内存大小去配置。
在这里插入图片描述

2.6. GUIDRV_Template.c 修改

使用GUIDRV_Template.c 作为新增一个GUI设备的驱动文件,emWin实现屏幕的驱动主要在于写一个点与读一个点,我们必须修改static void _SetPixelIndex(GUI_DEVICE * pDevice, int x, int y, LCD_PIXELINDEX PixelIndex)与static LCD_PIXELINDEX _GetPixelIndex(GUI_DEVICE * pDevice, int x, int y)两个主要函数,如下图。
在这里插入图片描述在这里插入图片描述

引入的putPixel()与getPixel()函数来自RA8889_API.h,在这个范例选用16bit RGB565 或
24bit RGB888 数据格式,参考UserDef.h 选用如下设定:

代码如下(示例):
支持16bit RGB565 (使用emWin GUICC_M565)
#define Parallel_8080
#define MCU_16bit_ColorDepth_16bpp
代码如下(示例):
支持 24bit RGB888 (使用emWin GUICC_M888)
#define Parallel_8080
#define MCU_16bit_ColorDepth_24bpp_Mode_2

另外为了优化填充效率,在GUIDRV_Template.c文件新增定义Add2D_Optimize,使用RA8889内建2D绘图加速功能并增加到_FillRect()、_DrawHLine()、_DrawVLine()函数内,如下图:
在这里插入图片描述

在这里插入图片描述

2.7 修改LCDConf.c如下图:

在这里插入图片描述

上述设定完成后,在main.c 加入以下内容,开始运行GUIDEMO。
在这里插入图片描述

三、在RA8889上使用emWin的优势

为了更好能实现RA8889的功能,如多缓存的应用(内置有128Mbit SDRAM),画几何图形引擎,2D图形加速引擎(BTE),画中画(PIP 实现弹窗利器)、显示图片(BMP、JPEG),视频播放等等功能,我们已在emWin平台上加入了以上的功能,提高实现显示效率。

3.1 显示效果优化

利用RA8889内建DRAM与BTE功能取代emWin Memory Device功能,为了更新显示不闪屏,具体应用可与瑞佑科技联系;

3.2 多缓存应用

利用RA8889内建 128Mbit DRAM ,分配内存给emWin在RA8889的显存上操作,即可实现:缓存1用于液晶屏的显示(即显示区)、缓存2 用于emWin的读写操作内存、另外可分配缓存3、缓存4…等等,比如缓存3可用于显示挂在RA8889上的Flash的图片,当需要显示时,即可用BTE的复制粘贴到显示区显示,比如缓存4用作视频的缓存纽带,可完美实现emWin窗口+视频播放的搭配;以上实现具体原理,以及代码例程,可与瑞佑科技联系,


总结

使用瑞佑科技的 RA8889 液晶控制器芯片,搭配低端MCU,在emWin平台上,接高分辨率屏(1366*2048),也可接低分辨率屏,即可做出流畅、酷炫的UI操作界面。

RA8889 + emWin Demo 视频

瑞佑科技 RA8889 + emWin Demo

这篇关于emWin平台上应用RA8889显示控制的UI界面的优化的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/212606

相关文章

Vue3 的 shallowRef 和 shallowReactive:优化性能

大家对 Vue3 的 ref 和 reactive 都很熟悉,那么对 shallowRef 和 shallowReactive 是否了解呢? 在编程和数据结构中,“shallow”(浅层)通常指对数据结构的最外层进行操作,而不递归地处理其内部或嵌套的数据。这种处理方式关注的是数据结构的第一层属性或元素,而忽略更深层次的嵌套内容。 1. 浅层与深层的对比 1.1 浅层(Shallow) 定义

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

流媒体平台/视频监控/安防视频汇聚EasyCVR播放暂停后视频画面黑屏是什么原因?

视频智能分析/视频监控/安防监控综合管理系统EasyCVR视频汇聚融合平台,是TSINGSEE青犀视频垂直深耕音视频流媒体技术、AI智能技术领域的杰出成果。该平台以其强大的视频处理、汇聚与融合能力,在构建全栈视频监控系统中展现出了独特的优势。视频监控管理系统EasyCVR平台内置了强大的视频解码、转码、压缩等技术,能够处理多种视频流格式,并以多种格式(RTMP、RTSP、HTTP-FLV、WebS

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

HDFS—存储优化(纠删码)

纠删码原理 HDFS 默认情况下,一个文件有3个副本,这样提高了数据的可靠性,但也带来了2倍的冗余开销。 Hadoop3.x 引入了纠删码,采用计算的方式,可以节省约50%左右的存储空间。 此种方式节约了空间,但是会增加 cpu 的计算。 纠删码策略是给具体一个路径设置。所有往此路径下存储的文件,都会执行此策略。 默认只开启对 RS-6-3-1024k

第10章 中断和动态时钟显示

第10章 中断和动态时钟显示 从本章开始,按照书籍的划分,第10章开始就进入保护模式(Protected Mode)部分了,感觉从这里开始难度突然就增加了。 书中介绍了为什么有中断(Interrupt)的设计,中断的几种方式:外部硬件中断、内部中断和软中断。通过中断做了一个会走的时钟和屏幕上输入字符的程序。 我自己理解中断的一些作用: 为了更好的利用处理器的性能。协同快速和慢速设备一起工作

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个