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?