有两种解决方法,一种是使用存储设备,另外一种是开启多缓冲,建议使用多缓冲。

一、多缓冲简介

EMWIN刷新屏幕很慢,逐行刷新的解决方法_多缓冲

二、多缓冲工作原理

EMWIN刷新屏幕很慢,逐行刷新的解决方法_解决方法_02


三、多缓冲的开启方法

EMWIN刷新屏幕很慢,逐行刷新的解决方法_动态内存_03

EMWIN刷新屏幕很慢,逐行刷新的解决方法_emwin_04


设置图层1和图层2对应的显存地址

(1) LCD_LAYER0_FRAME_BUFFER 是图层1的显存地址。

(2) LCD_LAYER1_FRAME_BUFFER 是图层2的显存地址。

(3) 每个图层的显存大小比较考究,这里进行下简单的说明。

如果用户选择的颜色模式 = 32位色ARGB8888,显存的大小:

XSIZE_PHYS * YSIZE_PHYS * 4 * NUM_VSCREENS * NUM_BUFFERS

颜色模式 = 24位色RGB888,显存的大小:

XSIZE_PHYS * YSIZE_PHYS * 3 * NUM_VSCREENS * NUM_BUFFERS

颜色模式 = 16位色RGB566,ARGB1555, ARGB4444,AL88,那么显存的大小就是:

XSIZE_PHYS * YSIZE_PHYS * 2 * NUM_VSCREENS * NUM_BUFFERS

颜色模式 = 8位色L8,AL44,那么显存的大小就是:

XSIZE_PHYS * YSIZE_PHYS * 1 * NUM_VSCREENS * NUM_BUFFERS

这里为了方便起见,将开发板配套的16MB的SDRAM前8MB分配给LCD显存使用,后8MB用于emWin动态内存。

对于24位色,16位色,8位色,用户可以对其使能三缓冲,并且使能双图层。但是32位色也使能三缓冲和双 图层的话会超出8MB,所以用户根据自己的情况做显存和emWin动态内存的分配调整。

举一个例子,对于800*480分辨率的显示屏,使能32位色,三缓冲,那么最终一个图层需要的大小就是800 * 480 * 4 * 3 = 4.394MB的空间,如果是双图层,已经超出8MB的分配范围。

(4)为了方便起见,图层2的宏定义LCD_LAYER1_FRAME_BUFFER中的参数4是按照32位色设置的,如果用户的图层1

使用的是8位色,这里填数字1,如果是16位色,这里填2,如果是24位色,这里填3。