硬汉嵌入式论坛

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

[emWin] 图片显示问题

[复制链接]

3

主题

11

回帖

20

积分

新手上路

积分
20
发表于 2015-12-17 16:09:17 | 显示全部楼层 |阅读模式
RA8875驱动的7寸屏幕,用GUI_DrawBitmap();语句放置图片,每当图片位置超过屏幕的一半,屏幕的右半边就会出现雪花,请问是为什么呀。初始化用的就是安富莱的例程
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115694
QQ
发表于 2015-12-17 19:07:02 | 显示全部楼层
楼主是否方便发一个效果图看看。就是你的板子显示效果。
回复

使用道具 举报

3

主题

11

回帖

20

积分

新手上路

积分
20
 楼主| 发表于 2015-12-18 09:31:00 | 显示全部楼层

回 eric2013 的帖子

QQ图片20151218085048.jpg eric2013:
楼主是否方便发一个效果图看看。就是你的板子显示效果。 上部分白色的是画的一个矩形,中间这个方块是一个图片,可以看到右边有很多白色的点点。但是如果图片如果不超过屏幕中间,就不会有这种现象。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115694
QQ
发表于 2015-12-18 09:32:26 | 显示全部楼层
是不是用外部SRAM做emWin的动态内存了?
回复

使用道具 举报

3

主题

11

回帖

20

积分

新手上路

积分
20
 楼主| 发表于 2015-12-18 11:04:37 | 显示全部楼层

回 eric2013 的帖子

eric2013:是不是用外部SRAM做emWin的动态内存了? (2015-12-18 09:32) 
我用的是armfly的配套例程基础篇里面的第6章    :第6章:STemWin文本显示。看到初始化那里有bsp_InitExtSRAM();这个函数,可是注释掉还是这个情况
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115694
QQ
发表于 2015-12-18 11:05:50 | 显示全部楼层
我看下你GUIConf.C文件里面的代码。
回复

使用道具 举报

3

主题

11

回帖

20

积分

新手上路

积分
20
 楼主| 发表于 2015-12-18 11:13:32 | 显示全部楼层
#include "GUI.h"
#include "bsp.h"

/*********************************************************************
*
*       Defines
*
**********************************************************************
*/
//
// Define the available number of bytes available for the GUI
//
#define EX_SRAM   0  /*1 used extern sram, 0 used internal sram */

#if EX_SRAM
#define GUI_NUMBYTES  (1024*1024)
#else
#define GUI_NUMBYTES  (30*1024)
#endif

/* Define the average block size */
#define GUI_BLOCKSIZE 0x80

/*********************************************************************
*
*       Public code
*
**********************************************************************
*/
/*********************************************************************
*
*       GUI_X_Config
*
* Purpose:
*   Called during the initialization process in order to set up the
*   available memory for the GUI.
*/
void GUI_X_Config(void)
{
#if EX_SRAM
    static U32 *aMemory;
    aMemory = (U32 *)EXT_SRAM_ADDR;
   
    /*  Assign memory to emWin */
    GUI_ALLOC_AssignMemory(aMemory, GUI_NUMBYTES);
    GUI_ALLOC_SetAvBlockSize(GUI_BLOCKSIZE);
#else   
    /* 32 bit aligned memory area */
    static U32 aMemory[GUI_NUMBYTES / 4];
   
    /*  Assign memory to emWin */
    GUI_ALLOC_AssignMemory(aMemory, GUI_NUMBYTES);
    GUI_ALLOC_SetAvBlockSize(GUI_BLOCKSIZE);
#endif
}


没有改过这个文件
回复

使用道具 举报

3

主题

11

回帖

20

积分

新手上路

积分
20
 楼主| 发表于 2015-12-18 11:13:54 | 显示全部楼层

回 eric2013 的帖子

eric2013:我看下你GUIConf.C文件里面的代码。 (2015-12-18 11:05) 
#include "GUI.h"
#include "bsp.h"

/*********************************************************************
*
*       Defines
*
**********************************************************************
*/
//
// Define the available number of bytes available for the GUI
//
#define EX_SRAM   0  /*1 used extern sram, 0 used internal sram */

#if EX_SRAM
#define GUI_NUMBYTES  (1024*1024)
#else
#define GUI_NUMBYTES  (30*1024)
#endif

/* Define the average block size */
#define GUI_BLOCKSIZE 0x80

/*********************************************************************
*
*       Public code
*
**********************************************************************
*/
/*********************************************************************
*
*       GUI_X_Config
*
* Purpose:
*   Called during the initialization process in order to set up the
*   available memory for the GUI.
*/
void GUI_X_Config(void)
{
#if EX_SRAM
    static U32 *aMemory;
    aMemory = (U32 *)EXT_SRAM_ADDR;
   
    /*  Assign memory to emWin */
    GUI_ALLOC_AssignMemory(aMemory, GUI_NUMBYTES);
    GUI_ALLOC_SetAvBlockSize(GUI_BLOCKSIZE);
#else   
    /* 32 bit aligned memory area */
    static U32 aMemory[GUI_NUMBYTES / 4];
   
    /*  Assign memory to emWin */
    GUI_ALLOC_AssignMemory(aMemory, GUI_NUMBYTES);
    GUI_ALLOC_SetAvBlockSize(GUI_BLOCKSIZE);
#endif
}

没有改过这个文件
回复

使用道具 举报

3

主题

11

回帖

20

积分

新手上路

积分
20
 楼主| 发表于 2015-12-18 11:25:06 | 显示全部楼层

回 eric2013 的帖子

eric2013:我看下你GUIConf.C文件里面的代码。 (2015-12-18 11:05) 
只有放图片这样,画矩形,写字没事儿
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115694
QQ
发表于 2015-12-18 22:29:23 | 显示全部楼层

回 jing880311 的帖子

jing880311:只有放图片这样,画矩形,写字没事儿 (2015-12-18 11:25) 
是不是杜邦线连接的,重新插接下试试看,或者手头有其它的显示屏的话,换个屏试试。这些点是随机的吧
回复

使用道具 举报

3

主题

11

回帖

20

积分

新手上路

积分
20
 楼主| 发表于 2015-12-21 08:47:59 | 显示全部楼层

回 eric2013 的帖子

eric2013:是不是杜邦线连接的,重新插接下试试看,或者手头有其它的显示屏的话,换个屏试试。这些点是随机的吧 (2015-12-18 22:29) 
换了屏还是一样的情况,点出现的位置虽然是随机的,但是只会出现在右半边。画线,写字,放按钮都没有事儿,放图片就不行。如果在按钮上放图片,按钮也会不正常。
回复

使用道具 举报

3

主题

11

回帖

20

积分

新手上路

积分
20
 楼主| 发表于 2015-12-21 09:37:11 | 显示全部楼层

回 eric2013 的帖子

eric2013:是不是杜邦线连接的,重新插接下试试看,或者手头有其它的显示屏的话,换个屏试试。这些点是随机的吧 (2015-12-18 22:29)
杜邦线重新插了一遍还是一样的情况,感觉是不是初始化的事儿呀.可是初始化就是用的例程
            RA8875_WriteCmd(0x88);
            RA8875_Delaly1us();        /* 延迟1us */
            RA8875_WriteData(11);    /* PLLDIVM [7] = 0 ;  PLLDIVN [4:0] = 11 */

            RA8875_Delaly1ms();

            RA8875_WriteCmd(0x89);
            RA8875_Delaly1us();        /* 延迟1us */
            RA8875_WriteData(2);        /* PLLDIVK[2:0] = 2, 除以4 */
            RA8875_WriteReg(0x10, (1 <<3 ) | (1 << 1));    /* 配置16位MCU并口,65K色 */

        RA8875_WriteReg(0x14,0x63 );//0x4F
        RA8875_WriteReg(0x15, 0x00);//0x05

        //HNDR//Horizontal Non-Display Period Bit[4:0]
        //Horizontal Non-Display Period (pixels) = (HNDR + 1)*8
        RA8875_WriteReg(0x16, 0x0F);//0x0F

        //HSTR//HSYNC Start Position[4:0]
        //HSYNC Start Position(PCLK) = (HSTR + 1)*8
        RA8875_WriteReg(0x17, 0x01);

        //HPWR//HSYNC Polarity ,The period width of HSYNC.
        //HSYNC Width [4:0]   HSYNC Pulse width(PCLK) = (HPWR + 1)*8
        RA8875_WriteReg(0x18, 0x00);

        //Vertical set
        //VDHR0 //Vertical Display Height Bit [7:0]
        //Vertical pixels = VDHR + 1
        RA8875_WriteReg(0x19, 0xDF);

        //VDHR1 //Vertical Display Height Bit [8]
        //Vertical pixels = VDHR + 1
        RA8875_WriteReg(0x1A, 0x01);

        //VNDR0 //Vertical Non-Display Period Bit [7:0]
        //Vertical Non-Display area = (VNDR + 1)
        RA8875_WriteReg(0x1B, 0x0A);

        //VNDR1 //Vertical Non-Display Period Bit [8]
        //Vertical Non-Display area = (VNDR + 1)
        RA8875_WriteReg(0x1C, 0x00);

        //VSTR0 //VSYNC Start Position[7:0]
        //VSYNC Start Position(PCLK) = (VSTR + 1)
        RA8875_WriteReg(0x1D, 0x0E);

        //VSTR1 //VSYNC Start Position[8]
        //VSYNC Start Position(PCLK) = (VSTR + 1)
        RA8875_WriteReg(0x1E, 0x00);

        //VPWR //VSYNC Polarity ,VSYNC Pulse Width[6:0]
        //VSYNC Pulse Width(PCLK) = (VPWR + 1)
        RA8875_WriteReg(0x1F, 0x01);

    /* 设置TFT面板的 DISP  引脚为高,使能面板,安富莱TFT模块的DISP引脚连接到RA8875芯片的GP0X引脚 */
    RA8875_WriteReg(0xC7, 0x01);    /* DISP = 1 */

    /* LCD显示/关闭信号 (LCD Display on) */
    RA8875_WriteReg(0x01, 0x80);

    RA8875_SetDirection(0);

    RA8875_WriteReg(0x41, 0x00);    /* 选择绘图模式,目的为GRAM */

    RA8875_SetDispWin(0, 0, g_LcdHeight, g_LcdWidth);
回复

使用道具 举报

11

主题

103

回帖

31

积分

初级会员

积分
31
发表于 2015-12-22 16:43:39 | 显示全部楼层
检查一下 底层接口函数的  16bpp看, 画图片基本都是用那个函数
回复

使用道具 举报

3

主题

11

回帖

20

积分

新手上路

积分
20
 楼主| 发表于 2016-1-8 10:15:59 | 显示全部楼层
虽热还未解决,不过应该是硬件问题,不是程序的事儿
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115694
QQ
发表于 2016-1-8 10:24:50 | 显示全部楼层

回 jing880311 的帖子

jing880311:虽热还未解决,不过应该是硬件问题,不是程序的事儿 (2016-01-08 10:15) 
底层接口函数的  16bpp怎么实现的,我看下,或者你选择不做任何优化,就实现一个打点函数,测试下。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-13 06:11 , Processed in 0.303739 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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