I’m having some issues with the SX1280 LoRa mode where I am not getting any indication of packet errors on receive when they occur. It is unclear to me whether I need to check the PacketStatus register or the IRQ register for error flags in LoRa mode, but neither location seem to be giving the expected result as of yet.
I’m sending 253 byte LoRa packets of a repeated character and intentionally reducing transmit power until some errors appear in the packet payload. Both radios are in LoRa mode, Variable length mode, and CRC is enabled
Again, based on the datasheet, I am unsure which error register I should check to detect packet errors, but this is the behavior I am seeing:
- Polling the IRQStatus command after sending/receiving, I only ever see bit 0 (tx done), bit 1 (rx done), and occasionally bit 14 (rx/tx timeout) on a missed packet. Even when there are clearly errors in the payloads, error bits 5 (header error) and 6 (CRC error) are never set. Additionally, I never see bit 4 (header valid) set either, which is puzzling.
- I have also tried polling the PacketStatus register, but this yields error flags which seem to stay constantly set even when there are no errors. Finally, I am not sure if the error bytes in the PacketStatus register are valid in this mode based on the datasheet and example firmware. There seems to be conflicting information:
- Errata (section 16.3) indicates that all modes should screen packets for errors using PacketStatus register, but PacketStatus definition in section 11.8 the datasheet doesn’t list these bytes as available in LoRa mode
- The mbed library does not return these bytes (Lines 400-404 of sx1280.cpp Link)
- The sx1280 demo c driver from the semtech website does return these bytes (Lines 437-454 of SX1280_DemoApp/SMTC_Drivers/sx1280-driver-c/sx1280.c Link)
Please let me know if I’m misunderstanding something about the documentation.
Thank you for your help!