Knowledge Base

SX1272 Receive not working

I am using SX1272RF1xAS evaluation modules interfaced with PSoC5LP.
I have integrated LoRa ping-pong code from the git source and main file is attached(code.jpg). In the same file T/R toggling is done using #define.
I am running this on two SX1272 modules connected to two different PSoC boards.
All register read and writes are proper.
I can see Tx spectrum which seems alright(screenshot is attached) and also TxDone bit is set in IRQ register.
But RxDone bit is not getting set in receiver and no error bits are set.
Receive RSSI value is read to be 0x7D during active transmission and 0x16 when there is no transmission. This means power is being detected, but RxDone is not being set.
Kindly help in resolving this issue.

Image Attachments
Hi Vinay !

It looks like you are configuring the receiver to receive a 0-byte length payload. Could you double check that the receiver is correctly configured ? It seems you try to send 255 bytes over the air, consider setting the receiver to receive 255 bytes also.

Best regard.
Hi mverdy,

How to set receiver to receive fixed length ?
Since Tx and Rx are set to be in explicit header mode, length of the frame is based on header received.
Do I have to use implicit header mode?

I have tried all possible frame sizes from Tx.
Also checked registers after Radio.Rx() is called. Modemstatus reg value remains Rx Running forever. RSSI reg gets updated whenever there is Tx. But no RxDone interrupt or RxDone flag or data in FIFO.

Thanks and regards.
Hi vinay,

I think the value LORA_FIX_LENGTH_PAYLOAD_ON in the argument list of function SetTxConfig and SetRxConfig selects the header mode (implicit or explicit). Could you check its value? If the value is `true` then the chip is configured in implicit mode and the expected payload length must be provided on receiver side.
Could you provide all values of the preprocessor macro in the function argument?
The choice between implicit and explicit header mode is up to you. However, the Tx and Rx sides must be configured to the same value.

Could you also provide the returned values of all values in the IRQ register on receiver side? Maybe another interrupt has raised (CRC error for instance).
Could you also have a non-null timeout duration for Rx operation and check that a timeout interrupt does arise ?
Just to be sure: which driver are you using? The one from From which git branch?