This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

stuck in wait_for_flash_ready()

I'm working on a NRF52832 project with SDK V15.2, using S132 Softdevice. before connecting, nrf_fstorage_write/nrf_fstorage_erase/sd_flash_write/sd_flash_page_erase all are work perfectly. But once connected with a device, all the operations to flash can't work. it'll stuck in wait_for_flash_ready, return of nrf_fstorage_write & nrf_fstorage_erase  are NRF_SUCCESS.  If I call nrf_sdh_disable_request() before  nrf_fstorage_write & nrf_fstorage_erase, the operations can be done correctly.  Never goes into fstorage_evt_handler() after connected to a device.

Please help me figure out this issue, thanks in advanced.

  • Hi,

    What connection parameters are using in the BLE link? As you can see from Flash API timing in the SoftDevice specification:

    Flash timing-activity may not get a timing-event at all if other timing-events occupy most of the time and use priority higher than flash timing-activity.

    If this is the problem, which seems likely, then it could be fixed by for instance using longer connection intervals.

  • Hi Einar,

    I used below parameters, let me try to use a longer interval and then get back to you.

    #define MIN_CONN_INTERVAL               MSEC_TO_UNITS(20, UNIT_1_25_MS)       
    #define MAX_CONN_INTERVAL               MSEC_TO_UNITS(75, UNIT_1_25_MS)            

  • I changed the parameters to below, the result is same as before.

    #define MIN_CONN_INTERVAL               MSEC_TO_UNITS(20, UNIT_1_25_MS)        
    #define MAX_CONN_INTERVAL               MSEC_TO_UNITS(1600, UNIT_1_25_MS)

    I'll change something more to verify if this is caused by the CI, will get back to you once I get a conclusion.

  • Hi,

    Assuming you are making a peripheral, this just sets the desired advertising interval for the nRF, and it is still the phone (central) who decides. Increasing the MIN_CONN_INTERVAL significantly should probably help. What connection interval is actually being used on the link?

  • Hi Einar,

    Just now, we set  Android phone's connection _priority from connetion_priority_balabced  to connetion_priority_low_power, It means the CI is from  100ms to 125ms. The result is same.