Showing results for 
Search instead for 
Did you mean: 

Writing/Erasing internal flash during BLE connection


Hi all, 

We would like to perform write/erase actions in internal flash during active BLE connection for a slave/peripheral device. We intend to use BLE_RfWithFlash example. We are trying to establish sufficient conditions for a slave to perform write/erase operations.

Looking "4.7 Flash memory management" of AN5289, we see the constraints:

  • BLE connected: the connection interval must be longer than 25 ms + packet length, to
    be able to execute flash memory erase operation.
  • Data throughput use case: When data streaming packet is sent, the radio is kept active
    to send as much data as possible between two connection intervals. Therefore, the
    radio can not be in idle long enough to fit an erase operation. When the device is
    master, it can reduce the Connection Event Length parameter (with either the
    aci_gap_create_connection() or aci_gap_start_connection_update() command) to
    prevent the device filling completely the interval between two connection intervals.
    When the device is slave, it must request the master to increase the connection interval
    so that the data to be sent fit only part of the interval between two connections events.


Is it correct to conclude that, in theory, even with a very long connection interval, there is a chance that the connection event can span the whole interval and there won't be enough time to perform an erase and there is nothing at slave side to ensure an erase?

Christian N
ST Employee

This post has been escalated to the ST Online Support Team for additional assistance. We'll contact you directly.