中级会员
- 积分
- 429
- 金钱
- 429
- 注册时间
- 2016-5-23
- 在线时间
- 118 小时
|
1金钱
本帖最后由 pjzmj2012 于 2019-12-30 14:00 编辑
现象为,进入emwin不操作触摸屏则一切正常,一操作触摸屏有轻微的花屏现象(屏幕是RGB接口的屏幕),随后操作一段时间后便进入hardfault(ltdc时钟40M)。当ltdc时钟降到20M的时候花屏是不花屏了,但是还是会进入hardfault。我的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
|
|