This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Flash memory writing

Hi,

I’m having some troubles writing into the fash memory. I work on KeilµVision.

I initialise flash doing :

 

uint32_t page_size = NRF_FICR->CODEPAGESIZE;

uint32_t page_num = NRF_FICR->CODESIZE -3;                 (I need to save 12 000 Bytes -> 3 pages)

add_page_1 = (page_size * global.page_num);

add_page_2 = add_page_1 + page_size;

add_page_3 = add_page_2 + page_size;

 

and I try to write the flash with :

 

nrf_nvmc_page_erase(add_page_1);

nrf_nvmc_page_erase(add_page_2);

nrf_nvmc_page_erase(add_page_3);

nrf_nvmc_write_words(add_page_1, global.tab_memory, page_size);

nrf_nvmc_write_words(add_page_2, global.tab_memory + page_size, page_size);

nrf_nvmc_write_words(add_page_3, global.tab_memory + page_size + page_size, page_size);

 

global.tab_memory is the 1-dimension tabe i want to save.

The nvmc_page_erase works without any problems, but when I enter into the first nvmc_write_words function, I go to the “HardFault_Handler” loop in arm_startup_nrf52.s file.

I tried to do : nrf_nvmc_write_words(add_page_1, global.tab_memory, page_size/4); The bug disappear but I don’t save all my data.

What am I doing wrong? Does anybody have an idea to help me with that issue?

Thank’s

Related