硬汉嵌入式论坛

 找回密码
 立即注册
查看: 4154|回复: 1
收起左侧

[emWin] emwin 花屏并进入hardfault的问题

[复制链接]

12

主题

59

回帖

95

积分

初级会员

积分
95
发表于 2019-12-30 12:31:13 | 显示全部楼层 |阅读模式
本帖最后由 pjzmj2012 于 2019-12-30 14:01 编辑

现象为,进入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


回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115787
QQ
发表于 2019-12-30 16:31:37 | 显示全部楼层
可以降低LTDC,SDRAM所涉及到GPIO速度等级看看。另外把你触摸功能先关闭了,让界面自动移动对话框到显示屏不同位置,看看是否正常。锁定好是触摸问题还是驱动问题。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-5-18 17:08 , Processed in 0.237477 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表