@@ -151,8 +151,17 @@ static uint8_t eeprom_buffer[E2END + 1] __attribute__((aligned(8))) = {0};
151
151
*/
152
152
uint8_t eeprom_read_byte (const uint32_t pos )
153
153
{
154
+ #if defined(DATA_EEPROM_BASE )
155
+ __IO uint8_t data = 0 ;
156
+ if (pos <= (DATA_EEPROM_END - DATA_EEPROM_BASE )) {
157
+ /* with actual EEPROM, pos is a relative address */
158
+ data = * (__IO uint8_t * )(DATA_EEPROM_BASE + pos );
159
+ return (uint8_t )data ;
160
+ }
161
+ #else
154
162
eeprom_buffer_fill ();
155
163
return eeprom_buffered_read_byte (pos );
164
+ #endif /* _EEPROM_BASE */
156
165
}
157
166
158
167
/**
@@ -163,8 +172,18 @@ uint8_t eeprom_read_byte(const uint32_t pos)
163
172
*/
164
173
void eeprom_write_byte (uint32_t pos , uint8_t value )
165
174
{
175
+ #if defined(DATA_EEPROM_BASE )
176
+ /* with actual EEPROM, pos is a relative address */
177
+ if (pos <= (DATA_EEPROM_END - DATA_EEPROM_BASE )) {
178
+ if (HAL_FLASHEx_DATAEEPROM_Unlock () == HAL_OK ) {
179
+ HAL_FLASHEx_DATAEEPROM_Program (FLASH_TYPEPROGRAMDATA_BYTE , (pos + DATA_EEPROM_BASE ), (uint32_t )value );
180
+ HAL_FLASHEx_DATAEEPROM_Lock ();
181
+ }
182
+ }
183
+ #else
166
184
eeprom_buffered_write_byte (pos , value );
167
185
eeprom_buffer_flush ();
186
+ #endif /* _EEPROM_BASE */
168
187
}
169
188
170
189
/**
@@ -195,7 +214,17 @@ void eeprom_buffered_write_byte(uint32_t pos, uint8_t value)
195
214
*/
196
215
void eeprom_buffer_fill (void )
197
216
{
217
+ #if defined(DATA_EEPROM_BASE )
218
+ uint32_t i ;
219
+ __IO uint32_t data ;
220
+
221
+ for (i = DATA_EEPROM_BASE ; i <= DATA_EEPROM_END ; i ++ ) {
222
+ data = * (__IO uint32_t * )(DATA_EEPROM_BASE + i );
223
+ eeprom_buffer [i ] = (uint8_t )data ;
224
+ }
225
+ #else
198
226
memcpy (eeprom_buffer , (uint8_t * )(FLASH_BASE_ADDRESS ), E2END + 1 );
227
+ #endif /* STM32L0xx */
199
228
}
200
229
201
230
#if defined(EEPROM_RETRAM_MODE )
@@ -210,6 +239,22 @@ void eeprom_buffer_flush(void)
210
239
memcpy ((uint8_t * )(FLASH_BASE_ADDRESS ), eeprom_buffer , E2END + 1 );
211
240
}
212
241
242
+ #elif defined(DATA_EEPROM_BASE )
243
+ /**
244
+ * @brief This function writes the buffer content into the eeprom on L0
245
+ * @param none
246
+ * @retval none
247
+ */
248
+ void eeprom_buffer_flush (void )
249
+ {
250
+ uint32_t i ;
251
+
252
+ for (i = DATA_EEPROM_BASE ; i <= DATA_EEPROM_END ; i ++ ) {
253
+ HAL_FLASHEx_DATAEEPROM_Unlock ();
254
+ HAL_FLASHEx_DATAEEPROM_Program (FLASH_TYPEPROGRAMDATA_BYTE , i , (uint32_t )eeprom_buffer [i ]);
255
+ HAL_FLASHEx_DATAEEPROM_Lock ();
256
+ }
257
+ }
213
258
#else /* defined(EEPROM_RETRAM_MODE) */
214
259
215
260
/**
0 commit comments