OpenEdv-开源电子网

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

SD卡读取文件问题

[复制链接]

13

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
142
金钱
142
注册时间
2018-3-29
在线时间
17 小时
发表于 2018-9-16 13:55:41 | 显示全部楼层 |阅读模式
1金钱
本人刚接触SD卡及FATFS,我想从SD卡中读取一个较大的文件,一部分一部分的读取到stm32中做处理,请问怎样才能完整的将文件读取出来,请大神指教,我读取的数据只有文件大小的一半,不知道哪里出的错。

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

13

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
142
金钱
142
注册时间
2018-3-29
在线时间
17 小时
 楼主| 发表于 2018-9-16 14:04:17 | 显示全部楼层
下面是我的代码,将文件路径传递给函数,然后每次取2K的数据,再从串口发送给ESP8266,但是在上位机上接收到的数据却只有70多k,原文件大小为153666bit,望大佬能给看一下


void pic_send(const u8 *filename)
{
        FIL* f_bmp;
        u8 *databuf;                    //Êý¾Ý¶ÁÈ¡´æ·ÅµØÖ·
         u16 readlen=2048;   //Ò»´Î´ÓSD¿¨¶ÁÈ¡µÄ×Ö½ÚÊý³¤¶È
//        char cmd[18],num[5];
        u16 t;
        u8 res;      //Ö´ÐÐ״̬
        
        f_bmp=(FIL *)pic_memalloc(sizeof(FIL));        //¿ª±ÙFIL×Ö½ÚµÄÄÚ´æÇøÓò
        databuf=(u8*)pic_memalloc(readlen);                //¿ª±Ùreadlen×Ö½ÚµÄÄÚ´æÇøÓò
        
        esp8266_send_cmd("AT+CIPSEND=0,6","",20);     //ÏȽ«Îļþ´óС·¢Ë͸ø¿Í»§¶Ë£¬Í¼Æ¬´óС¹Ì¶¨Îª153666B
        printf("%s","153666");
        
        res=f_open(f_bmp,(const TCHAR*)filename,FA_READ);//´ò¿ªÎļþ        
        if(res==0)//´ò¿ª³É¹¦.
        {

                while(1)
                {
                        res=f_read(f_bmp,databuf,readlen,(UINT *)&br);//¶Á³öreadlen¸ö×Ö½Ú
                        if(br!=readlen) readlen=br;   //×îºóÒ»ÅúÊý¾Ý        
                        esp8266_send_cmd("AT+CIPSEND=0,2048","",20);
                        for(t=0;t<readlen;t++)
                        {
                                USART_SendData(USART1, databuf[t]);//&#207;ò&#180;&#174;&#191;&#218;1·&#162;&#203;&#205;&#202;&#253;&#190;&#221;
                                while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//&#181;&#200;&#180;&#253;·&#162;&#203;&#205;&#189;á&#202;&#248;
                        }
                        if(res||br==0)break;                //&#182;&#193;&#200;&#161;&#179;&#246;&#180;í
                        
                }
                f_close(f_bmp);//&#185;&#216;±&#213;&#206;&#196;&#188;&#254;
               
        }
}
回复

使用道具 举报

13

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
142
金钱
142
注册时间
2018-3-29
在线时间
17 小时
 楼主| 发表于 2018-9-16 15:28:45 | 显示全部楼层
顶顶,有大佬在吗,帮忙看一下,
回复

使用道具 举报

70

主题

6763

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13129
金钱
13129
注册时间
2012-11-26
在线时间
3814 小时
发表于 2018-9-16 15:37:17 | 显示全部楼层
先验证下读取有没有问题,再查找发送有没有问题。

连哪个环节都没搞清,就瞎折腾
学无止境
回复

使用道具 举报

13

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
142
金钱
142
注册时间
2018-3-29
在线时间
17 小时
 楼主| 发表于 2018-9-16 17:34:24 | 显示全部楼层
jermy_z 发表于 2018-9-16 15:37
先验证下读取有没有问题,再查找发送有没有问题。

连哪个环节都没搞清,就瞎折腾

发送应该是没问题的,单独发送其他数据没有数据丢失,都正常,我想问的就是读取,这样读取是不是把文件所有数据都度出来了
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-20 05:56

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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