Hi,
I am trying to store a buffer which i collect from ble connection. I have tried sd_flash functions first. I could not found any examples so page number or addresses might be wrong.
So i tried to test it with very easy code. These lines are in main function after all service and other Initializations.
uint32_t test_buffer = 1; uint32_t test_buffer2 = 0; sd_flash_page_erase(0); sd_flash_write((uint32_t *)0, &test_buffer, 1); memcpy(&test_buffer2, (uint32_t *)0x3e000, 4);
Neither erase or write is working.
// where can i found the document about pages to erase and write ?
So i tried flash_fstorage example
static void nus_data_handler(ble_nus_evt_t * p_evt)
{
uint8_t temp_buffer[50] = {0};
uint32_t test_buffer;
uint32_t ab = 2;
ret_code_t rc;
if (p_evt->type == BLE_NUS_EVT_RX_DATA)
{
memcpy(temp_buffer, p_evt->params.rx_data.p_data, p_evt->params.rx_data.length);
temp_buffer[p_evt->params.rx_data.length] = '\0';
NRF_LOG_INFO("%s", temp_buffer);
if(memcmp(temp_buffer, "123", 3) == 0)
{
// passkey_len = p_evt->params.rx_data.length - 3;
NRF_LOG_INFO("Writing \"%x\" to flash.", ab);
rc = nrf_fstorage_write(&fstorage, 0x3e100, &ab, sizeof(ab), NULL);
APP_ERROR_CHECK(rc);
wait_for_flash_ready(&fstorage);
NRF_LOG_INFO("Done.");
memcpy(&test_buffer, (uint32_t *)0x3e100, sizeof(test_buffer));
NRF_LOG_INFO("%x", test_buffer);
}
/*else if(memcmp(p_evt->params.rx_data.p_data, "", ) == 0)
{
}*/
}
}
But device can not even any log. I did everything according to the example. If i commenct out rc = nrf_fstorage_write(&fstorage, 0x3e100, &ab, sizeof(ab), NULL); i get all logs.