EEPROM是非易失存儲器的一種。

非易失存儲器在掉電時數據不丟失,可以永久存儲,一般用于存儲設置相關的數據。

與之相對的為易失存儲器,易失存儲器在掉電時數據丟失,常用于存儲運行過程的數據,其又分為DRAM(動態隨機存儲器)和SRAM(靜態隨機存儲器),單片機的內部RAM為SRAM。

非易失存儲器主要有幾類:

Flash,其特點數據存儲單元的數據可以由1寫到0,而不能從0寫到1。只能通過整頁擦除(page, 256bytes),或者整個sector(STM32F051為1kByte),或者是整個block(STM32F051為64kByte)將存儲單元的數據從0改成1。單片機通過SPI的接口外接Flash。其擦寫的壽命一般為10萬次。

EEPROM,其特點數據存儲單元的數據可以由1寫到0,也可以從0寫到1,也就是可以對單字節的數據進行任意的讀寫操作。單片機通過IIC的接口外接EEPROM。其擦寫的壽命一般為10萬次。

鐵電存儲器最主要的特點是讀寫速度快,并可以像非易失性存儲器一樣使用。因鐵電晶體的固有缺點,擦寫次數是有限的,超出了限度,FRAM就不再具有非易失性。最大擦寫次數高達100萬次,比flash壽命長10倍。

前幾年比較火的PIC系列處理器有內置的EEPROM,而近年來比較流行的ST的STM32F05X系列以及STM32F1xx系列的處理器,都沒有內置的EEPROM,都可以通過內置的Flash實現EEPROM功能。

正如上所述,Flash和EEPROM相比,最主要的區別在于Flash不能擦除單個字節。

因此采用Flash實現單字節讀寫時,需要有編寫專門的軟件模塊實現該功能。

具體步驟如下:

1. 從內置Flash中取出兩塊存儲區,一塊存儲區用于正常存儲,另一塊作為數據的備份。

2. 在單片機的RAM空間中分配與存儲區相同大小的空間,用做數據的緩存。

3. 當需要改寫數據時,首先將數據緩存至RAM緩存中。

4. 擦除Flash數據的存儲區,將RAM緩存中的數據寫入數據區,并寫入CRC校驗值。

5. 擦除Flash備份的存儲區,將RAM緩存中的數據寫入備份區,并定入CRC校驗值。

6.單片機上電時,分別從Flash的數據區和備份區讀出數據,并計算CRC值,根據CRC值判斷選擇數據區的數據或者是備份區的數據。

綜上,是當單片機內部沒有EEPROM,或者是內部的Flash不適合用于存儲永久保存的數據時,可以通過外置的EEPROM存儲設備的設置數據(比如產品的LED燈的顏色,亮度等),以及用戶的設置數據(比如門禁產品用,用戶的卡號數據以及密碼數據等)。與Flash相比,由于EEPROM可以單字節進行讀寫,因此很多數據都可以直接寫入到EEPROM,不需要通過復雜的搬移->擦寫->搬移等邏輯在Flash中實現可靠的數據永久存儲。