一、
在工業(yè)應(yīng)用中經(jīng)常使用EEPROM來存儲數(shù)據(jù),為降低成本、節(jié)省PCB空間,外部EEPROM可以用片內(nèi)Flash加上特定的軟件算法代替。
因為片內(nèi)Flash的擦寫次數(shù)有限,所以要加上特定算法來增加使用壽命。此算法ST提供了歷程,我們可以移植到我們的程序里直接使用,比較方便。
二、源碼移植
移植很簡單,一共兩個文件“eeprom.c","eeprom.h",移植前需要準(zhǔn)備選擇至少2塊連續(xù)大小相同的flash扇區(qū),示例程序中選用的是16K大小的2、3扇區(qū)?,F(xiàn)在打開“eeprom.h”文件。移植時需要修改的內(nèi)容:
好了移植完成,注意此源碼是基于HAL庫的,也可以自己修改flash讀寫程序,之前我將這個移植到GD的芯片,這個還是很方便的。
三、使用方法
在“eeprom.h”文件中的最下方可以看到對外的功能函數(shù)
我們首先需要將EE_Init()函數(shù)在主函數(shù)中調(diào)用初始化。剩下兩個EE_ReadVariable( uint16_t VirtAddress, uint16_t* Data )和EE_WriteVariable( uint16_t VirtAddress, uint16_t Data )函數(shù)是我們將用到的FLASH讀寫函數(shù)。
這里需要注意這兩個函數(shù)都有一個輸入參數(shù),這是一個虛擬地址,也就是一個將來尋找我們存儲內(nèi)容的地址。
例如,示例程序中,要存儲3個變量值,分別給這3個變量一個虛擬地址,0x5555, 0x6666, 0x7777 當(dāng)然你也可以不用這個三個值作為虛擬地址。
將VarValue值分配虛擬地址為0x5555后通過EE_WriteVariable函數(shù)寫入flash,然后根據(jù)0x5555這個地址使用EE_ReadVariable函數(shù)將剛剛存儲的值讀到VarDataTab數(shù)組里。如下圖。
使用起來同樣簡單。
-
STM32
+關(guān)注
關(guān)注
2276文章
10947瀏覽量
359166 -
EEPROM
+關(guān)注
關(guān)注
9文章
1048瀏覽量
82362 -
Flash存儲
+關(guān)注
關(guān)注
0文章
39瀏覽量
8346 -
HAL庫
+關(guān)注
關(guān)注
1文章
121瀏覽量
6477 -
PCB
+關(guān)注
關(guān)注
1文章
1862瀏覽量
13204
發(fā)布評論請先 登錄
相關(guān)推薦
如何使用Flash模擬EEPROM存儲參數(shù)

FLASH模擬EEPROM可以用單片機(jī)實現(xiàn)嗎?
如何用stm32 Flash模擬eeprom?
如何利用STM32的FLASH去模擬EEPROM呢
如何利用單片機(jī)的內(nèi)部Flash模擬EEPROM
使用STM32F10x片內(nèi)的Flash存儲器實現(xiàn)軟件模擬EEPROM的方法
STM32 FLASH模擬EEPROM資料
MCU模擬eeprom基本功能

AN0002—AT32 MCU如何使用片上Flash來實現(xiàn)EEPROM功能

STM32F103:內(nèi)部Flash模擬EEPROM

評論