硬汉嵌入式论坛

 找回密码
 立即注册
查看: 920|回复: 4
收起左侧

[SD/SDIO] Fatfs 创建和打开文件夹不正常

[复制链接]

58

主题

658

回帖

837

积分

金牌会员

积分
837
发表于 2024-6-19 15:38:03 | 显示全部楼层 |阅读模式
本帖最后由 ou513 于 2024-6-19 15:44 编辑

文件系统用的是Fatfs,用U盘保存数据,小概率性偶发性的问题,Fatfs 创建和打开文件夹不正常。
正常创建文件:TP300_THA1234567801_20240619  (产品_序列号_日期),然后在文件夹下保存数据。

不正常创建:TP300_THA1234567801,  没有日期但是RTC时钟芯片是正常,因为有时间显示。奇怪的就是,在U盘里只有 TP300_THA1234567801 这个文件夹,
f_mkdir(0:/TP300_THA1234567801_20240619)   返回FR_EXIST
f_opendir(&sDirInf, 0:/TP300_THA1234567801_20240619) 返回FR_OK

为什么以上两个函数返回正常呢?

但是创建文件的时候就出错了,f_open(&sfile, 0:/TP300_THA1234567801_20240619, FA_CREATE_ALWAYS | FA_WRITE) 返回 FR_DENIED.
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115490
QQ
发表于 2024-6-20 08:25:58 | 显示全部楼层
估计是这个文件已经损坏了,但是有信息残留,f_mkdir直接访问TP300_THA1234567801是不是正常
回复

使用道具 举报

58

主题

658

回帖

837

积分

金牌会员

积分
837
 楼主| 发表于 2024-6-20 09:22:04 | 显示全部楼层
发现问题了,序列号是从eeporm里读的,同时eeporm会保存相关操作设置。拷贝eeporm内的序列号没有限制长度,有时候序列号最后位不是“\0”而是一个“.”,这个时候就会把“.”也拷贝来当做文件夹命名,而Fatfs是不允许“.”来命名的路径的。至于为什么f_mkdir,f_opendir 两个函数返回是正常的就不理解原因了。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115490
QQ
发表于 2024-6-21 08:53:02 | 显示全部楼层
ou513 发表于 2024-6-20 09:22
发现问题了,序列号是从eeporm里读的,同时eeporm会保存相关操作设置。拷贝eeporm内的序列号没有限制长度, ...

谢谢告知最终原因。
回复

使用道具 举报

4

主题

9

回帖

21

积分

新手上路

积分
21
发表于 2024-6-23 18:37:11 来自手机 | 显示全部楼层
我建议内部可以使用一个flashdb.不需要eeprom
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-4-29 06:06 , Processed in 0.322751 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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