Skip to content

Commit 68e9f21

Browse files
committed
library: eeprom: add STM32U5xx support
Signed-off-by: Frederic Pillon <frederic.pillon@st.com>
1 parent eb220d2 commit 68e9f21

File tree

1 file changed

+12
-1
lines changed

1 file changed

+12
-1
lines changed

libraries/EEPROM/src/utility/stm32_eeprom.c

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,11 @@ void eeprom_buffer_flush(void)
194194
uint32_t address_end = FLASH_BASE_ADDRESS + E2END;
195195
#if defined(FLASH_TYPEERASE_PAGES)
196196
uint32_t pageError = 0;
197+
#if defined(FLASH_TYPEPROGRAM_QUADWORD)
198+
uint64_t data[2] = {0x0000};
199+
#else
197200
uint64_t data = 0;
201+
#endif
198202

199203
/* ERASING page */
200204
EraseInitStruct.TypeErase = FLASH_TYPEERASE_PAGES;
@@ -212,12 +216,19 @@ void eeprom_buffer_flush(void)
212216
__HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_ALL_ERRORS);
213217
if (HAL_FLASHEx_Erase(&EraseInitStruct, &pageError) == HAL_OK) {
214218
while (address <= address_end) {
215-
219+
#if defined(FLASH_TYPEPROGRAM_QUADWORD)
220+
/* 128 bits */
221+
memcpy(&data, eeprom_buffer + offset, 4 * sizeof(uint32_t));
222+
if (HAL_FLASH_Program(FLASH_TYPEPROGRAM_QUADWORD, address, (uint32_t)data) == HAL_OK) {
223+
address += 16;
224+
offset += 16;
225+
#else
216226
data = *((uint64_t *)((uint8_t *)eeprom_buffer + offset));
217227

218228
if (HAL_FLASH_Program(FLASH_TYPEPROGRAM_DOUBLEWORD, address, data) == HAL_OK) {
219229
address += 8;
220230
offset += 8;
231+
#endif
221232
} else {
222233
address = address_end + 1;
223234
}

0 commit comments

Comments
 (0)