RFM69 retry time

Started by RezystorTranzystor, May 23, 2024, 11:52:40 AM

RezystorTranzystor

Hi everyone. I have been trying to explore the topic of the mentioned module for some time now. I still find a lot of things hard to understand about its operation, and the longer I sit with it the less things I already understand.

In general, I have achieved two-way communication with pairing function between two modules (remote control and receiver). I need to do an acknowledgment of receipt, something like the SendWithRetry() function;

This is where my problem arises. Every message that the remote control sends, the receiver receives and how it interprets it sends an acknowledgment, which the remote control does not always peel anymore. The way it works is that in a message packet, one byte corresponds to a reply request or "reply". When the remote sends such a message, it goes into the RX state for a certain amount of time (after which if it doesn't get a response it returns an error), the minimum time I've been able to get for reasonably proper operation is 200ms of staying in RX mode for a 20 byte message. It uses basic frequency and data flow configuration as well as CRC and AES.
I was just browsing the forum and trying to find the answer.

Do I understand correctly that such a long response time can be caused by AES?

Is it possible to shorten it somehow by boosting the data flow? (REG_BITRATEMSB 4.8kbps / REG_FDEVMSB 5kHz)? If so, how to calculate it? (Specifically the subject of REG_RXBW)....
In general, the whole thing stands on STM32 in C. I am following the LowPowerLab library
Is anyone able to explain to me what all this is about? My hands are already falling off...



Felix

200ms is way too long. The average packet takes a few ms to send, and an empty ACK takes at most a few ms back.
You need to IMMEDIATELY send the ACK, not go to do other things in the meanwhile (like reading your packet and checking for content etc, all that can be done later).
So ensure you send the ACK right away upon receipt of packet.
Please see examples in the library, those are all meant to show how to properly use the transceiver.