Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit5fd35fd

Browse files
committed
library(eeproom): add STM32H5xx support
Signed-off-by: Frederic Pillon <frederic.pillon@st.com>
1 parent26ee82f commit5fd35fd

File tree

2 files changed

+48
-4
lines changed

2 files changed

+48
-4
lines changed

‎libraries/EEPROM/src/utility/stm32_eeprom.c

Lines changed: 47 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
#include"stm32_eeprom.h"
2020
#include"stm32yyxx_ll_utils.h"
2121
#include<string.h>
22+
#include<stdbool.h>
2223

2324
#ifdef__cplusplus
2425
extern"C" {
@@ -37,15 +38,19 @@ extern "C" {
3738
#endif/* !FLASH_BANK_NUMBER */
3839

3940
/* Be able to change FLASH_DATA_SECTOR to use if relevant */
40-
#if defined(FLASH_SECTOR_TOTAL)
41+
#if defined(FLASH_SECTOR_TOTAL)|| defined(FLASH_SECTOR_NB)
4142
#if !defined(FLASH_DATA_SECTOR)
43+
#if defined(FLASH_SECTOR_TOTAL)
4244
#defineFLASH_DATA_SECTOR ((uint32_t)(FLASH_SECTOR_TOTAL - 1))
45+
#elif defined(FLASH_SECTOR_NB)
46+
#defineFLASH_DATA_SECTOR ((uint32_t)(FLASH_SECTOR_NB - 1))
47+
#endif
4348
#else
4449
#ifndefFLASH_BASE_ADDRESS
4550
#error "FLASH_BASE_ADDRESS have to be defined when FLASH_DATA_SECTOR is defined"
4651
#endif
4752
#endif/* !FLASH_DATA_SECTOR */
48-
#endif/* FLASH_SECTOR_TOTAL */
53+
#endif/* FLASH_SECTOR_TOTAL|| FLASH_SECTOR_NB*/
4954

5055
/* Be able to change FLASH_PAGE_NUMBER to use if relevant */
5156
#if !defined(FLASH_PAGE_NUMBER)&& defined(FLASH_PAGE_SIZE)
@@ -62,6 +67,12 @@ extern "C" {
6267
#defineFLASH_END FLASH_BANK2_END
6368
#elif defined (FLASH_BANK1_END)&& (FLASH_BANK_NUMBER==FLASH_BANK_1)
6469
#defineFLASH_END FLASH_BANK1_END
70+
#elif defined(FLASH_DATA_SECTOR)
71+
#if defined(FLASH_BANK_2)&& (FLASH_BANK_NUMBER==FLASH_BANK_2)
72+
#defineFLASH_END ((uint32_t)(FLASH_BASE + (FLASH_SECTOR_NB * FLASH_SECTOR_SIZE) + (FLASH_DATA_SECTOR * FLASH_SECTOR_SIZE) + FLASH_SECTOR_SIZE - 1))
73+
#else
74+
#defineFLASH_END ((uint32_t)(FLASH_BASE + (FLASH_DATA_SECTOR * FLASH_SECTOR_SIZE) + FLASH_SECTOR_SIZE - 1))
75+
#endif/* FLASH_BANK_2 */
6576
#elif defined(FLASH_BASE)&& defined(FLASH_PAGE_NUMBER)&& defined (FLASH_PAGE_SIZE)
6677
/* If FLASH_PAGE_NUMBER is defined by user, this is not really end of the flash */
6778
#defineFLASH_END ((uint32_t)(FLASH_BASE + (((FLASH_PAGE_NUMBER +1) * FLASH_PAGE_SIZE))-1))
@@ -240,6 +251,8 @@ void eeprom_buffer_flush(void)
240251
uint32_tSectorError=0;
241252
#if defined(FLASH_TYPEPROGRAM_FLASHWORD)
242253
uint64_tdata[4]= {0x0000};
254+
#elif defined(FLASH_TYPEPROGRAM_QUADWORD)
255+
uint32_tdata[4]= {0x0000};
243256
#else
244257
uint32_tdata=0;
245258
#endif
@@ -249,10 +262,23 @@ void eeprom_buffer_flush(void)
249262
#if defined(FLASH_BANK_NUMBER)
250263
EraseInitStruct.Banks=FLASH_BANK_NUMBER;
251264
#endif
265+
#if defined(FLASH_VOLTAGE_RANGE_3)
252266
EraseInitStruct.VoltageRange=FLASH_VOLTAGE_RANGE_3;
267+
#endif
253268
EraseInitStruct.Sector=FLASH_DATA_SECTOR;
254269
EraseInitStruct.NbSectors=1;
255270

271+
#if defined(ICACHE)&& defined (HAL_ICACHE_MODULE_ENABLED)&& !defined(HAL_ICACHE_MODULE_DISABLED)
272+
boolicache_enabled= false;
273+
if (HAL_ICACHE_IsEnabled()==1) {
274+
icache_enabled= true;
275+
/* Disable instruction cache prior to internal cacheable memory update */
276+
if (HAL_ICACHE_Disable()!=HAL_OK) {
277+
Error_Handler();
278+
}
279+
}
280+
#endif/* ICACHE && HAL_ICACHE_MODULE_ENABLED && !HAL_ICACHE_MODULE_DISABLED */
281+
256282
HAL_FLASH_Unlock();
257283

258284
if (HAL_FLASHEx_Erase(&EraseInitStruct,&SectorError)==HAL_OK) {
@@ -263,18 +289,36 @@ void eeprom_buffer_flush(void)
263289
if (HAL_FLASH_Program(FLASH_TYPEPROGRAM_FLASHWORD,address, (uint32_t)data)==HAL_OK) {
264290
address+=32;
265291
offset+=32;
266-
#else
292+
#elif defined(FLASH_TYPEPROGRAM_QUADWORD)
293+
/* 128 bits */
294+
memcpy(&data,eeprom_buffer+offset,4*sizeof(uint32_t));
295+
if (HAL_FLASH_Program(FLASH_TYPEPROGRAM_QUADWORD,address, (uint32_t)data)==HAL_OK) {
296+
address+=16;
297+
offset+=16;
298+
#elif defined(FLASH_TYPEPROGRAM_WORD)
267299
memcpy(&data,eeprom_buffer+offset,sizeof(uint32_t));
268300
if (HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD,address,data)==HAL_OK) {
269301
address+=4;
270302
offset+=4;
303+
#else
304+
#error "Unknown FLASH Program Type."
305+
if (0) {}
271306
#endif
272307
}else {
273308
address=address_end+1;
274309
}
275310
}
276311
}
277312
HAL_FLASH_Lock();
313+
#if defined(ICACHE)&& defined (HAL_ICACHE_MODULE_ENABLED)&& !defined(HAL_ICACHE_MODULE_DISABLED)
314+
if (icache_enabled)
315+
{
316+
/* Re-enable instruction cache */
317+
if (HAL_ICACHE_Enable()!=HAL_OK) {
318+
Error_Handler();
319+
}
320+
}
321+
#endif/* ICACHE && HAL_ICACHE_MODULE_ENABLED && !HAL_ICACHE_MODULE_DISABLED */
278322
#endif
279323
}
280324

‎libraries/EEPROM/src/utility/stm32_eeprom.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ extern "C" {
8484
* emulation. Anyway, all the sector size will be erased.
8585
* So pay attention to not use this sector for other stuff.
8686
*/
87-
#defineFLASH_PAGE_SIZE ((uint32_t)(16*1024))/*16kB page */
87+
#defineFLASH_PAGE_SIZE ((uint32_t)(8*1024))/*8kB page */
8888
#endif
8989

9090
#if defined(DATA_EEPROM_BASE)|| defined(FLASH_EEPROM_BASE)

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp