OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2802|回复: 3

求解!F207外部FLSHA中650K图片显示问题(不加SRAM)

[复制链接]

1

主题

8

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2019-7-6
在线时间
15 小时
发表于 2019-7-18 15:23:28 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 吴高阳 于 2019-7-19 08:57 编辑

如果我用外部FLSHA放图片一个图片650K怎样发出去呢不外加SRAM
void image_spi_display(u16 x,u16 y,u8 picture_x)
{
        u32 Picture_X_Addr;
        u16 a=0,b=0;
        u8 c;
        Picture_X_Addr=Get_Picture_X_Addr(picture_x);
        a=((u16)W25QXX_ReadByte(Picture_X_Addr+3)<<8)+W25QXX_ReadByte(Picture_X_Addr+2);
        b=((u16)W25QXX_ReadByte(Picture_X_Addr+5)<<8)+W25QXX_ReadByte(Picture_X_Addr+4);
        c=W25QXX_ReadByte(Picture_X_Addr);
        image_spi_show(x,y,a,b,c,Picture_X_Addr+8);
}

//&#212;úòo&#190;§é&#207;&#187;-í&#188;£¨&#189;&#246;&#214;§3&#214;£o′ó×óμ&#189;óò£&#172;′óé&#207;μ&#189;&#207;&#194; or ′óé&#207;μ&#189;&#207;&#194;£&#172;′ó×óμ&#189;óò μ&#196;é¨&#195;è·&#189;ê&#189;£&#161;£&#169;          
//xsta,ysta,width,height:&#187;-í&#188;&#199;&#248;óò
//scan:&#188;&#251;image2lcd V2.9μ&#196;&#203;μ&#195;÷.
//*p:í&#188;&#207;&#241;êy&#190;Y
void image_spi_show(u16 xsta,u16 ysta,u16 width,u16 height,u8 scan,u32 Picture_X_Addr)
{  
        u32 i;
        u32 len=0;
        if((scan&0x03)==0)//&#203;&#174;&#198;&#189;é¨&#195;è
        {
                LCD_Scan_Dir(L2R_U2D);//′ó×óμ&#189;óò,′óé&#207;μ&#189;&#207;&#194;
                LCD_Set_Window(xsta,ysta,width,height);
                LCD_SetCursor(xsta,ysta);//éè&#214;&#195;1a±ê&#206;&#187;&#214;&#195;
                               
        }else  //′1&#214;±é¨&#195;è
        {  
                LCD_Scan_Dir(U2D_L2R);//′óé&#207;μ&#189;&#207;&#194;,′ó×óμ&#189;óò
                LCD_Set_Window(xsta,ysta,width,height);
                LCD_SetCursor(xsta,ysta);//éè&#214;&#195;1a±ê&#206;&#187;&#214;&#195;  
        }
        LCD_WriteRAM_Prepare();           //&#191;aê&#188;D′è&#235;GRAM
        len=width*height;                        //D′è&#235;μ&#196;êy&#190;Y3¤&#182;è
        for(i=0;i<len;i++)
        {
                LCD_WR_DATA(image_spi_getcolor(scan&(1<<4),W25QXX_ReadByte(Picture_X_Addr),W25QXX_ReadByte(Picture_X_Addr+1)));
                Picture_X_Addr=Picture_X_Addr+2;
        }           
        LCD_Set_Window(0,0,lcddev.width,lcddev.height);              
}  

u16 image_spi_getcolor(u8 mode,u8 tempa,u8 tempb)
{
        u16 color;
        if(mode)
        {
                                color=tempb;
                color|=((u16)tempa)<<8;

        }else
        {
                color=((u16)tempb)<<8;
                color|=tempa;
        }
        return color;       
}






















       
u32 Get_Picture_X_Addr(u8 picture_x)
{
        u32 Picture_X_Addr;
        if(picture_x==1)
        {
                Picture_X_Addr=0;
        }
        else if(picture_x==2)
        {
                Picture_X_Addr=0xAF000;
        }
        else if(picture_x==3)
        {
                Picture_X_Addr=0x15E000;
        }
        else if(picture_x==4)
        {
                Picture_X_Addr=0x20D000;
        }
        else if(picture_x==5)
        {
                Picture_X_Addr=0x2BC000;
        }
        else if(picture_x==6)
        {
                Picture_X_Addr=0x36B000;
        }
        else if(picture_x==7)
        {
                Picture_X_Addr=0x41A000;
        }
        else if(picture_x==8)
        {
                Picture_X_Addr=0x4C9000;
        }
        else if(picture_x==9)
        {
                Picture_X_Addr=0x578000;
        }
        else if(picture_x==10)
        {
                Picture_X_Addr=0x627000;
        }
        else if(picture_x==11)
        {
                Picture_X_Addr=0x6D6000;
        }
        else if(picture_x==12)
        {
                Picture_X_Addr=0x785000;
        }
        else if(picture_x==13)
        {
                Picture_X_Addr=0x834000;
        }
        else
        {
                Picture_X_Addr=0;
        }
        return Picture_X_Addr;
}





u8 W25QXX_ReadByte(u32 ReadAddr)   
{  
                u8 temp=0;
        W25QXX_CS=0;                            //ê1&#196;ü&#198;÷&#188;t   
    SPI1_ReadWriteByte(W25X_ReadData);         //·¢&#203;í&#182;áè&#161;&#195;üá&#238;   
    SPI1_ReadWriteByte((u8)((ReadAddr)>>16));  //·¢&#203;í24bitμ&#216;&#214;·   
    SPI1_ReadWriteByte((u8)((ReadAddr)>>8));   
    SPI1_ReadWriteByte((u8)ReadAddr);   
    temp=SPI1_ReadWriteByte(0XFF);   //&#209;-&#187;·&#182;áêy
        W25QXX_CS=1;  
        return   temp        ;
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165508
金钱
165508
注册时间
2010-12-1
在线时间
2115 小时
发表于 2019-7-19 02:24:48 | 显示全部楼层
重新发帖,搞个乱七八糟背景色
回复

使用道具 举报

1

主题

8

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2019-7-6
在线时间
15 小时
 楼主| 发表于 2019-7-19 08:53:21 | 显示全部楼层
正点原子 发表于 2019-7-19 02:24
重新发帖,搞个乱七八糟背景色

汗,第一次发帖失误了,昨天我调出来了,就是把内部FLASH显示图片列程的图片获取地址改成spi获取外部flsha地址上的数据,但是有一个问题就是图片显示速度比较慢,从上往下显示很明显,一个图片大概要3s左右,有什么优化的方式吗?
回复

使用道具 举报

1

主题

8

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2019-7-6
在线时间
15 小时
 楼主| 发表于 2019-7-19 08:59:48 | 显示全部楼层
正点原子 发表于 2019-7-19 02:24
重新发帖,搞个乱七八糟背景色

你好我还想请教个问题SPI读写w25qxx的函数获取数据大小可以改u32的吗
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-15 10:03

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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