OpenEdv-开源电子网

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

FATFS使用f_open打开文件返回6号错误FR_INVALID_NAME

[复制链接]

1

主题

5

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2017-9-27
在线时间
11 小时
发表于 2018-1-20 19:06:20 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 yiba13 于 2018-1-24 10:46 编辑

用的正点原子VS1053语音模块,移植例程的程序。测试了FATFS的对tf卡的读取TF卡里面的文件名是正常的。
对于例程中的FATFS的部分并没有做什么修改,以下是ffconf.h里面的一些宏定义。
#define _CODE_PAGE        936        //采用中文GBK编码 #define        _USE_LFN        3 #define        _MAX_LFN        255
问题:
当tf卡里面mp3文件名为数字或者几个字母命名如:0.mp3或者yh.mp3的时候程序可以正常运行,音乐可以播放;
但当tf卡里面mp3文件名为中文如:测试.mp3的时候f_open返回6号错误FR_INVALID_NAME。
下面是代码:
u8 mp3_play_song(u8 *pname)
{         
         FIL* fmp3;
        u16 br;
        u8 res,rval;         
        u8 *databuf;                              
        u16 i=0;
        u8 key;           
        rval=0;            
        fmp3=(FIL*)mymalloc(SRAMIN,sizeof(FIL));//申请内存
        databuf=(u8*)mymalloc(SRAMIN,4096);                //开辟4096字节的内存区域
        if(databuf==NULL||fmp3==NULL)rval=0XFF ;//内存申请失败.
        if(rval==0)
        {         
                  VS_Restart_Play();                                          //重启播放
                VS_Set_All();                                                //设置音量等信息                          
                VS_Reset_DecodeTime();                                        //复位解码时间           
                res=f_typetell(pname);                                          //得到文件后缀                                                                                             
                if(res==0x4c)//如果是flac,加载patch
                {        
                        VS_Load_Patch((u16*)vs1053b_patch,VS1053B_PATCHLEN);
                }                                                                                                                        
                res=f_open(fmp3,(const TCHAR*)pname,FA_READ);//打开文件失败,返回6号错误FR_INVALID_NAME
                printf("pname=%s\n",pname);
                printf("res=%u\n",res);//结果为6
                 if(res==0)//打开成功.
                {
                        VS_SPI_SpeedHigh();        //高速                                                   
                        while(rval==0)
                        {
                                res=f_read(fmp3,databuf,4096,(UINT*)&br);//读出4096个字节  
                                i=0;
                                        do//主播放循环
                ..............................................





最佳答案

查看完整内容[请看2#楼]

明显你的文件名都不对啊,应该是测试.mp3,不是测试.mp31
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2018-1-20 19:06:21 | 显示全部楼层
明显你的文件名都不对啊,应该是测试.mp3,不是测试.mp31
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2017-9-27
在线时间
11 小时
 楼主| 发表于 2018-1-21 11:46:48 | 显示全部楼层
本帖最后由 yiba13 于 2018-1-24 11:05 编辑

帖子上面的两张图打印的文件名mp3后面的11和18是打印当前曲目的索引及总曲目数的信息,最后的pname的路径也是拼接正确的,下面我再补两张图,显示的pname的路径是正确的

无法播放测试.mp3

无法播放测试.mp3

正确播放的情况

正确播放的情况
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2017-9-27
在线时间
11 小时
 楼主| 发表于 2018-1-24 10:14:52 | 显示全部楼层
本帖最后由 yiba13 于 2018-1-24 11:04 编辑

问题解决了,是FATFS的问题。
正确播放.png
回复

使用道具 举报

55

主题

474

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2374
金钱
2374
注册时间
2017-8-7
在线时间
207 小时
发表于 2018-3-19 16:07:54 | 显示全部楼层
楼主用的是sd卡吗
qq1950361006,互帮互助,共同进步。
回复

使用道具 举报

0

主题

4

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2018-5-7
在线时间
1 小时
发表于 2018-5-7 17:10:42 | 显示全部楼层
您好,我遇到了同样的问题,请问怎么解决的呢
回复

使用道具 举报

0

主题

4

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2018-5-7
在线时间
1 小时
发表于 2018-5-7 17:14:50 | 显示全部楼层
遇到了同样的问题想知道怎么解决的
回复

使用道具 举报

0

主题

4

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2018-5-7
在线时间
1 小时
发表于 2018-5-7 17:18:51 | 显示全部楼层
您好,想知道怎么解决
回复

使用道具 举报

2

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2017-1-25
在线时间
11 小时
发表于 2018-5-8 17:38:27 | 显示全部楼层
希望楼主不吝赐教,能够分享一下解决方法
如入火聚,
                得清凉门。
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2019-8-31
在线时间
4 小时
发表于 2020-4-6 17:18:35 | 显示全部楼层
你好,我也遇到相同问题,请问怎么解决的呢。
回复

使用道具 举报

3

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2019-12-17
在线时间
20 小时
发表于 2020-5-7 00:19:48 来自手机 | 显示全部楼层
你好,能否上线解答一下是怎么解决的,我也是同样的问题
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2020-11-26
在线时间
5 小时
发表于 2020-12-8 10:51:08 | 显示全部楼层
我也遇到了相同的问题,请问是怎么解决的呀?
回复

使用道具 举报

5

主题

133

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1775
金钱
1775
注册时间
2015-3-13
在线时间
270 小时
发表于 2021-4-27 15:18:28 | 显示全部楼层
就没有一个人告诉大家怎么解决问题
回复

使用道具 举报

0

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
79
金钱
79
注册时间
2019-5-22
在线时间
24 小时
发表于 2021-11-28 21:29:32 | 显示全部楼层
f_open返回值9怎么解决的
回复

使用道具 举报

1

主题

3

帖子

0

精华

初级会员

Rank: 2

积分
153
金钱
153
注册时间
2023-11-27
在线时间
12 小时
发表于 2023-11-28 06:20:39 来自手机 | 显示全部楼层
f_open返回值16怎么解决???
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-23 16:42

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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