Skip to main content
Associate
September 16, 2024
Solved

STM32WL55JC SUBGHZ_WaitOnBusy() long blocking delay in HAL_SUBGHZ_ExecSetCmd()

  • September 16, 2024
  • 2 replies
  • 1107 views

IMG_8030.png

IMG_8029.png

hi, I have developed applications using STM32WL base on NUCLEO-WL55JC1. 

 But I found when enter CAD there is a long time block on SUBGHZ_WaitOnBusy(). About 1.2ms.it’s so long than I thought 

 

 I found a issue in GitHub:

https://github.com/STMicroelectronics/STM32CubeWL/issues/70

 

When SUBGRF_SetTx() or SUBGRF_SetRx() is called, it blocks for a long time (~1.2 ms) until the BUSY line goes low. The blocking delay is in HAL_SUBGHZ_ExecSetCmd() where SUBGHZ_WaitOnBusy() is called after the SET_TX (0x83) or SET_RX (0x82).

 

what can I do for avoiding this issue? Thanks

Best answer by STTwo-32

Hello @Yibin and welcome to the ST Community.

on the NUCLEO, there is a TCXO. The TCXO requires a wake-up time.
in the cubeWL_1.3.0, the TCXO_WAKE_UP_TIME is set at 1ms, probably this is what you see.

To change this, you can go in SubGHz_Phy/target/radio_conf.h
/* Radio maximum wakeup time (in ms) */
#define RF_WAKEUP_TIME           1U

This can be lowered to 1ms without impacting the RF performances.

Depending on your RF requirements', you may want to use the XO instead of the TCXO. By, using XO, there is no wakeup time anymore (at least XO settling time is barely noticeable)

to do this, you need to:
1/ (HW) modify the NUCLEO board by disconnecting the TCXO output from the XTA, and connecting the XO
2/ (SW) update in radio_board_if.h, the IS_TCXO_SUPPORTED
from #define  IS_TCXO_SUPPORTED               1U
to #define  IS_TCXO_SUPPORTED                0U

 

Best Regards.

STTwo-32

 

2 replies

YibinAuthor
Associate
September 16, 2024

The code is like this:

Radio.StandBy();

Radio.StartCad(); // toke 1.172ms to exec, most of time (1.134ms)is wait for busy. 

STTwo-32
STTwo-32Best answer
Technical Moderator
September 16, 2024

Hello @Yibin and welcome to the ST Community.

on the NUCLEO, there is a TCXO. The TCXO requires a wake-up time.
in the cubeWL_1.3.0, the TCXO_WAKE_UP_TIME is set at 1ms, probably this is what you see.

To change this, you can go in SubGHz_Phy/target/radio_conf.h
/* Radio maximum wakeup time (in ms) */
#define RF_WAKEUP_TIME           1U

This can be lowered to 1ms without impacting the RF performances.

Depending on your RF requirements', you may want to use the XO instead of the TCXO. By, using XO, there is no wakeup time anymore (at least XO settling time is barely noticeable)

to do this, you need to:
1/ (HW) modify the NUCLEO board by disconnecting the TCXO output from the XTA, and connecting the XO
2/ (SW) update in radio_board_if.h, the IS_TCXO_SUPPORTED
from #define  IS_TCXO_SUPPORTED               1U
to #define  IS_TCXO_SUPPORTED                0U

 

Best Regards.

STTwo-32

 

YibinAuthor
Associate
September 20, 2024

Thanks  for reply. I have fix it with you suggesting. 

But I still unknown, why TCXO is stop when enter Radio.Standby();?