基于STM32的硬件RGB888接口实现emWin的快速刷新方案

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

AAnnjjiiaann22基基于于SSTTMM3322的的硬硬件件RRGGBB888888接接口口实实现现eemmWWiinn的的快快速速刷刷新新方方案案销售QQ:1295744630销售旺旺:armfly微信公众号:安富莱电子销售电话:13638617262邮箱:armfly@qq.com公司网址:技术支持论坛:bbs.armfly.com淘宝直销:armfly.taobao.com武汉安富莱电子有限公司专业开发板、显示模块制造商承接项目开发(提供生产供货服务)ZT0001专题教程作者:Eric2013武武汉汉安安富富莱莱电电子子有有限限公公司司日日版版本本::11..00第第22页页共共3322页页本次专题教程主要给大家提供STM32使用硬件RGB888接口实现emWin的快速刷新方案。能够实现,主要得益于ST官方发布了ARGB格式的emWin库。1.1重要提示(必读)1.2问题描述1.3基础知识普及:逻辑颜色和物理颜色1.4基础知识普及:固定调色板及其说明1.5解决办法1.6测试例程1.7刷图速度测试1.8如何快速修改当前已经配套的例子1.9总结11..11重重要要提提示示((必必读读))本专题教程涉及到emWin底层移植的知识,如果不了解这方面知识的话,非常有必要学习我们新版emWin教程中的移植章节说明:=19834。emWin颜色格式采用RGB888或者ARGB8888,同时硬件接口采用RGB888,有比较重要的项目实战价值。很多时候,我们需要显示效果细腻一些,特别是刷新梯度色或者颜色丰富的图片时,使用RGB565表现出的效果就比较差。对于32位色、24位色、16位色和8位色的显示效果及其刷屏速度可以看这个帖子:=16963。通过这个帖子对不同颜色格式的显示效果有个感性认识。使用ARGB格式的emWin库后,配置STM32F429的颜色格式为32位色或者24位色,刷新800*480的图片可以达到20ms一张。图片刷新方案依然使用我们新版emWin教程中推荐的,将图片绘制到存储设备里面,然后调用存储设备的API函数绘制,特别注意,我们这里要调用函数GUI_MEMDEV_WriteOpaqueAt才能达到20ms一张的效果。对于STM32F429来说,配置为32位色或者24位色时,使用ARGB格式库的意义比较大。而16位色或者8位色来说,用ARGB格式库或者ABGR格式库的区别不大。11..22问问题题描描述述这个问题由来已久,是之前为我们的STM32-V6板子制作emWin模板时发现的。V6板子的硬件配置是STM32F429BIT6+32位带宽的SDRAM+硬件RGB888接口。武武汉汉安安富富莱莱电电子子有有限限公公司司日日版版本本::11..00第第33页页共共3322页页实际测试中发现,将F429配置为16位色的RGB565,刷新800*480分辨率的图片可以做到15ms左右一帧,而测试24位色的RGB888或者32位色的ARGB8888,竟然需要200多ms。后来经过多次测试,找到了根本原因,并且在帖子:=23425里面进行了详细描述。近期,ST新发布的STemWin5.40版本中加入了ARGB格式的库,这个问题得到了解决,本次应用笔记就是为大家讲解如何使用这个库。(补充,从emWin5.30版本开始就支持ARGB格式了,但是ST发布的STemWin5.32设置相应的宏定义没有任何效果,所以官方在STemWin5.40中直接推出了ARGB格式库)。STemWin5.40下载地址:=37962。11..33基基础础知知识识普普及及::逻逻辑辑颜颜色色和和物物理理颜颜色色emWin支持黑色/白色、灰度(具有不同强度的单色)和彩色显示器。几乎市面上大家能够见到的颜色格式,emWin都支持。明白了这点后,下面说两个比较重要的概念,逻辑颜色和物理颜色。武武汉汉安安富富莱莱电电子子有有限限公公司司日日版版本本::11..00第第44页页共共3322页页1.3.1逻辑颜色逻辑颜色是应用程序处理的颜色,emWin5.30版本之前仅支持ABGR(这里没有写错,就是ABGR),也就是说我们操作emWin的时候,emWin是按照BGR格式处理写入的颜色数值,这个也就解释了初学者经常会有的疑问,为什么写入的颜色数值0x0000FF显示出来的是红色,本应该是绘制出蓝色啊,根本原因就在这个ABGR格式上了(大多数情况,我们都是直接使用emWin定义好的颜色,比如显示红色就调用GUI_RED,导致很多初学者没有注意到这个问题)。32位的ABGR颜色格式表示的含义如下:AlphaBlueGreenRed0x00表示完全不透明0xFF表示完全透明bit[31:24]占用8位bit[23:16]占用8位bit[15:08]占用8位bit[07:00]占用8位从上面的表格可以看出alpha透明通道用8位来表示,三原色BGR也都是用8位数据来表示。从emWin5.30版本之后为什么又推出了ARGB格式呢?主要是因为越来越多显示屏控制器基本都采用这种颜色格式了,比如STM32F429就是这种颜色格式。32位的ARGB颜色格式表示的含义如下:AlphaRedGreenBlue0x00表示完全透明0xFF表示完全不透明bit[31:24]占用8位bit[23:16]占用8位bit[15:08]占用8位bit[07:00]占用8位那么问题来了,STM32F429的LCD控制器是ARGB格式的,跟emWin默认的ABGR格式不兼容,岂不是每次显示前都要做颜色的转换,实际上的确是这样的,在一定程度上比较影响LCD性能,但是由于三缓冲,内存设备和F429的DMA2D颜色格式硬件转换在一定程度上降低了影响。1.3.2物理颜色物理颜色是可用显示器实际显示的颜色,按照与逻辑颜色相同的24位RGB或者BGR格式进行定义。在运行时,逻辑颜色映射到物理颜色。对于仅有几种颜色的显示器,如单色显示器或8/16色LCD,emWin使用优化版的“最小二乘偏差搜索”对其进行转换,将显示的颜色(逻辑颜色)与LCD可实际显示的所有可用颜色(物理颜色)进行比较,最终使用最接近的颜色。1.3.3STM32F429支持的颜色格式STM32F429支持8种颜色格式:ARGB8888RGB888武武汉汉安安富富莱莱电电子子有有限限公公司司日日版版本本::11..00第第55页页共共3322页页RGB565ARGB1555ARGB4444L8(8位Luminance或CLUT)AL44(4位alpha+4位luminance)AL88(8位alpha+8位luminance)对于这8种颜色格式,本专题配套的例子都已经实现了,用户只需设置LCDConf_Lin_Template.C文件的宏配置:/*6.STM32F429/439支持的颜色模式,所有模式都支持,用户可任意配置。特别注意如下两个问题:(1)如果用户选择了ARGB8888或者RGB888模式,LCD闪烁比较厉害的话,请降低LTDC的时钟大小,在文件bsp_tft_429.c的函数LCD_ConfigLTDC里面设置。a.一般800*480分辨率的显示屏,ARGB8888或者RGB888模式LTDC时钟选择10-20MHz即可。b.480*272分辨率的可以高些,取20MHz左右即可。(2)16位色或者8位色模式,LTDC的时钟频率一般可以比24位色或者32位色的高一倍。*/#define_CM_ARGB88881#define_CM_RGB8882#define_CM_RGB5653#define_CM_ARGB15554#define_CM_ARGB44445#define_CM_L86#define_CM_AL447#define_CM_AL888/*7.配置图层1的颜色模式和分辨率大小*/#defineCOLOR_MODE_0_CM_RGB565#defineXSIZE_0XSIZE_PHYS#defineYSIZE_0YSIZE_PHYS/*8.配置图层2的的颜色模式和分辨率大小*/#defineCOLOR_MODE_1_CM_RGB565#defineXSIZE_1XSIZE_PHYS#defineYSIZE_1YSIZE_PHYS/*9.单图层情况下,根据用户选择的颜色模式可自动选择图层1的emWin的驱动和颜色模式*/#if(COLOR_MODE_0==_CM_ARGB8888)#defineCOLOR_CONVERSION_0GUICC_M8888I#defineDISPLAY_DRIVER_0GUIDRV_LIN_32#elif(COLOR_MODE_0==_CM_RGB888)#defineCOLOR_CONVERSION_0GUICC_M888#defineDISPLAY_DRIVER_0GUIDRV_LIN_24#elif(COLOR_MODE_0==_CM_RGB565)#defineCOLOR_CONVERSION_0GUICC_M565#defineDISPLAY_DRIVER_0GUIDRV_LIN_16#elif(COLOR_MODE_0==_CM_ARGB1555)#defineCOLOR_CONVERSION_0GUICC_M1555I#defineDISPLAY_DRIVER_0GUIDRV_LIN_16#elif(COLOR_MODE_0==_CM_ARGB4444)#defineCOLOR_CONVERSION_0GUICC_M4444I#defineDISPLAY_DRIVER_0GUIDRV_LIN_16武武汉汉安安富富莱莱电电子子有有限限公公司司日日版版本本::11..00第第66页页共共3322页页#elif(COLOR_MODE_0==_CM_L8)#defineCOLOR_CONVERSION_0GUICC_8666#defineDISPLAY_DRIVER_0GUIDRV_LIN_8#elif(COLOR_MODE_0==_CM_AL44)#defineCOLOR_CONVERSION_0GUICC_1616I#defineDISPLAY_DRIVER_0GUIDRV_LIN_8#elif(COLOR_MODE_0==_CM_AL88)#defineCOLOR_CONVERSION_0GUICC_88666I#defineDISPLAY_DRIVER_0GUIDRV_LIN_16#else#errorIllegalcolormode0!#endif/*10.双图层情况下,根据用户选择的颜色模式可自动选择图层2的emWin的驱动和颜色模式*/#if(GUI_NUM_LAYERS1)#if(COLOR_MODE_1==_CM_ARGB8888)#defineCOLOR_CONVE

1 / 32
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功