OpenEdv-开源电子网

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

打开U盘文件,返回错误FR_NOT_READY

[复制链接]

52

主题

147

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
316
金钱
316
注册时间
2019-4-1
在线时间
118 小时
发表于 2019-5-27 14:07:42 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 jshzp 于 2019-5-27 17:08 编辑

阿波罗开发板,F429芯片,跑原子的U盘例程,一切正常。尝试用下列代码打开U盘中的文件aaa.bin

[mw_shl_code=c,true]FIL *fsrc;
u8 res;
res=f_mount(fs[3],"3:",1);
if(res==0)
     res=f_open(my_file,(const TCHAR*)"3:/aaa.bin",FA_READ);//打开文件[/mw_shl_code]
调试发现,运行函数f_open()后返回错误0x03,即FR_NOT_READY。进一步调试发现:是f_open()里面调用get_ldnumber()时返回的错误。应该怎么修改代码呢?谢谢

最佳答案

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

问题解决了,把ffconf.h里面的_MAX_LFN从原来的255改成100,f_open()就返回0了。 但是这是为什么呢?求高手们给一个合理的解释,谢谢!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

52

主题

147

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
316
金钱
316
注册时间
2019-4-1
在线时间
118 小时
 楼主| 发表于 2019-5-27 14:07:43 | 显示全部楼层
问题解决了,把ffconf.h里面的_MAX_LFN从原来的255改成100,f_open()就返回0了。
但是这是为什么呢?求高手们给一个合理的解释,谢谢!
回复

使用道具 举报

7

主题

33

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2019-5-8
在线时间
24 小时
发表于 2019-5-27 14:36:26 | 显示全部楼层
我的是407的开发板,U盘配置路径为“2:xxx.bin”
1.你可以试试反复打开是不是都返回FR_NOT_READY,挂载U盘后稍微等待一下
2.确定你的aaa.bin文件就在U盘目录下吗?
回复

使用道具 举报

52

主题

147

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
316
金钱
316
注册时间
2019-4-1
在线时间
118 小时
 楼主| 发表于 2019-5-27 14:52:31 | 显示全部楼层
本帖最后由 jshzp 于 2019-5-27 17:09 编辑

感谢morgen的回复,
1、我在原子的例程上修改的,它的挂载是f_mont(fs[3],"3:",1),所以我用了“3:/aaa.bin”;
2、我在f_mount之后加了几秒钟延时,问题依旧;
3、U盘应该没问题,因为跑例程,串口打印可以看到aaa.bin文件。
回复

使用道具 举报

52

主题

147

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
316
金钱
316
注册时间
2019-4-1
在线时间
118 小时
 楼主| 发表于 2019-5-27 15:42:35 | 显示全部楼层
Morgen 发表于 2019-5-27 14:36
我的是407的开发板,U盘配置路径为“2:xxx.bin”
1.你可以试试反复打开是不是都返回FR_NOT_READY,挂载U ...

有时候会返回0x02,即:FR_INT_ERR
回复

使用道具 举报

7

主题

33

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2019-5-8
在线时间
24 小时
发表于 2019-5-27 15:50:16 | 显示全部楼层
jshzp 发表于 2019-5-27 15:42
有时候会返回0x02,即:FR_INT_ERR

跟我一样,不妨加个 FA_OPEN_EXISTING 试试,除此之外也不清楚啥问题了,
f_open(&File, "2:TEST.BIN",FA_READ | FA_OPEN_EXISTING);

你的U盘可以挂载,文件读不出来,你看看U盘属性是不是FAT32的,你的文件系统驱动用的应该是FAT32的
回复

使用道具 举报

52

主题

147

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
316
金钱
316
注册时间
2019-4-1
在线时间
118 小时
 楼主| 发表于 2019-5-27 16:24:09 | 显示全部楼层
本帖最后由 jshzp 于 2019-5-27 16:35 编辑
Morgen 发表于 2019-5-27 15:50
跟我一样,不妨加个 FA_OPEN_EXISTING 试试,除此之外也不清楚啥问题了,
f_open(&File, "2:TEST.BIN",F ...

U盘属性在电脑上确认过,是FAT32
回复

使用道具 举报

52

主题

147

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
316
金钱
316
注册时间
2019-4-1
在线时间
118 小时
 楼主| 发表于 2019-5-27 16:33:01 | 显示全部楼层
我是在U_HOST例程的USH_User_App()函数里面,while(HCD_IsDeviceConnected(&USB_OTG_Core))这句话判断u盘连接成功后,调用f_open的。这时候,U盘应该已经加载好了,文件系统也应该就绪了,会不会漏掉了哪个步骤呢?
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-12 20:57

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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