简述
使用正点原子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内存池,并跑了下例程。。。显示正常。
考虑到后边有应用代码得跑,于是使用外部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)));
但是出现边沿模糊的现象,如下图
问题解决
原因是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);
}
解决!