STM32移植fatfs(R0 10a版本)

2021-08-03 14:04:35 字數 1716 閱讀 1155

關於stm32微控制器移植fatfs。

使用微控制器的朋友都知道微控制器一般提供的rom和ram都比較小。就算是stm32這樣的提供256kb flash和64kb ram的。一旦你需要存一些資料量比較大的檔案的時候還是不夠用的。一般可以通過外擴sd和nand flash來實現大容量儲存。相對來說sd卡的使用更加方便一些。使用過nand flash的也許會知道nand flash有壞塊,使用的時候需要做壞塊管理,還有就是需要做損耗均衡。不然nand flash很容易就會壞掉。

下面說說sd卡。sd卡驅動有兩種方式。一種是spi驅動方式。還有一種是sdio驅動方式。spi驅動時只需要4更線:clk、sd_cs、miso、mosi。sdio則需要clk、cmd、data0、data1、data2、data3。如果使用sdio的話必須要硬體支援sdio。類似51這樣的微控制器就不具備sdio介面(stm32具有)。為了方便。這裡使用spi方式驅動sd卡。

找到

修改sd卡的初始化改為:

當然如果你的sd卡初始化、不是這個名字 請改為你自己sd卡初始化的名字。

修改disk_status函式:改為圖中模樣。

修改disk_read函式 如下圖

同理根據你自己sd的讀扇區函式名。

修改disk_write函式

修改disk_ioctl函式

然後再檔案的最後面加上

dword get_fattime (void)

//動態分配記憶體

void ff_memalloc (uint size)

//釋放記憶體

void ff_memfree (void* mf)

修改ffconf.h檔案:

1.將#define _use_strfunc 0改為#define _use_strfunc 1

2.#define _use_mkfs 0改為#define _use_mkfs 1

3.#define _use_fastseek 0改為#define _use_fastseek 1

4.#define _use_label 0改為#define _use_label 1

5.#define _code_page 932改為#define _code_page 936

6.#define _use_lfn 0改為#define _use_lfn 3

7.#define _volumes 1改為#define _volumes 2

到這裡基本就修改完了。

這裡附上stm32f103rct6的sd卡fatfa的工程

更多軟體/硬體/微控制器交流**群:740600942

(待續…)

stm32移植ucosII成功

osstarthang b osstarthang should never get here 現在做開發真的離不開internet啊 不然我也不可能2.5小時內搞定ucosii的移植。我的硬體版本是 stm32f103c8t6,ucos版本是ucosiiv2.86 另外給大家推薦一本學習ucosi...

stm32移植ecos,移植ucgui到ecos

ucgui是乙個開源的輕型嵌入式gui,使用廣泛,資料豐富,功能完整,尤其適合嵌入式產品的gui。只是它開源但不免費。僅管如此,移植來玩玩還是可以的。ucgui設計優秀,具有良好移植性,配合ecos framebuf優秀框架,可以讓你很快見到ucgui呈現的精美顯示介面。本文主要介紹了ucgui移植...

在STM32上移植FreeRTOS

freertos是乙個迷你的實時作業系統核心。作為乙個輕量級的作業系統,功能包括 任務管理 時間管理 訊號量 訊息佇列 記憶體管理 記錄功能 軟體定時器 協程等,可基本滿足較小系統的需要。開啟後如下如顯示 為了避免出錯,請將路徑改為全英文 將主程式改為如下 include freertos.h in...