8回答

0收藏

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

#开源分享 #开源分享 2787 人阅读 | 8 人回复 | 2014-08-06

我用的屏是分辨率为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位 [0-7] (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楼



























































分享到:
回复

使用道具 举报

回答|共 8 个

倒序浏览

沙发

Forest.Gump

发表于 2014-8-6 11:34:48 | 只看该作者

移植后源码

图片DMA电子相框20140806.rar

6.5 MB, 下载次数: 26

板凳

Forest.Gump

发表于 2014-8-6 11:48:58 | 只看该作者

演示视频传不上来了
地板

EEboard爱板网

发表于 2014-8-6 12:03:56 | 只看该作者

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

说不定

发表于 2014-8-6 14:15:59 | 只看该作者

点32个赞                                                   
6#

奋斗哥

发表于 2014-8-6 19:41:50 | 只看该作者

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

Forest.Gump

发表于 2014-8-7 09:12:00 | 只看该作者

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

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

franki

发表于 2014-8-14 10:53:53 | 只看该作者

   学习  啦              
9#

one棉花糖one

发表于 2014-12-7 19:02:27 | 只看该作者

我是来赚铜板的
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条