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

[复制链接]
2134|12
 楼主| pjzmj2012 发表于 2019-12-30 14:03 | 显示全部楼层 |阅读模式
现象为,进入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

mmuuss586 发表于 2020-1-16 11:54 | 显示全部楼层
FAQ 发表于 2022-4-20 18:45 | 显示全部楼层
会不会是触摸部分没有移植好
littlelida 发表于 2022-4-21 16:06 | 显示全部楼层
好复杂啊~~~~~
gygp 发表于 2022-12-6 16:59 | 显示全部楼层
降低屏幕的刷新速度应该可以。              
AloneKaven 发表于 2022-12-6 20:41 | 显示全部楼层
触摸部分没有移植好吧
Jacquetry 发表于 2022-12-6 21:30 | 显示全部楼层
没遇到过这种问题
Stahan 发表于 2022-12-8 19:52 | 显示全部楼层
可能有地方移植的不太好
albertaabbot 发表于 2022-12-10 15:01 | 显示全部楼层
这个是线的问题吧。              
51xlf 发表于 2022-12-10 21:04 | 显示全部楼层
这个屏幕接线有问题。              
AdaMaYun 发表于 2022-12-12 15:07 | 显示全部楼层
楼主,解决问题了嘛?如果解决了可以给大家分享一下!
iyoum 发表于 2022-12-12 19:34 | 显示全部楼层
超出访问的数据了,可能有问题。              
primojones 发表于 2022-12-15 14:52 | 显示全部楼层
keil是不是设置的了优化呢?              
您需要登录后才可以回帖 登录 | 注册

本版积分规则

36

主题

131

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部