过节之前这个没调出来
今天继续搞,下午才搞出来,中午去吃饭的时候带到了线,板子从桌上摔到瓷砖上,液晶朝下
液晶不能用了,扔了,换了一块,也许这是能调出来的先兆哈
确实搞定了,速度比不用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);
}