新手上路
- 积分
- 38
- 金钱
- 38
- 注册时间
- 2019-7-6
- 在线时间
- 15 小时
|
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);
}
//Ôúòo¾§éÏ»-í¼£¨½öÖ§3Ö£o′ó×óμ½óò£¬′óéÏμ½Ï or ′óéÏμ½Ï£¬′ó×óμ½óò μÄé¨Ã跽꽣¡£©
//xsta,ysta,width,height:»-í¼Çøóò
//scan:¼ûimage2lcd V2.9μÄËμÃ÷.
//*p:í¼Ïñêy¾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)//ˮƽé¨Ãè
{
LCD_Scan_Dir(L2R_U2D);//′ó×óμ½óò,′óéÏμ½ÏÂ
LCD_Set_Window(xsta,ysta,width,height);
LCD_SetCursor(xsta,ysta);//éèÖÃ1a±êλÖÃ
}else //′1Ö±é¨Ãè
{
LCD_Scan_Dir(U2D_L2R);//′óéÏμ½ÏÂ,′ó×óμ½óò
LCD_Set_Window(xsta,ysta,width,height);
LCD_SetCursor(xsta,ysta);//éèÖÃ1a±êλÖÃ
}
LCD_WriteRAM_Prepare(); //¿aê¼D′èëGRAM
len=width*height; //D′èëμÄêy¾Y3¤¶è
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ÄüÆ÷¼t
SPI1_ReadWriteByte(W25X_ReadData); //·¢Ëí¶áè¡Ãüáî
SPI1_ReadWriteByte((u8)((ReadAddr)>>16)); //·¢Ëí24bitμØÖ·
SPI1_ReadWriteByte((u8)((ReadAddr)>>8));
SPI1_ReadWriteByte((u8)ReadAddr);
temp=SPI1_ReadWriteByte(0XFF); //Ñ-»·¶áêy
W25QXX_CS=1;
return temp ;
}
|
|