你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F0 fatfs u盘遇到奇怪现象

[复制链接]
黑色裂变 提问时间:2017-8-9 15:27 /
最近有个项目,需要移植fatfs文件系统和全速usb库到stm32f072cbu6中,stm32模拟U盘读取SD卡数据。设备上电后判断是否有USB插入,有USB插入进入U盘状态,没有USB插入进入记录状态,将数据通过fatfs写入text文本。现象如下:如果设备在记录状态下断电,然后插USB线读取SD卡中的txt文件,会发现首行是乱码。但是,如果此时将USB线拔出(同时设备也断电了,因为USB提供电源),在重新插到PC上,再次读取text文件的时候却发现没有乱码,一切正常了。请问这会是哪边的问题?是fatfs文件系统还是usb移植上的问题?谢谢大家的解答!

收藏 评论10 发布时间:2017-8-9 15:27

举报

10个回答
yklstudent-1794 回答时间:2017-8-10 09:53:38
写数据时断电,数据出错概率高
黑色裂变 回答时间:2017-8-10 10:55:53
yklstudent-1794 发表于 2017-8-10 09:53
写数据时断电,数据出错概率高

可是为什么USB重新上电就又好了?而且乱码只是首行
回答时间:2017-8-10 15:16:33
当产生乱码的时候,拔掉用USB读卡器直接PC读取,看看数据是否也是乱码。我理解的是,没有正确关闭文件,导致文件的头中数据保存失效。而当重新上电后,文件系统对文件进行了更改。楼主可以用二进制的方式读取出整个文件的数据,看一下头数据是否产生了错误。

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

黑色裂变 回答时间:2017-8-17 11:39:10
安 发表于 2017-8-10 15:16
当产生乱码的时候,拔掉用USB读卡器直接PC读取,看看数据是否也是乱码。我理解的是,没有正确关闭文件,导 ...

谢谢你的建议!我今天用winhex看了,发现文件首行有乱码时都是前512个字节不对,512字节之后的是正常的,这个会不会是USB移植时的问题?因为只是重新插拔了下USB口,但第二次读到的文件就是对的。
黑色裂变 回答时间:2017-8-17 11:45:12
安 发表于 2017-8-10 15:16
当产生乱码的时候,拔掉用USB读卡器直接PC读取,看看数据是否也是乱码。我理解的是,没有正确关闭文件,导 ...

而且前512个字节里面,会时不时出现其他文件的文件名,但又不是完整的,中间夹杂了0x00或者0x20,已经凌乱了。。。。
回答时间:2017-8-17 16:31:59
这个应该是非法断电导致的文件错误。正常是先关闭,再进插拔。
黑色裂变 回答时间:2017-8-18 16:42:59
安 发表于 2017-8-17 16:31
这个应该是非法断电导致的文件错误。正常是先关闭,再进插拔。

设备需要实时记录无人机飞行数据,记录频率很快,所以程序里没用f_close(因为f_close()用的时间比较长),用的f_sync()。
测试发现,设备断电后,如果将SD卡取下,用读卡器读文件都是正常的,反复测试下来也都是正常的。唯独断电后使用设备上的STM32F0模拟的U盘读取有问题
回答时间:2017-8-18 16:46:50
从现象来分析,那么是程序的问题了。可以排查一下文件系统操作的过程。
黑色裂变 回答时间:2017-8-18 16:51:14
安 发表于 2017-8-18 16:46
从现象来分析,那么是程序的问题了。可以排查一下文件系统操作的过程。

感觉可能是USB移植的问题,因为使用读卡器读就没问题,说明txt文件本身是正常的。
12下一页
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版