Forest.Gump 发表于 2014-8-6 11:26:44

图片DMA电子相框例程移植:4.3寸屏改成8.4寸屏(640x480)

我用的屏是分辨率为640x480的8.4寸TTL接口工业屏。所以程序作以下修改。
1,跟踪 tft_init(); -> BP_Init_RA8875();
将void BP_Init_RA8875(void)函数内的
/*4:水平设置 */
WriteCommand(0x14);                  
WriteData(0x3B);      //水平显示宽度(像素) = (HDWR + 1)*8 = 480      
改成
WriteCommand(0x14);
WriteData(0x4F); //640

/*5:垂直设置*/                                    
WriteCommand(0x19);//垂直显示高度低8位 (VDHR0)                     
WriteData(0x0f);
改成      
WriteCommand(0x19);
WriteData(0xdf);//480      

/*6.活动窗口active window设置*/
//水平方向设置
WriteCommand(0x34); //水平结束点低位 (HEAW0)
WriteData(0xDF);
WriteCommand(0x35); //水平结束点高位 (HEAW1)         
WriteData(0x01);
改成
WriteCommand(0x34); //水平结束点低位 (HEAW0)
WriteData(0x7F);//0x027F=639
WriteCommand(0x35); //水平结束点高位 (HEAW1)         
WriteData(0x02); //0x027F=639
//垂直方向设置                                       
WriteCommand(0x36); //垂直结束点低位 (VEAW0)
WriteData(0x0F);
WriteCommand(0x37); //垂直结束点高位 (VEAW1)         
WriteData(0x01);
改成
WriteCommand(0x36); //垂直结束点低位 (VEAW0)
WriteData(0xdF);//0x01dF=479
WriteCommand(0x37); //垂直结束点高位 (VEAW1)         
WriteData(0x01); //0x01dF=479

水平设置和垂直设置方面只要设置以上寄存器便可,其他寄存器可以不修改。

2,跟踪 LcdClear(WHITE);
将void LcdClear(u16 color)函数内的
Geometric_Coordinate(0,479,0,271); // 设定矩形坐标
改成
Geometric_Coordinate(0,639,0,479); // 设定矩形坐标

3,SROM_CLK_DIV(3);
改成SROM_CLK_DIV(0);
将SPIFLASH时钟设置为系统时钟,加快DMA的传输速率。

4,添加语句
bmp_tf2flash("bmp/b01.bmp",bmp_address1);
bmp_tf2flash("bmp/b02.bmp",bmp_address4);
bmp_tf2flash("bmp/b565.bmp",bmp_address12);
说明:
(1)bmp_address12是我添加的一个宏定义
追踪可以查看到:#define bmp_address12 0x700000         //SPIFLASH总空间为8M,访问地址空间为0x0~0x800000
b01.bmp,b02.bmp,b565.bmp是我自己用位图转换程序做的一个16位色的640x480分辨率的bmp格式的图片。
一幅图片所占用的存储空间为640*480*2字节=0x96000字节,所以所占用的地址空间为0x96000,再加上图片的文件头1K空间,总共为0x96400所以宏定义图片在SPIFLASH存储地址时要注意。比如 bmp_address4 - bmp_address1 > = 0x96400
(2)追踪bmp_tf2flash("bmp/b01.bmp",bmp_address1); -> u32 bmp_tf2flash(char * bmpfile,u32 startaddress)
将u32 bmp_tf2flash(char * bmpfile,u32 startaddress)内的spiflash_writewithoutcheck((u8 *)(&fbmpheader),addr,sizeof(fbmpheader));//写文件头
改成
spiflash_write((u8 *)(&fbmpheader),addr,sizeof(fbmpheader));//写文件头

spiflash_writewithoutcheck(mem,addr,G_READCNT);         //写入FLASH
改成
spiflash_write(mem,addr,G_READCNT);         //写入FLASH               

spiflash_writewithoutcheck(mem,addr,lastbytes);          //写入剩余字节
改成
spiflash_write(mem,addr,lastbytes);          //写入剩余字节                        

spiflash_write()函数是先擦除再写;spiflash_writewithoutcheck()是直接写,没有擦除操作。

5,主循环语句改为
bmp_dispflash(bmp_address1,0,0);
delay_ms(500);
delay_ms(500);
delay_ms(500);
delay_ms(500);
bmp_dispflash(bmp_address4,0,0);
delay_ms(500);
delay_ms(500);
delay_ms(500);
delay_ms(500);
bmp_dispflash(bmp_address12,0,0);
delay_ms(500);
delay_ms(500);
delay_ms(500);
delay_ms(500);

至此,移植结束。源码包见1楼
http://v.youku.com/v_show/id_XNzUyNjkyOTAw.html


























































one棉花糖one 发表于 2014-12-7 19:02:27

我是来赚铜板的:lol

franki 发表于 2014-8-14 10:53:53

   学习啦            

Forest.Gump 发表于 2014-8-7 09:12:00

奋斗哥 发表于 2014-8-6 19:41 static/image/common/back.gif
顶楼主,视频可以放到优酷,把链接贴过来哦~

呵呵,我的360云盘分享。http://yunpan.cn/QagVk2qWXeatU访问密码 791c

奋斗哥 发表于 2014-8-6 19:41:50

顶楼主,视频可以放到优酷,把链接贴过来哦~

说不定 发表于 2014-8-6 14:15:59

点32个赞                                                   

EEboard爱板网 发表于 2014-8-6 12:03:56

可以把文稿发到service@eeboard.com,我们来帮你编辑

Forest.Gump 发表于 2014-8-6 11:48:58

:'(演示视频传不上来了

Forest.Gump 发表于 2014-8-6 11:34:48

移植后源码
页: [1]
查看完整版本: 图片DMA电子相框例程移植:4.3寸屏改成8.4寸屏(640x480)

Baidu
map