2025-07-01 3:52 AM - edited 2025-07-01 3:59 AM
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.
2025-07-02 10:23 AM
Hi @angus123
This post has been escalated to the ST Online Support Team for additional assistance. We'll contact you directly.
Regards,
Billy
2025-08-07 6:48 AM
Hello @angus123
As you can see on the chapter 7.8.1 of the UM 3418:
"The LPAWUR can work on three different frequency bands. By
default, this feature is not connected to the antenna path. C3 is OFF". So, you have to connect the C3 according to the desired frequency range.
Best Regards.
STTwo-32
To give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.