现象为,进入emwin不操作触摸屏则一切正常,一操作触摸屏有轻微的花屏现象,随后操作一段时间后便进入hardfault(ltdc时钟40M)。当ltdc时钟降到20M的时候花屏是不花屏了,但是还是会进入hardfault(屏幕是RGB接口的屏幕)。我的sram是is42s16400j,8MB的sdram。不知道是否跟ram容量过小有关系。
在硬件上is42s16400j能直接用w9825g6kh替代吗?我地址线A12没有连
最新发现:emwin动态内存如果选择内部sram则一切正常,不会hardfault
裸奔不带系统
下面是内存地址和颜色格式的一些定义:
#define SDRAM_BANK_ADDR ((uint32_t)0xD0000000)
#define NUM_BUFFERS 3 /* 定义多缓冲个数,仅可以设置1,2和3,也就是最大支持三缓冲 */
#define NUM_VSCREENS 1 /* 定义虚拟屏个数 */
#define LCD_LAYER0_FRAME_BUFFER SDRAM_BANK_ADDR + 0xBB800
#define LCD_LAYER1_FRAME_BUFFER (LCD_LAYER0_FRAME_BUFFER + XSIZE_PHYS * YSIZE_PHYS * 2 * NUM_VSCREENS * NUM_BUFFERS)
#define SDRAM_APP_BUF (SDRAM_BANK_ADDR + 0x600000)
#define LCD_PIXFORMAT LCD_PIXEL_FORMAT_RGB565
//根据不同的颜色格式,定义帧缓存数组
#if LCD_PIXFORMAT==LCD_PIXFORMAT_ARGB8888||LCD_PIXFORMAT==LCD_PIXFORMAT_RGB888
#pragma location = SDRAM_BANK_ADDR
unsigned long ltdc_lcd_framebuf[800][480]; //定义最大屏分辨率时,LCD所需的帧缓存数组大小
#else
#pragma location = SDRAM_BANK_ADDR
unsigned short ltdc_lcd_framebuf[800][480] ; //定义最大屏分辨率时,LCD所需的帧缓存数组大小
#endif
|