Size: a a a

2019 December 26

С

Сергей in STM32
Alexey Sidorov
страница то огромная, один раз стерли а потом пишите пока страница не закончится, после полного заполнения только стирайте, так во много раз растянете жизнь флеша
Есть может пример как это реализовано, чтобы не изобретать велосипед?
источник

AS

Alexey Sidorov in STM32
был подобный вопрос в  удаленной группе. если коротко то было примерно так: ищем свободное место на странице, как нашли - записали. если до конца страницы прошли и не нашли свободного места, то стираем страницу и пишем в начало
источник

С

Сергей in STM32
Alexey Sidorov
был подобный вопрос в  удаленной группе. если коротко то было примерно так: ищем свободное место на странице, как нашли - записали. если до конца страницы прошли и не нашли свободного места, то стираем страницу и пишем в начало
Ок, спасибо)
источник

КБ

Константин Буланов in STM32
источник

КБ

Константин Буланов in STM32
источник

КБ

Константин Буланов in STM32
как бы есть готовые библиотеки для этого
источник

КБ

Константин Буланов in STM32
uint16_t VirtAddVarTab[NB_OF_VAR] = {0, 1, 2};

int main(void) {

HAL_FLASH_Unlock();
   EE_Init();

   EE_ReadVariable(VirtAddVarTab[0], &LubeCount);
   EE_ReadVariable(VirtAddVarTab[1], &WheelRotateLimitBase);
   EE_ReadVariable(VirtAddVarTab[2], &LubeDelay);

   if (WheelRotateLimitBase == 0) {
       EE_WriteVariable(VirtAddVarTab[0], 0);      //Write LubeCount if device clear
       EE_WriteVariable(VirtAddVarTab[1], 2400);   //Write WheelRotateLimitBase if device clear
       EE_WriteVariable(VirtAddVarTab[2], 1600);   //Write LubeDelay if device clear
   }
}
источник

КБ

Константин Буланов in STM32
примерный код
источник

КБ

Константин Буланов in STM32
это под STM32F103
источник

A

ASSembler in STM32
Сергей
Есть может пример как это реализовано, чтобы не изобретать велосипед?
Цикл жизни flash это кол-во стираний, при стирании все биты выставляются в 1, запись может только сбрасывать бит, таким образом можно даже один и тот же байт перезаписывать с условием что в прежней записи понадобится ТОЛЬКО сбрасывать биты в ноль:)
источник

A

ASSembler in STM32
Тоесть если во флеш бит был 0 а вы пытаетесь записать 1, то данные просто потеряются
источник

s

stD in STM32
Да зачем что-то выдумывать. Обычно свободного Флеша остаётся дофига, в том же БлюПилл последние 64к вообще не используются. Допустим вам нужно сохронять 10 байт, если их записывать каждый раз в новое место, то получится 6400 записей. Умножаем это количество, на количество допустимых  циклов и получаем 64 миллиона.
источник

s

stD in STM32
Думаю этого вполне достаточно на очень долгие годы при условии что запись происходит каждые 15 минут (как хочет топикстартер).
источник

A

ASSembler in STM32
+ во многих камнях флешка в 2 раза больше
источник

A

ASSembler in STM32
407ve по факту vg
источник

A

ASSembler in STM32
C8 тот же CB
источник

A

ASSembler in STM32
Но это справедливо для мелких партий
источник

A

ASSembler in STM32
В серии не стоит надеяться на эту память
источник

С

Сергей in STM32
ASSembler
+ во многих камнях флешка в 2 раза больше
Да, это я в курсе)
источник

A

ASSembler in STM32
Сергей
Да, это я в курсе)
Если устройство для себя, то почему бы и да?
источник