加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入
  • 正文
  • 推荐器件
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

高分辨率彩屏LCD控制器R8889ML3N的显示控制功能如何移植到emWin中-教程

2023/06/19
1446
阅读需 11 分钟
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

前言

瑞佑科技RA8889ML3N是一款功能强大的彩色液晶显示控制器,内置128Mb SDRAM, 支持1366x2048高分辨率液晶显示屏单片机MCU端支持8080/6800 8/16-bit接口,以及¾线SPIIIC接口。 RA8889支持多图层应用、画几何图形引擎、2D图形加速引擎(BTE)、画中画(PIP 实现弹窗利器)、支持BMP、JPEG格式图片显示,并内置了视频解码功能。

如何将RA8889强大的显示控制功能移植到emWin平台,以求做出流畅、炫酷的UI操作界面,接下来就说明我们如何将RA8889的应用驱动移植到emWin GUI Library里,实现在emWin平台上使用RA8889内置的液晶显示控制功能。

以下范例是基于使用瑞福科技的RA8889 EV Board开发板,使用STM32F103VET6 MCU,和使用Keil MDK 编译。

详细步骤如下:

一、 获得 emWin Graphic Library
1. 安装 Keil MDK,在 C:Keil_v5ARMSeggeremWin 路径下获得 emWin library

  1. 在 C:Keil_v5ARMSeggeremWinDoc 获得 emWin User&Reference Guide

3. 与瑞佑科技的深圳分公司(深圳瑞福科技-Q2851189731)联络,以获得最新版的RA8889_API_Demo_Vxx范例。

二、开始移植

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


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 文件夹内。

  1. 打开 Keil 项目,在 Manage Project Items 内建立 emwin_config 、 emwin_lib 、emwin_demo 3 个 Groups 并加入文件,如下图。

在 Option for Target 里面的 Include Paths 新增 3 个 include paths 如下图。

  1. 以上设定完后,我们编译时应该会产生以下错误:
    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. 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递增。
    5 分配内存给emWin系统

在GUIConf.c文件内设定,内存大小会影响效能,须根据MCU的内存大小去配置。

  1. 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()函数内, 如下图:

  1. 修改LCDconf.c 如下图:

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

运行效果图如下:

三、在emWin平台上移植RA8889显示控制功能的优势

1)显示效果优化

利用RA8889内建DRAM与BTE功能取代emWin Memory Device功能,可实现刷新显示时不闪屏,具体如何应用,可与瑞福科技联系-Q2851189731;

2) 多缓存应用

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

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

推荐器件

更多器件
器件型号 数量 器件厂商 器件描述 数据手册 ECAD模型 风险等级 参考价格 更多信息
ATXMEGA128D4-AUR 1 Microchip Technology Inc IC MCU 8BIT 128KB FLASH 44TQFP
$6.49 查看
AT90CAN128-16MUR 1 Microchip Technology Inc IC MCU 8BIT 128KB FLASH 64QFN
$7.13 查看
MCIMX535DVV1C 1 Freescale Semiconductor i.MX53 32-bit MPU, ARM Cortex-A8 core, 1GHz, PBGA 529
$36.91 查看

相关推荐

电子产业图谱