OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5575|回复: 9

关于从SD卡读bmp图片的问题,郁闷!

[复制链接]

9

主题

66

帖子

0

精华

初级会员

Rank: 2

积分
122
金钱
122
注册时间
2013-3-16
在线时间
0 小时
发表于 2013-4-9 19:40:55 | 显示全部楼层 |阅读模式
请问原子哥,我用的硬件SPI方式从SD卡读取图片,刷屏速度很慢呀,不晓得大家都是什么速度,我刷一张图片大概3--4秒,真蛋疼那!~
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

9

主题

66

帖子

0

精华

初级会员

Rank: 2

积分
122
金钱
122
注册时间
2013-3-16
在线时间
0 小时
 楼主| 发表于 2013-4-9 19:41:06 | 显示全部楼层
回复 支持 反对

使用道具 举报

54

主题

1008

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2386
金钱
2386
注册时间
2012-11-22
在线时间
403 小时
发表于 2013-4-9 22:18:13 | 显示全部楼层
很正常呀,sdio快。
态度决定一切
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-4-9 23:15:01 | 显示全部楼层
回复【楼主位】wsshopping:
---------------------------------
没办法,就这么慢。
可以考虑下使用SDIO,或者存放.bin文件,直接刷图,以提高速度。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

9

主题

66

帖子

0

精华

初级会员

Rank: 2

积分
122
金钱
122
注册时间
2013-3-16
在线时间
0 小时
 楼主| 发表于 2013-4-10 15:18:57 | 显示全部楼层
回复【3楼】冰封嗜魔:
---------------------------------
好的 ,我试试
回复 支持 反对

使用道具 举报

9

主题

66

帖子

0

精华

初级会员

Rank: 2

积分
122
金钱
122
注册时间
2013-3-16
在线时间
0 小时
 楼主| 发表于 2013-4-10 19:32:35 | 显示全部楼层
回复【3楼】冰封嗜魔:
---------------------------------
原子哥,我尝试着将bmp文件转化为bin文件,然后直接读取bin文件里面的内容,但是发现会出现问题,之前的几个块读出来的数据都没有问题,但是后面出现了花屏,我调试跟踪之后发现在读第四个块的时候就会开始出现了数据不对的情况。前面的4个块读出来的数据是正确的。不晓得是为什么,烦请把忙看看,不知道原子哥有没有这样的代码
这是我写的读bin文件的代码
void Lcd_show_bin(unsigned short int x, unsigned short int y,unsigned char *pic_name)
{
    int i, j;
int x1 = 0 ,y1 = 0;
    unsigned char tmp_name[20];
WORD data;
BYTE * pdata = pColorData;
    unsigned int read_num;
    sprintf((char*)tmp_name,"0:%s",pic_name);
    f_mount(0, &bmpfs[0]);
    
    bmpres = f_open( &bmpfsrc , (char *)tmp_name, FA_OPEN_EXISTING | FA_READ);
    if(bmpres == FR_OK)
    {
        printf("Open file success\r\n");
    }    
    else
    {
        printf("file open fail!\r\n");
        return;
    }    

for(j=0;j<300;j++)    //300表示一幅图片含有300x512字节的信息
    {
f_read(&bmpfsrc,pdata,512,&read_num);
for(i=0;i<256;i++)                    //然后写到液晶屏,可以显示256个像素,每个像素16位即2个字节
{  
data = LD_WORD(pdata);
LCD_DispOnePixel(x1,y1,data); 
pdata = pdata + 2;
x1++;
if(x1==240)                         //检测是否写到屏的边缘 240x320
{
y1++;
x1=0;
if(y1==320)
y1=0;
}
      }
f_lseek (&bmpfsrc,(512*(j+1)));
    } 
   f_close(&bmpfsrc);   
}
回复 支持 反对

使用道具 举报

25

主题

683

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1351
金钱
1351
注册时间
2012-4-25
在线时间
195 小时
发表于 2013-4-11 10:19:49 | 显示全部楼层
程序可以优化下,我以前16位的I0也只要1S多点时间
1-1
回复 支持 反对

使用道具 举报

9

主题

66

帖子

0

精华

初级会员

Rank: 2

积分
122
金钱
122
注册时间
2013-3-16
在线时间
0 小时
 楼主| 发表于 2013-4-12 17:07:52 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
原子哥,我找出是什么原因了,我设置的数组访问越界了,但是发现读bin文件更加慢那,估计这要15秒了。。。。还是采用fsmc吧。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-4-12 21:37:55 | 显示全部楼层
回复【8楼】wsshopping:
---------------------------------
那再好好检查下代码
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

9

主题

66

帖子

0

精华

初级会员

Rank: 2

积分
122
金钱
122
注册时间
2013-3-16
在线时间
0 小时
 楼主| 发表于 2013-4-12 21:52:30 | 显示全部楼层
回复【9楼】正点原子:
---------------------------------
唉,还是自己不仔细,我之前用printf函数来调试,忘记把他注释掉了,所以很多时间都在执行打印函数,注释掉就好了很多,相对比bmp快了五分之一吧
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-21 16:17

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表