GZLL Channel switching mechanism

Hi, we're having some problems and need help.
We have a usage scenario: in HOST mode, the switching rate is 250k/2M every 10ms, the time slots of the two rates are different, and the channel is shared. Whenever the program wants to switch rates, it reconfigures the datarate/timeslot_period/tx_attempts parameter nrf_gzll_enable() after nrf_gzll_disable() is done. Sending and receiving share a set of channel tables, with a total of 5 channels, but the number of retransmissions sent can only be sent to the second channel, and the receiving 10ms window at 250k rate can only run 5 slots.
Under such a mechanism, there is a probability that we will not receive the data and cannot recover it without calling reinitialization. What I'm wondering is whether this problem is related to the misalignment of the channel on the sending and receiving side, and whether the initial receiving channel at each switching rate is from channel 0 or from the channel at disable.

Parents Reply Children
  • Hello, it has been three weeks since the last reply. Is there any definitive news from the GZLL expert?

  • Hi,

     

    If I understand the scenario correctly, you are continuously disable/re-config/enable gazell, and after a while the devices cannot communicate with the host.

    A re-init of gazell fixes this issue.

     

    Please correct me if my understanding is incorrect.

     

    Could you share the gazell settings of both host and device?

     

    Kind regards,

    Håkon

  • Hi,

    Your understanding is correct; there are some translation errors in the question.

    The settings are as follows.

    Number of channels: 5

    Channel selection strategy: USE_CURRENT

    Master device rate: Fixed at 2M or 250k, with the issue occurring in the 250k configuration.

    At 250k rate, the time slot is 2596, and the number of retries is 16;

    at 2M rate, the time slot is 600, and the number of retries is 70.

    Slave device rate: Switches between 250k and 2M every 10ms upon power-up, and will fixate on the current rate configuration after receiving valid data; the time slot and retry count configurations are consistent with the master device.

    Single-channel transmission time slot: 10

    Single-channel reception time slot: 2

  • Hi,

     

    E-hao said:
    Channel selection strategy: USE_CURRENT

    This is a synchronous mode, meaning that the gazell device (transmitter) will try to sync towards the gazell host channel table rotation.

    If your "out of sync" settings here are configured similar to the "in sync" settings, you can potentially always be transmitting on the incorrect RF channel.

    When out of sync, you should setup "nrf_gzll_set_timeslots_per_channel_when_device_out_of_sync" equal to "channel-tab size * timeslots_pr_chan"

    This will ensure that the device will transmit a whole "host channel table cycle" on the same channel.

    E-hao said:
    At 250k rate, the time slot is 2596,

    We recommend that the timeslot is 2700 us or greater for 250 kbit:

    /**
     * @brief Set the timeslot period.
     *
     * The length in microseconds of a Gazell link layer timeslot.
     *
     * The minimum value of the timeslot period is dependent of the
     * radio data rate (@sa nrf_gzll_set_datarate()).
     *
     * - For NRF_GZLL_DATARATE_2MBIT the timeslot period must be >= 600 us.
     * - For NRF_GZLL_DATARATE_1MBIT the timeslot period must be >= 900 us.
     * - For NRF_GZLL_DATARATE_250KBIT the timeslot period must be >= 2700 us.
     *
     * @param period_us The timeslot period in microseconds.
     *
     * @retval true  If the parameter was set.
     * @retval false If Gazell was enabled.
     */
    bool nrf_gzll_set_timeslot_period(uint32_t period_us);

     

    E-hao said:

    Single-channel transmission time slot: 10

    Single-channel reception time slot: 2

    Q1: Can you share your gazell init C code configurations for both gazell host and gazell device?

    Q2: Do you use the same address with each gazell device?

    Q3: When disable/re-configure/enable, do you wait until gazell is fully disabled?

     

    Kind regards,

    Håkon

Related