1
1
/**
2
2
******************************************************************************
3
- * @file eeprom.c
4
- * @author WI6LABS
5
- * @version V1.0.0
6
- * @date 01-August-2016
7
- * @brief provide emulated eeprom from flash
8
- *
3
+ * @file stm32_eeprom.c
4
+ * @brief Provides emulated eeprom from flash
9
5
******************************************************************************
10
6
* @attention
11
7
*
35
31
*
36
32
******************************************************************************
37
33
*/
38
- /** @addtogroup CMSIS
39
- * @{
40
- */
41
34
42
- /** @addtogroup stm32f4xx_system
43
- * @{
44
- */
45
-
46
- /** @addtogroup STM32F4xx_System_Private_Includes
47
- * @{
48
- */
49
35
#include "stm32_eeprom.h"
50
36
#include <string.h>
51
37
52
38
#ifdef __cplusplus
53
39
extern "C" {
54
40
#endif
55
41
56
- /**
57
- * @}
58
- */
59
-
60
- /** @addtogroup STM32F4xx_System_Private_TypesDefinitions
61
- * @{
62
- */
63
-
64
- /**
65
- * @}
66
- */
67
-
68
- /** @addtogroup STM32F4xx_System_Private_Defines
69
- * @{
70
- */
71
- // We use the last page of the flash to store data (to prevent code overwritten).
42
+ /* Use the last page of the flash to store data in order to prevent overwritting
43
+ program data */
72
44
#if defined (STM32F0xx ) || defined (STM32F1xx ) || defined(STM32L1xx )
73
45
#if defined (FLASH_BANK2_END )
74
46
#define FLASH_BASE_ADDRESS ((uint32_t)((FLASH_BANK2_END + 1) - FLASH_PAGE_SIZE))
75
47
#elif defined (FLASH_BANK1_END )
76
48
#define FLASH_BASE_ADDRESS ((uint32_t)((FLASH_BANK1_END + 1) - FLASH_PAGE_SIZE))
77
49
#else
78
50
#define FLASH_BASE_ADDRESS ((uint32_t)((FLASH_END + 1) - FLASH_PAGE_SIZE))
79
- #endif // FLASH_BANK2_END
51
+ #endif /* FLASH_BANK2_END */
80
52
#elif defined (STM32F2xx ) || defined (STM32F4xx ) || defined (STM32F7xx )
81
53
#define FLASH_BASE_ADDRESS ((uint32_t)(FLASH_END + 1) - FLASH_PAGE_SIZE)
82
54
#define FLASH_DATA_SECTOR ((uint32_t)(FLASH_SECTOR_TOTAL - 1))
@@ -116,76 +88,48 @@ static inline uint32_t get_flash_end(void) {
116
88
#define FLASH_BANK_NUMBER FLASH_BANK_1
117
89
#else
118
90
#define FLASH_BANK_NUMBER FLASH_BANK_2
119
- #endif // FLASH_BANK_2
120
- // Flash base address
91
+ #endif /* FLASH_BANK_2 */
92
+ /* Flash base address */
121
93
#define FLASH_PAGE_NUMBER ((uint32_t)((FLASH_SIZE / FLASH_PAGE_SIZE) - 1))
122
94
#define FLASH_BASE_ADDRESS ((uint32_t)(FLASH_BASE + (FLASH_PAGE_NUMBER * FLASH_PAGE_SIZE)))
123
95
#endif
124
- /**
125
- * @}
126
- */
127
-
128
- /** @addtogroup STM32F4xx_System_Private_Macros
129
- * @{
130
- */
131
-
132
- /**
133
- * @}
134
- */
135
96
136
- /** @addtogroup STM32F4xx_System_Private_Variables
137
- * @{
138
- */
139
97
static uint8_t tmpEE [E2END ] = {0 };
140
98
141
- /**
142
- * @}
143
- */
144
-
145
- /** @addtogroup STM32F4xx_System_Private_FunctionPrototypes
146
- * @{
147
- */
148
99
void get_data_from_flash (void );
149
100
void set_data_to_flash (void );
150
101
151
- /**
152
- * @}
153
- */
154
-
155
102
/**
156
103
* @brief Function read a byte from eeprom
157
- * @param __p : address to read
104
+ * @param pos : address to read
158
105
* @retval byte : data read from eeprom
159
106
*/
160
- uint8_t eeprom_read_byte (const uint16_t __p )
161
- {
107
+ uint8_t eeprom_read_byte (const uint16_t pos ) {
162
108
uint8_t byte = 0 ;
163
109
164
110
get_data_from_flash ();
165
- byte = tmpEE [__p ];
111
+ byte = tmpEE [pos ];
166
112
167
113
return byte ;
168
114
}
169
115
170
116
/**
171
- * @brief Function write a byte to eeprom
172
- * @param __p : address to write
173
- * @param __value : value to write
117
+ * @brief Function writes a byte to emulated eeprom (flash)
118
+ * @param pos : address to write
119
+ * @param value : value to write
174
120
* @retval none
175
121
*/
176
- void eeprom_write_byte (uint16_t __p , uint8_t __value )
177
- {
178
- tmpEE [__p ] = __value ;
122
+ void eeprom_write_byte (uint16_t pos , uint8_t value ) {
123
+ tmpEE [pos ] = value ;
179
124
set_data_to_flash ();
180
125
}
181
126
182
127
/**
183
- * @brief The function read into the flash.
128
+ * @brief Function reads a byte from emulated eeprom ( flash)
184
129
* @param none
185
130
* @retval none
186
131
*/
187
- void get_data_from_flash (void )
188
- {
132
+ void get_data_from_flash (void ) {
189
133
memcpy (tmpEE , (uint8_t * )(FLASH_BASE_ADDRESS ), E2END );
190
134
}
191
135
@@ -194,9 +138,8 @@ void get_data_from_flash(void)
194
138
* @param none
195
139
* @retval none
196
140
*/
197
- void set_data_to_flash (void )
198
- {
199
- //copy in flash
141
+ void set_data_to_flash (void ) {
142
+ /* Copy in flash */
200
143
FLASH_EraseInitTypeDef EraseInitStruct ;
201
144
uint32_t offset = 0 ;
202
145
uint32_t address = FLASH_BASE_ADDRESS ;
@@ -206,12 +149,12 @@ void set_data_to_flash(void)
206
149
uint32_t pageError = 0 ;
207
150
uint64_t data = 0 ;
208
151
209
- // ERASING page
152
+ /* ERASING page */
210
153
EraseInitStruct .TypeErase = FLASH_TYPEERASE_PAGES ;
211
154
#ifdef STM32L4xx
212
155
EraseInitStruct .Banks = FLASH_BANK_NUMBER ;
213
156
EraseInitStruct .Page = FLASH_PAGE_NUMBER ;
214
- #else // STM32F4xx
157
+ #else /* STM32F4xx */
215
158
#ifdef STM32F1xx
216
159
EraseInitStruct .Banks = FLASH_BANK_1 ;
217
160
#endif
@@ -262,16 +205,15 @@ void set_data_to_flash(void)
262
205
uint32_t SectorError = 0 ;
263
206
uint32_t data = 0 ;
264
207
265
- // ERASING page
208
+ /* ERASING page */
266
209
EraseInitStruct .TypeErase = FLASH_TYPEERASE_SECTORS ;
267
210
EraseInitStruct .VoltageRange = FLASH_VOLTAGE_RANGE_3 ;
268
211
EraseInitStruct .Sector = FLASH_DATA_SECTOR ;
269
212
EraseInitStruct .NbSectors = 1 ;
270
213
271
214
HAL_FLASH_Unlock ();
272
215
273
- if (HAL_FLASHEx_Erase (& EraseInitStruct , & SectorError ) == HAL_OK )
274
- {
216
+ if (HAL_FLASHEx_Erase (& EraseInitStruct , & SectorError ) == HAL_OK ) {
275
217
while (address < address_end ) {
276
218
memcpy (& data , tmpEE + offset , sizeof (uint32_t ));
277
219
if (HAL_FLASH_Program (FLASH_TYPEPROGRAM_WORD , address , data ) == HAL_OK ) {
@@ -286,18 +228,6 @@ void set_data_to_flash(void)
286
228
#endif
287
229
}
288
230
289
-
290
- /**
291
- * @}
292
- */
293
-
294
- /**
295
- * @}
296
- */
297
-
298
- /**
299
- * @}
300
- */
301
231
#ifdef __cplusplus
302
232
}
303
233
#endif
0 commit comments