最近有个项目,需要移植fatfs文件系统和全速usb库到stm32f072cbu6中,stm32模拟U盘读取SD卡数据。设备上电后判断是否有USB插入,有USB插入进入U盘状态,没有USB插入进入记录状态,将数据通过fatfs写入text文本。现象如下:如果设备在记录状态下断电,然后插USB线读取SD卡中的txt文件,会发现首行是乱码。但是,如果此时将USB线拔出(同时设备也断电了,因为USB提供电源),在重新插到PC上,再次读取text文件的时候却发现没有乱码,一切正常了。请问这会是哪边的问题?是fatfs文件系统还是usb移植上的问题?谢谢大家的解答! |
可是为什么USB重新上电就又好了?而且乱码只是首行
评分
查看全部评分
谢谢你的建议!我今天用winhex看了,发现文件首行有乱码时都是前512个字节不对,512字节之后的是正常的,这个会不会是USB移植时的问题?因为只是重新插拔了下USB口,但第二次读到的文件就是对的。
而且前512个字节里面,会时不时出现其他文件的文件名,但又不是完整的,中间夹杂了0x00或者0x20,已经凌乱了。。。。
设备需要实时记录无人机飞行数据,记录频率很快,所以程序里没用f_close(因为f_close()用的时间比较长),用的f_sync()。
测试发现,设备断电后,如果将SD卡取下,用读卡器读文件都是正常的,反复测试下来也都是正常的。唯独断电后使用设备上的STM32F0模拟的U盘读取有问题
感觉可能是USB移植的问题,因为使用读卡器读就没问题,说明txt文件本身是正常的。