11回答

0收藏

亮点STM32开源板全屏图片提速例程/RA8875/SPIFLASH/DMA

#开源分享 #开源分享 15090 人阅读 | 11 人回复 | 2013-02-20

http://www.tudou.com/programs/view/IlrHX_p950Q/
视频地址 http://www.tudou.com/programs/view/IlrHX_p950Q/

过节之前这个没调出来
今天继续搞,下午才搞出来,中午去吃饭的时候带到了线,板子从桌上摔到瓷砖上,液晶朝下
液晶不能用了,扔了,换了一块,也许这是能调出来的先兆哈

确实搞定了,速度比不用DMA方式快很多
步骤:1.将图片处理后保存在TF卡上(macro sd)
2.将TF卡上的图片通过编程,复制到SPI FLASH
3.设置RA8875一堆寄存器,透过DMA方式将SPIFALSH上数据传到显存
4.继续显示下一张图片,速度太快,两张图片间要延时

部分代码供参考:



      

#include "bp_config.h"
#include "stdio.h"
INT8U backlight; //背光亮度
//#ifdef PRINTF_SUPPORT
//为解决PRINTF重定向的问题
int SendChar (int ch)  {  
  while (!(USART1->SR & USART_FLAG_TXE)); // USART1 可换成你程序中通信的串口
  USART1->DR = (ch & 0x1FF);
  return (ch);
}
int GetKey (void)  {
  while (!(USART1->SR & USART_FLAG_RXNE));
  return ((int)(USART1->DR & 0x1FF));
}
//#endif
INT8U KeyPressed;
u8 TEXT_BUF[]={"BP STM32 develop board SPI FLASH OK!"};

#define SIZE sizeof(TEXT_BUF)

u8 tff_state;
FATFS tff_fs;
FRESULT tff_res;
UINT tff_br;

int main(void)
{               
INT16U temp,count;
u8 datatemp[SIZE];
u8 * p1,data,step;
u32 id,i,j,line=0;

temp=0;  
clock_config();   //启动时钟
led_init();       //led初始化
key_init();       //按键初始化
    usart_init();
tft_init();       //4.3寸触摸屏TFT液晶初始化
iic_init();
spiflash_init();  //初始化SPIFLASH所用的SPI
exti_config();    //中断配置
if (TFT_SUPPORT) LcdClear(WHITE);
while(at24c02_check()!=0) //校验IIC
{
  LCD_ShowString(10,line,"iic error!");
  beep_run(100);
  delay_ms(1500);
  lineadd;
}
while(tfcard_init()!=0)  //校验TF卡
{   
  if (TFT_SUPPORT)
   LCD_ShowString(10,line,"TFCARD NOT FOUND!");
  lineadd;
  beep_run(100);
  delay_ms(1500);
}
tff_res = f_mount(0, &tff_fs); //校验文件系统
if(tff_res!=FR_OK)
    {
  LcdPrintf(10,line,RED,WHITE,"f_mount FAILED!ERR=%d",tff_res);
   beep_run(500);
  while(1);
    }
if (TFT_SUPPORT) LcdClear(WHITE);
if (TFT_SUPPORT) LCD_ShowString(10,10,"BMP TEST");
while((id=spiflash_readid())!=SPIFLASH_ID)//校验SPIFLASH W25Q64
{   
   if(ISDEBUG) printf("ID:%x",id);
   if (TFT_SUPPORT) LcdPrintf(10,30+line,RED,WHITE,"Check Failed return ID is:%d",i);
   line+=20;
   if(ISDEBUG) printf("Check Failed return ID is:%d",i);
   delay_ms(500);
}
delay_ms(1500);  
LcdClear(WHITE);   
LcdPrintf(10,10,RED,WHITE,"W25Q64 Check OK!id=%x",id);
temp=SIZE;
//写入图片
LcdClear(WHITE);
data=0;
line=10;
GPIO_SetBits(spi2_selectgpio,spi2_selectpin );
FontSize(16);
LcdPrintStr("◆开始写入文件tu2.bmp到FLASH",10,line,RED,WHITE,1);
lineadd;
//bmp_disp("bmp/tu2.bmp",0,0);
    // bmp_tf2flash("bmp/tu2.bmp",bmp_startaddress);

//bmp_tf2flash("bmp/bplogo.bmp",bmp_logoaddress);
   

GPIO_SetBits(spi2_selectgpio,spi2_selectpin); //SPIFLASH由RA8875控制
LcdPrintStr("◆文件已写入FLASH",10,line,RED,WHITE,1);
lineadd;
bmp_dispflash(bmp_startaddress,0,0);
  delay_ms(1000);
while(1)
{
  LcdClear(WHITE);
bmp_dispflash(bmp_logoaddress,10,50);
FontSize(32); //选择 设置2EH
LcdPrintStr("◆亮点STM32",170,60,RED,WHITE,1);
LcdPrintStr("◆图片显示程序2",170,100,RED,WHITE,1);
LcdPrintStr("◆快速图片显示范例",170,140,RED,WHITE,1);
LcdPrintStr("◆brightpoint.taobao.com",10,220,RED,WHITE,1);
lineadd;
delay_ms(5000);
bmp_dispflash(bmp_address1,0,0);
delay_ms(500);
bmp_dispflash(bmp_address2,0,0);
delay_ms(500);
bmp_dispflash(bmp_address3,0,0);
delay_ms(500);
bmp_dispflash(bmp_address4,0,0);
delay_ms(500);
bmp_dispflash(bmp_address5,0,0);
  delay_ms(500);
bmp_dispflash(bmp_address6,0,0);
  delay_ms(500);
bmp_dispflash(bmp_address7,0,0);
  delay_ms(500);
bmp_dispflash(gbmp_address1,0,0);
  delay_ms(500);
//bmp_dispflash(gbmp_address2,0,0);
// delay_ms(500);
bmp_dispflash(gbmp_address3,0,0);
  delay_ms(500);
bmp_dispflash(gbmp_address4,0,0);
  delay_ms(500);
bmp_dispflash(gbmp_address5,0,0);
  delay_ms(500);
bmp_dispflash(gbmp_address6,0,0);
  delay_ms(500);
bmp_dispflash(gbmp_address7,0,0);
delay_ms(500);
   LcdClear(WHITE);
}
嵌入式,ucos,FPGA系统书籍作者
分享到:
回复

使用道具 举报

回答|共 11 个

倒序浏览

沙发

zhangb7309

发表于 2013-2-20 21:21:10 | 只看该作者

沙发         
板凳

zhangb7309

发表于 2013-2-20 21:22:03 | 只看该作者

wyzamazon 发表于 2013-2-20 21:21
果断帮顶啊

你速度快,沙发被你抢了
地板

nemon

发表于 2013-2-21 08:43:32 | 只看该作者

楼上不带这样的,沙发没抢到,把地板也占了
5#

济南迷糊_3001427

发表于 2013-2-21 18:06:36 | 只看该作者

不错啊!过节没动静,年后给了个好东东。
6#

laoliang-67665

发表于 2013-2-21 18:08:25 | 只看该作者

济南迷糊 发表于 2013-2-21 18:06
不错啊!过节没动静,年后给了个好东东。

过节玩了10天,等积攒一点把新的代码再发给你!
嵌入式,ucos,FPGA系统书籍作者
7#

济南迷糊_3001427

发表于 2013-2-22 18:08:32 | 只看该作者

亮点 发表于 2013-2-21 18:08
过节玩了10天,等积攒一点把新的代码再发给你!

好的!谢谢!
8#

suyong_yq

发表于 2013-2-24 16:34:15 | 只看该作者

亮哥,用过RA8875的SPI通信么?我用SPI跟RA8875通信时,显示当个像素点的颜色总是不对,但是用BTE图形引擎配颜色就是对了。感觉是用SPI通信传输16位RGB颜色信息时有问题,但一直没搞定,能不能点提示?
9#

suyong_yq

发表于 2013-2-24 21:35:47 | 只看该作者

OK,搞定了。要设置一下0x10寄存器为8位总线通信模式,我从8080总线模式切换到SPI模式时,忘记修改这个东东了。
10#

xqy281

发表于 2013-3-1 16:56:19 | 只看该作者

亮哥的串行flash的时钟是多少啊?我把时钟调到5mhz以上图片就显示不出来了!
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

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