Knowledge Base
HOME » KNOWLEDGE BASE » FORUM

SX1262 sensitivity performance after sleep.

Hi.
I have encountered a small sensitivity problem after sleep.
Recorded Lora signal with a vector generator and replayed over the cable directly to DUT.

After many tests, one sentence seems to be true :
- When SX1262 enters once into sleep mode it looses 1-2 dB on RX sensitivity.

RESET - CONFIG - RX: -135 dBm
RESET - CONFIG - SLEEP - STANDBY - RX : -133 dBm
RESET - CONFIG - RX : -135 dBm then SLEEP - STANDBY - RX -133 dBm

Every time after RESET-CONFIG without SLEEP is always 2 dB better.
Sleep makes something unknown for me what causing 2dB lost.

Does SX1262 do something when it gets from sleep to normal mode and it can have an influence on RX performance?

Tested with TCXO and XTAL - the same result observed.
Repeating calibration after sleep doesn't help.
Reset and again configuration - helps and sensitivity is recovered.

Any ideas ?
Avatar
Hi,

Thank you for the detailed explanation. It will help us a lot!

I forwarded the question to the team in charge of the design and let you know as soon as I get the answer.
Avatar
I have two questions:
* which type of SLEEP mode are you using? Cold or Warm start?
* during the "CONFIG" step, do you perform specific configuration (through register access for instance)?
Hi.
I am using Sleep with parameters :

Sx_SetSleep( SX_SLEEP_TYPE_WARM | SX_SLEEP_RTC_TIMEOUT_OFF );

This is equal : Sx_SetSleep(0x04);

The same problem is when chip enters to Sx_SetRxDutyCycle and it enters automatically to Sleep and Rx. After long searching, I found that entering into sleep is the problem.
After the return from sleep mode with TCXO, function Sx_GetDeviceErrors(); gives me XOSC start error, what is also strange, because it was previously configured to work with TCXO. But sensitivity degradation after sleep is noticeable booth with TCXO and XOSC.

My config looks like follow :

uint16_t sxErrors;
uint8_t paConfArray[] = { 0x04, 0x07, 0x00, 0x01 };

Sx_Reset();
Sx_ClearDeviceErrors();
Sx_SetStandby(SX_STANDBY_CLOCK_RC);
Sx_SetPacketType(SX_PACKET_TYPE_LORA);
Sx_SetRegulatorMode(SX_REGULATOR_MODE_DC_DC);
Sx_SetDio2AsRfSwitchCtrl(SX_DIO2_AS_RF_SWITCH_CTRL_ON);
Sx_SetDio3AsTcxoCtrl(SX_DIO3_TCXO_VOLT_1V8, SX_TIMEOUT_MS(1));

Sx_SetPaConfig(14);
Sx_SetOcpConfig(SX_OCP_MA(100));
Sx_SetTxParams(paConfArray, SX_TX_PARAMS_RAMP_40us);

Sx_SetRfFrequency(SX_FREQUENCY_HZ(869000000));
Sx_SetModulationParamsLora(SX_MOD_PARAMS_LORA_SF_9, SX_MOD_PARAMS_LORA_BW_62, SX_MOD_PARAMS_LORA_LOW_DATA_OPT_OFF);
Sx_SetPacketParamsLora(12, SX_PACKET_PARAMS_LORA_HDR_EXPLICIT, 16, SX_PACKET_PARAMS_LORA_CRC_ON, SX_PACKET_PARAMS_LORA_INV_IQ_ON); // inv on and off tested and no influence.
Sx_SetLoRaSymbNumTimeout(110);
Sx_StopTimerOnPreamble(SX_STOP_TIMER_ON_PREAMBLE);
Sx_SetSyncWordLora(0xCAFEu); // tested different values - no influence
Sx_Calibrate(SX_CALIB_FLAG_ALL);
Sx_CalibrateImage(SX_CALIB_IMAGE_FREQ_863_870);
Sx_SetRxTxFallbackMode(SX_RXTX_FALLBACK_STBY_RC);
Sx_SetRxGain(SX_RX_GAIN_BOOSTED);
Sx_SetDioIrqParams(&dioIrqParams;);

sxErrors = Sx_GetDeviceErrors();

if(sxErrors != 0)
{
DEBUG(1,("SX1262 ERRORS : 0xX", sxErrors));
}