lvgl使用外部SRAM,图像边缘显示模糊重影

简述

使用正点原子HAL库例程移植littlevGL(lvgl),使用外部SRAM作为内存池,图像边缘显示模糊问题解决;

环境

硬件环境

  • 正点原子F407探索者开发板
  • 480x800 TFT显示屏

软件环境

  • Keil v5.28
  • lvgl v7
  • 工程来源
    • (A盘)\4,程序源码\3,标准例程-HAL库版本\实验28 触摸屏实验 例程代码进行移植
  • SRAM代码来源
    • (A盘)\4,程序源码\3,标准例程-HAL库版本\实验36 外部SRAM实验\HARDWARE\SRAM

注意这里使用的HAL库例程代码

问题描述

在例程中添加lvgl代码。
刚开始使用内部RAM作为GUI内存池,并跑了下例程。。。显示正常。
image

考虑到后边有应用代码得跑,于是使用外部SRAM,还是移植使用正点原子的SRAM源码,路径如上。

#define COLOR_BUF_SIZE  (LV_HOR_RES_MAX*LV_VER_RES_MAX) 
static lv_color_t color_buf[COLOR_BUF_SIZE]  __attribute__((at(0X68000000)));

但是出现边沿模糊的现象,如下图
image

image

问题解决

原因是SRAM配置的问题

void SRAM_Init(void)
{	
    ......

	//FMC读时序控制寄存器
	FSMC_ReadWriteTim.AddressSetupTime=0x00;       	//地址建立时间(ADDSET)为1个HCLK 1/168M=6ns*16=96ns
	FSMC_ReadWriteTim.AddressHoldTime=0x00;			//地址保持时间(ADDHLD)模式A未用到
	FSMC_ReadWriteTim.DataSetupTime=0x08;			//原例程这里为0x06,改为0x08
	FSMC_ReadWriteTim.BusTurnAroundDuration=0X00;
	FSMC_ReadWriteTim.AccessMode=FSMC_ACCESS_MODE_A;//模式A
	HAL_SRAM_Init(&SRAM_Handler,&FSMC_ReadWriteTim,&FSMC_ReadWriteTim);	

}

解决!

猜你喜欢

转载自blog.csdn.net/YoKu_i/article/details/109040798