STM32 FATFS檔案系統之FAT12問題集錦

2021-10-18 01:15:07 字數 865 閱讀 9389

例如:使用 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....