cancel
Showing results for 
Search instead for 
Did you mean: 

How to increase LPAWUR range

angus123
Associate III

Hello :)

 

I am developing an application using a pair of NUCLEO-WL33CC1. I am testing the LPAWUR, using the LPAWUR_WakeupRadio_Rx and MRSUBG_WakeupRadio_Tx examples as a starting point. The examples work fine, but the range is very short, only about 0.3 m. How can I increase my range? I am able to achieve 50m+ when sending my normal radio telemetry, just the LPAWUR range is very short. This makes me believe the antenna and hardware TX path is fine, and it is a configuration issue with LPAWUR. Can anyone reccomend some changes to the following code? I tried enabling the AGC which had no positive effect. Here is my init function for LPAWUR:

static void MX_LPAWUR_Init(void)
{

/* USER CODE BEGIN LPAWUR_Init 0 */

/* USER CODE END LPAWUR_Init 0 */

/* USER CODE BEGIN LPAWUR_Init 1 */

/* USER CODE END LPAWUR_Init 1 */

/** Initializes the RF Config
*/
LPAWUR_RadioInitStruct.EnergyDetectorIcal = ED_ICAL_VBAT_3_25_TO_3_50;
LPAWUR_RadioInitStruct.ClockDivider = 7;
LPAWUR_RadioInitStruct.EnergyDetectorSwitch = DISABLE;
LPAWUR_RadioInitStruct.AgcResetMode = AGC_RESET_MODE_NEVER;
LPAWUR_RadioInitStruct.AgcHoldMode = AGC_HOLD_AFTER_PREAMBLE;
LPAWUR_RadioInitStruct.AgcMode = AGC_MODE_OFF;
LPAWUR_RadioInitStruct.AgcHiLvl = AGC_VBAT_0800;
LPAWUR_RadioInitStruct.DCCurrentSubtraction = ENABLE;
LPAWUR_RadioInitStruct.AgcLoLvl = AGC_LOW_0;
HAL_LPAWUR_RFConfigInit(&LPAWUR_RadioInitStruct);

/** Initializes the Frame
*/
LPAWUR_FrameInitStruct.TRecAlgoSel = TWO_STEPS;
LPAWUR_FrameInitStruct.SlowClkCyclePerBitCnt = 16;
LPAWUR_FrameInitStruct.PayloadLength = 7;
LPAWUR_FrameInitStruct.SyncThr = 16;
LPAWUR_FrameInitStruct.SyncLength = 0;
LPAWUR_FrameInitStruct.PreambleThrCnt = 0x3C;
LPAWUR_FrameInitStruct.PreambleEnable = ENABLE;
LPAWUR_FrameInitStruct.FrameSyncCntTimeout = 0x60;
LPAWUR_FrameInitStruct.FrameSyncPattenHigh = 0x00;
LPAWUR_FrameInitStruct.FrameSyncPatternLow = 0x6969;
LPAWUR_FrameInitStruct.KpGain = 6;
LPAWUR_FrameInitStruct.KiGain = 10;
HAL_LPAWUR_FrameInit(&LPAWUR_FrameInitStruct);
LL_LPAWUR_SetState(ENABLE);
/* USER CODE BEGIN LPAWUR_Init 2 */

/* USER CODE END LPAWUR_Init 2 */

}

 

And here is my MRSUBG init function in the device I am using to wake my sleeping device

// Re-init the radio with the required LPAWUR configuration
LPAWUR_radio_wake_config.lFrequencyBase = 868000000;
LPAWUR_radio_wake_config.xModulationSelect = MOD_OOK;
LPAWUR_radio_wake_config.lDatarate = 2000;
LPAWUR_radio_wake_config.lFreqDev = 20000;
LPAWUR_radio_wake_config.lBandwidth = 50000;
LPAWUR_radio_wake_config.dsssExp = 0;
LPAWUR_radio_wake_config.outputPower = 14;
LPAWUR_radio_wake_config.PADrvMode = PA_DRV_TX_HP;
HAL_MRSubG_Init(&LPAWUR_radio_wake_config);

/** Configures the packet parameters
*/

LPAWUR_packet_settings.PreambleLength = 0;
LPAWUR_packet_settings.PostambleLength = 0;
LPAWUR_packet_settings.SyncLength = 0;
LPAWUR_packet_settings.SyncWord = 0x88888888;
LPAWUR_packet_settings.FixVarLength = FIXED;
LPAWUR_packet_settings.PreambleSequence = PRE_SEQ_0101;
LPAWUR_packet_settings.PostambleSequence = POST_SEQ_0101;
LPAWUR_packet_settings.CrcMode = PKT_NO_CRC;
LPAWUR_packet_settings.Coding = CODING_MANCHESTER;
LPAWUR_packet_settings.DataWhitening = DISABLE;
LPAWUR_packet_settings.LengthWidth = BYTE_LEN_1;
LPAWUR_packet_settings.SyncPresent = DISABLE;

Edited to apply source code formatting - please see How to insert source code for future reference.

0 REPLIES 0