SLAAE58 april 2023 MSPM0G1105 , MSPM0G1106 , MSPM0G1107 , MSPM0G1505 , MSPM0G1506 , MSPM0G1507 , MSPM0G3105 , MSPM0G3106 , MSPM0G3107 , MSPM0G3505 , MSPM0G3506 , MSPM0G3507 , MSPM0L1105 , MSPM0L1106 , MSPM0L1303 , MSPM0L1304 , MSPM0L1304-Q1 , MSPM0L1305 , MSPM0L1305-Q1 , MSPM0L1306 , MSPM0L1306-Q1 , MSPM0L1343 , MSPM0L1344 , MSPM0L1345 , MSPM0L1346
Many applications require store data in non-volatile memory, so that the application can be reused or modified even after the system is powered up again. EEPROM is design for such applications. Although the MSPM0 MCUs does not have an internal EEPROM, the MSPM0 internal Flash supports EEPROM emulation. Compared to using an external serial EEPROM, EEPROM emulation using the internal Flash saves pin usage and cost.
Different applications require different storage structures. The type A solution described in this article is suitable for storing large 'block' of data. If the application needs to store small 'variable' data, the type B solution can be referenced.
Difference between EEPROM and on-chip Flash
The EEPROM can erase and write to a single byte of memory multiple times, allowing programmed locations to retain data for long periods of time even if the system is powered off.
Flash memory has a higher density than EEPROM, allowing larger memory arrays (sectors) to be implemented on chip. The flash erase and write cycle is performed by applying a time-controlled voltage to each unit. Each cell (bit) reads the logical value 1 under erase conditions. Therefore, each Flash location reads 0xFFFF After erase. By programming, the cell can be changed to a logic 0. Any word can be overwritten to change a bit from logical 1 to 0; however, the reverse is not possible. In addition, Flash memory has the restriction that the memory is erased by a region. For MSPM0 MCUs, the erase resolution is 'sector' with the size of 1k bytes.
One major difference between EEPROM and Flash is cycling capability. Flash endurance is typically 10000 cycles, far less than real EEPROM. EEPROM emulation is a software based on Flash to provide the equivalent endurance that can be satisfied for the application. It also simulates the behavior of the EEPROM, simplifying the operation of reading and writing data.
A typical emulation scheme involves using a portion of the Flash memory and dividing it into multiple areas. These areas are used alternately to store data. Due to the block erase requirement of Flash, entire Flash sector has to be reserved for the EEPROM emulation. To achieve wear-leveling, at least two sectors are used.