0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

_Memor 来源:_Memor 作者:_Memor 2023-07-20 14:39 次阅读

文章目录

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

在RA8889上使用emWin的优势

前言

一、获得emWin Graphic Library

1.1 安装Keil MDK,在C:Keil_v5ARMSeggeremWin 路径下获得emWin library

1.2 在C:Keil_v5ARMSeggeremWinDoc 获得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_v5ARMSeggeremWin 路径下获得emWin library

1.2 在C:Keil_v5ARMSeggeremWinDoc 获得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_v5ARMSeggeremWinSampleConfig,复制GUIConf.c 、GUIConf.h 、LCDConf.c 、LCDConf.h 4个文件到emwin_config文件夹内。
(2) 在 C:Keil_v5ARMSeggeremWinSampleDisplayDriver,复制GUIDRV_Template.c 文件到emwin_config文件夹内。
(3) 在 C:Keil_v5ARMSeggeremWinSampleGUI_X,复制GUI_X.c文件到emwin_config文件夹内。
(4) 在C:Keil_v5ARMSeggeremWinInclude,复制所有的.h文件到emwin_inc文件夹内。
(5) 在C:Keil_v5ARMSeggeremWinLib,复制GUI_CM3.lib文件到emwin_lib文件夹内。(由于我们的STM32F103是CM3核心,所以选用CM3)。
(6) 在C:Keil_v5ARMSeggeremWinSampleApplicationGUIDemo内,复制全部的文件夹到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操作界面。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 液晶屏
    +关注

    关注

    18

    文章

    714

    浏览量

    42772
  • 显示控制
    +关注

    关注

    0

    文章

    26

    浏览量

    11071
  • GUI
    GUI
    +关注

    关注

    3

    文章

    648

    浏览量

    39534
  • emWin
    +关注

    关注

    2

    文章

    37

    浏览量

    13761
收藏 人收藏

    评论

    相关推荐

    第四讲:单片机STC89C52+RA8889驱动控制彩屏 代码移植范例(包含API接口)

    51单片机通过RA8889控制驱动彩屏,移植API参考程序
    的头像 发表于 06-06 13:59 1324次阅读
    第四讲:单片机STC89C52+<b class='flag-5'>RA8889</b>驱动<b class='flag-5'>控制</b>彩屏 代码移植范例(包含API接口)

    PackagingTool_x64_v2.0.1.0图片转档打包二进制文件合并字库生成图片软件介绍

    转换结果所在目录,转换之后的JPG即可作为RA8889的图片源文件进行打包。 四、工具选项【点阵字库转成图片】,可把点阵字库转为BMP或者JPG图片,便于使用RAIO芯片进行UI设计: 在设计UI
    发表于 02-29 09:30

    RA8889/RA8876显示自定义ASCII字符方法

    本文介绍用户自己生成的ASCII字库如何通过RA8889/RA8876显示到液晶屏上。 先上一张实例效果图: 再上程序代码: int main(void) { unsigned short x,y
    发表于 04-02 16:09

    第五讲:51单片机+RA8889驱动控制彩屏 完整源码说明 【 源码v1.2 】

    51单片机驱动控制彩屏系列讲座 硬件:STC89C52 + RA8889开发板 + TFT彩屏(范例使用AT070TN92) SPI通信接口定义: P1.0RES RA8889硬件复位
    发表于 06-13 17:23

    51单片机STC8H8K64U通过RA8889/RA8876如何控制彩屏(SPI源码下载)

    /RA8876控制芯片刚好可以完美搭配用于工控、医疗等各个领域。我们这样接线就可以了: 二、SPI-4连接电路图: RA8889和单片机的接口支持SPI-4线也支持3线,我们测试时采用的是SPI-4线,连接
    发表于 06-26 14:13

    51单片机(STC8051U34K64)_RA8889_SPI4参考代码(v1.3)

    文章导引: (1)51单片机(STC8051U34K64)_RA8889_SPI4参考代码(v1.3) (2)51单片机STC8H8K64U通过RA8889/RA8876如何控制彩屏_
    发表于 07-05 10:55

    51单片机(STC8H8K64U/STC8051U34K64)_RA8889_HW_SPI4参考代码(v1.3) 硬件SPI方式驱动大屏显示

    号。目前测试这两个系列,显示速度均相当不错,软件设计也是极为简单。各篇文章下方均提供源码供参考下载。 RA8889是一款瑞佑科技推出的高性能液晶控制芯片,单片机下指令即可,可以驱动最高1366x768等
    发表于 07-17 11:15

    单片机驱动彩屏最简方案:单片机_RA8889最小开发板驱动控制TFT彩屏介绍(一)

    玩家直接驱动串口屏,反应最大的问题是刷新慢,若用RA8889这颗芯片来驱动控制彩屏,这个问题是不存在的。 五、能做到什么效果 显示UI,简单的界面
    发表于 08-22 17:31

    STM32F103+RA8889 电路图

    ` 本帖最后由 harchy 于 2020-12-25 09:34 编辑 使用单片机:STM32F103VET6液晶控制器:RA8889本DEMO主要作为图形界面显示的调试之用,可
    发表于 09-23 12:02

    RA8889 TFT LCD文字图形控制器芯片的数据手册免费下载

    RA8889 支持 CMOS 准位的接口 ,规格书内包含: 系统方块图、引脚图、AC/DC 电气特性、各个功能子方块、寄存器、省电模式的详细描述。
    发表于 11-27 08:00 16次下载
    <b class='flag-5'>RA8889</b> TFT LCD文字图形<b class='flag-5'>控制</b>器芯片的数据手册免费下载

    TFT-LCD控制RA8889ML3N的显示控制功能如何移植到emWin中-教程

    液晶显示控制RA8889ML3N的显示案例在emWin中移植
    的头像 发表于 06-20 15:34 1243次阅读
    TFT-LCD<b class='flag-5'>控制</b>器<b class='flag-5'>RA8889</b>ML3N的<b class='flag-5'>显示</b><b class='flag-5'>控制</b>功能如何移植到<b class='flag-5'>emWin</b>中-教程

    第一讲:单片机STC89C52+RA8889驱动控制彩屏 极简方案(源码公开)

    本章介绍如何使用51单片机来驱动控制彩屏,控制器彩用瑞佑的RA8889,通信方式采用SPI-4线(IO模拟时序)
    的头像 发表于 06-04 08:45 593次阅读
    第一讲:单片机STC89C52+<b class='flag-5'>RA8889</b>驱动<b class='flag-5'>控制</b>彩屏 极简方案(源码公开)

    第二讲:单片机STC89C52+RA8889驱动控制彩屏 代码移植介绍

    介绍51单片机如何移植RA8889的代码进行彩屏驱动与控制
    的头像 发表于 06-04 10:36 814次阅读
    第二讲:单片机STC89C52+<b class='flag-5'>RA8889</b>驱动<b class='flag-5'>控制</b>彩屏 代码移植介绍

    第三讲:单片机STC89C52+RA8889驱动控制彩屏 代码的压缩(Keil编译器)

    51单片机驱动控制芯片RA8889,源代码函数冗余较多,移植时可能会碰到输出程序过大,这里介绍压缩代码的方法。
    的头像 发表于 06-05 11:05 484次阅读
    第三讲:单片机STC89C52+<b class='flag-5'>RA8889</b>驱动<b class='flag-5'>控制</b>彩屏 代码的压缩(Keil编译器)

    51单片机STC8H8K64U通过RA8889/RA8876如何控制彩屏 I2C源码下载

    用51单片机STC8H8K64U驱动彩屏,控制器采用瑞佑RA8889. 使用软件模拟I2C方式通信,驱动大屏显示
    的头像 发表于 11-01 11:02 340次阅读
    51单片机STC8H8K64U通过<b class='flag-5'>RA8889</b>/<b class='flag-5'>RA</b>8876如何<b class='flag-5'>控制</b>彩屏 I2C源码下载