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