×

STM32F1+ FATFS + U盘 + W25Q

zxjy辉 zxjy辉 发表于2024-11-23 21:51:38 浏览658 评论0

抢沙发发表评论

最近踩的一个坑,stm32挂载好了一个fatfs,串口打印正常,但是只要是插入电脑,此时,往电脑中存入文件,都很正常然后复位stm32,就会导致fatfs重新格式化!!!文件全丢!


  1. 串口打印

    image.png

    数据正常的很,然后很高兴的插入电脑看看,可以正常识别

    image.png

    拷入文件试试,也可以

  2. image.png

  3. 问题来了

    1. 复位一下stm32

      image.png


  4. 原因

    1. 从这里也就可以看出,就是在插入到电脑的时候,出现了问题

      1. 首先就是怀疑fatfs的不同,电脑在格式化的时候是8092,而程序的fatfs的扇区是4096

        我就是试了格式化,然后格式为fat16,扇区选择4096,也还是不行

      2. 怀疑是不是,关于usb u盘 和fafs之间没有移植好

    2. 试了很久都不行,然后回头去看了一下大容量U盘的写入代码,发现了问题,再写入之前,直接执行了一次擦除

      image.png

      正常在写入的时候,都是先擦除再写入,然后,这个在插入电脑的时候,就会把stm32 构建的fatfs直接擦除了,下面的那个写入函数 norflash_write 已经有了擦除的判断,有内容就先拷贝,然后再擦除,写入数据。

  5. 移植的时候,一定要仔细看看!!

#好好学习!

群贤毕至

访客