What is time width between slot IRQ and wake-up IRQ?

There are some questions on Fig 27 Wakeup Interrupts of RSL10 hardware reference…

  1. What is time width between slot IRQ and wake-up IRQ ? Why does the clock need correction?
  2. As to clock correction latency, could you describe more clearly how to handle the clock correction latency or which On-semi document explains the detailed handling.
  3. Whether there is an IRQ to synch the connection interval starting. May the connection interval starting trigger an IRQ.
  4. Where may we read two continuous connection intervals’ time to know time difference and then do correction? Thanks.

Hi @Henry_Li

Please see responses to your questions below.

Slot duration is 625 us & wakeup IRQ can happen any time. Clock correction is required because during sleep the low power clock is based on a clock that does not meet the BLE spec accuracy. After wakeup it needs to correct counter values in the HW because the SW is aware of the accuracy differences.

This information is not available externally as it is handled entirely by the stack and does need to be changed by the user.

BLE IRQs are not exposed to application and to get timing information you can use wlan coexistence interrupts or use the BLE_Set_ConEstablishCallBack() & BLE_Set_ChnlMapIndCallBack() API to get timing information.

The phase IRQ of ASCC block can be used to calculate the accurate timing of the sync pulses as well.

The BLE_Get_conEvtCount() API can provide more data about interval number if required. There is no need for application to correct anything as the correction is handled by the stack.

Thank you for using our Community Forum.

Slot duration is 625 us & wakeup IRQ can happen any time. Clock correction is required because during sleep the low power clock is based on a clock that does not meet the BLE spec accuracy. After wakeup it needs to correct counter values in the HW because the SW is aware of the accuracy differences.

As to “after wakeup…, SW is aware of the accuracy differences.” above, what is max time difference between two continuous connection intervals?

Hi @Henry_Li,

It is determined by the central role device’s clock accuracy. If RSL10 is the peripheral, its clock doesn’t affect the maximum time difference.

Thank you for using our Community Forum.

If both the central and peripheral are RSL10, what is maximum time difference between two continuous connection intervals. For example, is it 20ppm or 250ppm? Thanks.

For “BLE IRQs are not exposed to application and to get timing information you can use wlan coexistence interrupts or use the BLE_Set_ConEstablishCallBack() & BLE_Set_ChnlMapIndCallBack() API to get timing information.” feedback, Is "BLE_Set_ConEstablishCallBack() API only used in first connection interval built or able to be called in every connection interval for timing information? Does it mean “slot IRQ” in Figure 27. Wakeup Interrupts of hardware reference?

For “The phase IRQ of ASCC block can be used to calculate the accurate timing of the sync pulses as well.” feedback, does it mean we may measure every connection time through the sync pulses?

As to RF_IRQ_RECEIVED_IRQn, does it mean END IRQ in Figure 27. Wakeup interrupts of hardware reference? Thanks.

Hi @Henry_Li,

If Sleep mode is used, 250ppm. If Sleep mode is not used, 20ppm.

This function will allow you to set a Callback function that is triggered each time a Connection is established. It will not be triggered on every Connection interval, but will allow you to see what accuracy parameters are passed to the Peripheral from the Central device. The Slot IRQ is not exposed to the application level and cannot be monitored in this way.

Correct. The ASCC can be used to measure the amount of System Clocks that occur between two BLE Sync Pulses.

The End IRQ is not exposed to the application level and cannot be monitored in this way.

Thank you for using our Community Forum.

Thanks a lot for your clear feedback.

In Table 35. Interrupts in the Arm Cortex-M3 Processor (Continued) of RSL10 hardware reference, RF_TX_IRQn and RF_IRQ_RECEIVED_IRQn are only used in low level F/W so API application doesn’t accurately know the interrupted time of RF_TX_IRQn and RF_IRQ_RECEIVED_IRQn. Because we know RF_TX_IRQn and RF_IRQ_RECEIVED_IRQn memory address, may we use DMA to check if these two IRQs address data are changed? If yes, we know data transmitted or received and let DMA control a GPIO to generate a pulse. The purpose is to generate another new TX and RX interrupts for API application. Is it feasible?

@Henry_Li

This is likely not a possible option unless you allow the DMA to run continuously in the background. Given the DMA transfers needs to be triggered, either by a DMA request line (this request line does not exist for IRQ Memory Addresses) or left to run automatically, the only feasible approach would be to let the DMA copy the data repeatedly or on set repetition timer.

As an alternative suggestion, it seems like you are trying to get more information on the timings occurring between BLE events within the stack, and as such it might be a more straight forward approach to capture current consumption measurements of the device while it is advertising or connected and measuring the time distance between the TX Peaks (Advertising) or the Rx Peaks (Connected).