Annex Dual Radio Timer

The dual radio feature requires a free running timer to enable synchronization of both transceiver together. The user must initialize this timer in their BSP and provide functions to control it.

Timer configuration:
  • Counter Up mode

  • Auto-reload preload disabled

  • 20.48 MHz tick frequency

  • Generate interruption at end of period

The function pointers below are part of the swc_hal_t structure. They need to be set to use the dual radio feature.

typedef struct swc_hal {
    swc_radio_hal_t radio_hal[WPS_RADIO_COUNT]; /*!< Radio HAL */
    void (*context_switch)(void);               /*!< Context switch function pointer */
#if (WPS_RADIO_COUNT == 2)
    void (*timer_start)(void);                  /*!< Radio timer start interface. */
    void (*timer_stop)(void);                   /*!< Radio timer stop interface. */
    void (*timer_set_period)(uint16_t period);  /*!< Radio timer set period interface. */
    void (*timer_set_max_period)(void);         /*!< Radio timer set max period interface. */
    void (*disable_timer_irq)(void);            /*!< Disable Multi radio interrupt source */
    void (*enable_timer_irq)(void);             /*!< Enable Multi radio interrupt source */
    uint32_t timer_frequency_hz;                /*!< Frequency of the multi radio timer in Hz. */
} swc_hal_t;


This function starts the free running timer.


This function stops the free running timer.


This function set the number of ticks required before an interrupt request is triggered.


This function disables the timer’s interrupt requests.


This function enables the timer’s interrupt requests.

Return to Wireless Core article