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

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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版