最近有个项目,需要移植fatfs文件系统和全速usb库到stm32f072cbu6中,stm32模拟U盘读取SD卡数据。设备上电后判断是否有USB插入,有USB插入进入U盘状态,没有USB插入进入记录状态,将数据通过fatfs写入text文本。现象如下:如果设备在记录状态下断电,然后插USB线读取SD卡中的txt文件,会发现首行是乱码。但是,如果此时将USB线拔出(同时设备也断电了,因为USB提供电源),在重新插到PC上,再次读取text文件的时候却发现没有乱码,一切正常了。请问这会是哪边的问题?是fatfs文件系统还是usb移植上的问题?谢谢大家的解答! |
【STM32F0开发日志/评测/笔记】+互补PWM波的产生
STM32F030 PB14和PB15无法输出PWM求助
【STM32F030探索套件】序列之五 外部中断
【STM32F0开发日志---二】+ucosii.2.92移植在STM32F030
上传个STM32F0+5110+内部温度传感器的菜鸟实例
【STM32F030探索套件使用问题】STM32F030 SPI方式驱动ST7565LCD失败
求一份STM32F051 I2C驱动LCD 12864的例程
STM32F0 M0 向结构体赋值进入HardFault异常
STM32F0 ADC-DMA方式采集2路数据时出现问题
STM32F030C8T6,TIM16定时慢很多问题?
可是为什么USB重新上电就又好了?而且乱码只是首行
评分
查看全部评分
谢谢你的建议!我今天用winhex看了,发现文件首行有乱码时都是前512个字节不对,512字节之后的是正常的,这个会不会是USB移植时的问题?因为只是重新插拔了下USB口,但第二次读到的文件就是对的。
而且前512个字节里面,会时不时出现其他文件的文件名,但又不是完整的,中间夹杂了0x00或者0x20,已经凌乱了。。。。
设备需要实时记录无人机飞行数据,记录频率很快,所以程序里没用f_close(因为f_close()用的时间比较长),用的f_sync()。
测试发现,设备断电后,如果将SD卡取下,用读卡器读文件都是正常的,反复测试下来也都是正常的。唯独断电后使用设备上的STM32F0模拟的U盘读取有问题
感觉可能是USB移植的问题,因为使用读卡器读就没问题,说明txt文件本身是正常的。