问题1:fatfs 目录下无法创建文件
例如:使用 res = f_open(&file,"0:/LOG/text.txt",FA_OPEN_ALWAYS |FA_WRITE )创建txt文件,结果:res=FR_OK 。进入U盘模式查看,却发现LOG文件夹下面,没有text.txt文件
事故原因:LOG目录可用扇区为0,text.txt无法写入LOG目录下。如图:

扇区1:正常记录了LOG目录的信息,有文件2021-1-5.csv,2021-1-6.csv...
扇区2-8:也是LOG目录的信息区,但都被0xff填满。在fat12文件系统中,0xff表示占用,0x00才表示空闲。可是w25q128擦除结果却是0xff,所以此时LOG目录的2-8扇区被判断为占用,整个LOG目录没有空闲扇区可以记录text.txt文件信息。因此导致了test.txt文件无法在LOG目录下面创建。
解决办法:将0xff变成0x00即可
问题2:fatfs U盘容量突然被占用
现象:U盘总容量12M,只写入几百kb的文件信息,容量却只剩1M
原因:FAT表中的簇信息被异常擦除,如图:

fatfs容量统计原理是统计FAT表下面空闲的簇(即:0x000)的数量,来计算空闲容量的,总容量也是计算FAT表下面有多少个簇。
在

本文探讨了在使用fatfs在U盘上遇到的问题,包括文件创建失败因LOG目录占用扇区0xff、容量突然减少因FAT表异常擦除。文章提供了修复方法,即检查并修复全0xff扇区,确保文件系统的正确操作。
最低0.47元/天 解锁文章
5207





