例如:使用 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即可
現象:u盤總容量12m,只寫入幾百kb的檔案資訊,容量卻只剩1m
原因:fat表中的簇資訊被異常擦除,如圖:
fatfs容量統計原理是統計fat表下面空閒的簇(即:0x000)的數量,來計算空閒容量的,總容量也是計算fat表下面有多少個簇。
在這個圖中,實際已用空間不到1m,實際卻顯示了10.2mb已用,消失的9.2mb就是被異常擦除成0xff的扇區。
解決辦法:將0xff扇區恢復成0x00,即可以恢復容量
基於stm32移植FATFS檔案系統
2.ff14a source 下就是需要的檔案。ff.c fatfs模組。ffconf.h fatfs模組的配置檔案。ff.h fatfs和應用程式模組的通用包含檔案。diskio.h fatfs 和disk i o模組的公用包含檔案。diskio.c 將現有disk i o模組連線到fatfs的粘...
stm32專題十九 FatFs檔案系統簡介
fatfs檔案系統簡介 但是,這樣直接儲存資料會帶來極大的不便,如難以記錄有效資料的位置,難以確定儲存介質的剩餘空間,以及應以何種格式來解讀資料。就如同乙個巨大的圖書館無人管理,雜亂無章地存放著各種書籍,難以查詢所需的文件。對於spi flash晶元或者sd卡之類的大容量裝置,我們需要一種高效的方式...
STM32的SD驅動 FATFS檔案系統
2 stlink v2 3 cp2102 usb轉串列埠 4 8g sd卡 5 stm32cubemx 6 keil mdk 匯出的工程可以直接編譯。最終程式執行順序為 主函式 檔案系統應用程式 檔案系統 晶元sdio介面驅動。我們需要編寫的只有主函式 main.c 和檔案系統應用程式 fatfs....