This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts
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

Host reception by gazell is not successful

Hello, I have a question.

The chip uses nRF 52832. MDK keil μVision V 5.22.0.0 is used as the development environment. I am using nRF5_SDK_13.0.0-1.alpha_055eef3. It is based on template_project. I uploaded the source to onedrive.

host 1drv.ms/.../s!Avi3XPNJyYutgn6Gch-9r7WOZtqC

device 1drv.ms/.../s!Avi3XPNJyYutgn0weoveuPfRzt7V

When the button of the device is pressed, nrf_gzll_add_packet_to_tx_fifo is called, and host illuminates the LED with nrf_gzll_host_rx_data_ready.

Communication was successful several times, host confirmed that nrf_gzll_host_rx_data_ready, device nrf_gzll_device_tx_success is called in the callback.

However, when communicating several times, host will not receive it. At that time, device calls nrf_gzll_device_tx_failed, but I do not know the reason for not returning.

How should I do it? Thank you for your consideration.

  • How long does it take to get into the issue ? What exactly was "several times" ?

    I tried your code here, holding button 1 will send data to host board. But I hold it for a while but don't see nrf_gzll_device_tx_failed() being called. Host receive packet normally.

  • Hi Mr.Bui

    We changed the program and transmitted from the device in 100 ms cycle, the phenomenon that transmission failed was reproduced. Although it will not fail if it is set to 200 ms cycle, is there a problem if it is early? Settings of timeslots, tables, etc. are done in the initial state except for datarate. The number of retransmissions is 0 times.

    I want to transmit at the fastest 1 ms period as a purpose, but is there anything I need to set?

  • Calling "nrf_gzll_fetch_packet_from_ rx_fifo" in host's "nrf_gzll_host_rx_data_ready" callback function.

    When calling "nrf_gzll_get_error_code ()" when its return value became false, it was [0x06 NRF_GZLL_ERROR_CODE_INVALID_PAYLOAD_LENGTH].

    The device is transmitted by 1 byte, and the payload of receiving by the host is done with NRF_GZLL_CONST_MAX_PAYLOAD_LENGTH.

    I do not know well that this setting seems to be problematic.

  • Hi design,

    Please provide code that show the issue.

    The minimum timeslot is 600us , and you can only send one packet per 2 timeslots.

    Please explain in more detail on the your issue on the second comment, do you have issue when you call nrf_gzll_fetch_packet_from_ rx_fifo() ?

  • The tx FIFO and rx FIFo on the device side are filled and transmission seems to have failed.

    The packet is counted and managed, and the transmission becomes stable. However, as a result, the timeslot number is 2 and the smallest timeslot is 600 us so it was found that the requested specifications can not be satisfied because the fastest communication is 1 to 1.2 ms.

    Therefore, I will try it with ESB. thank you for your answer.

Related