The LoRa Developer Forum is now in read-only mode and new content will not be added.
Semtech, in its commitment to enhance user experience and streamline content, has successfully integrated the LoRa Developer Portal content into Semtech.com. As a result of this consolidation effort, the LoRa® Developer Portal Forum will be discontinued on May 1st. After this date, you will be automatically redirected to Semtech.com.
For any technical support related to LoRa, please feel free to reach out to our experts here. If you have sales inquiries, please contact us here.

FORUM

Sx1276 questions

hello friends, i’m working with a sx1276 radio trying to communicate with other transceivers in a peer2peer topology, but something curious is happening.

when I try to communicate with a sx1276 sending continuous frames in a frequency of 1 second, the radio FIFO seems to overwrite itself.

(i had already tested with higher intervals, like 10 seconds, and the same problem occurs)

for example, let’s assume 2 transmitting devices (let’s call them device1 and device2) and 1 listening device (listener_device), all operating in the same rf frequency.

If device1 sends starts sending a frame of 40 bytes length, all of them with the value 0xFF; and at the same time device2 starts sending a frame of the same length (40 bytes), all of them with the value 0xBB, the listener_device will, 99% of the time, receive something like ff ff ff ff ff ff ff ff ff bb bb bb bb bb bb bb bb bb… like a mixed frame (seems the internal radio FIFO is being overwritten). both tx devices, in this case, are continuously transmitting every second.

so, in summary, the problem occurring is: for 2 or more devices transmitting simultaneously (regardless of the transmitting time interval), one receiver device receives a mixed up frame, containing data of two or more different frames sent by the transmitters.

i’m reading the received data in RxTxBuffer, found on DIO0 IRQ function, in sx1276.c file, specifically in these lines: (consider that the file was kept untouched):

SX1276.Settings.LoRaPacketHandler.Size = SX1276Read( REG_LR_RXNBBYTES );
SX1276Write( REG_LR_FIFOADDRPTR, SX1276Read( REG_LR_FIFORXCURRENTADDR ) );
SX1276ReadFifo( RxTxBuffer, SX1276.Settings.LoRaPacketHandler.Size );

how could i work that around?

thank you

Hello,

These chips include a single channel receiver and a single modem working at any one time. So the experiment you are describing can’t work.

Common way to solve this issue is to allocate time slots for each Tx to talk to the single Rx

Rgds

1 Like

You could distinguish, and receive separately, two packets sent at the same time, and at the same frequency, if each packet was sent with a different spreading factor. However, for that to work, you would need one receiver for each different spreading factor used in the transmission.

IOW, with a single receiver, even if the transmitters use different spreading factors, your experiment (with packets sent exactly at the same time) can’t work.