cancel
Showing results for 
Search instead for 
Did you mean: 

STM32WL55JC SUBGHZ_WaitOnBusy() long blocking delay in HAL_SUBGHZ_ExecSetCmd()

Yibin
Associate II

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

1 ACCEPTED SOLUTION

Accepted Solutions
STTwo-32
ST Employee

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

 

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.

View solution in original post

3 REPLIES 3
Yibin
Associate II

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
ST Employee

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

 

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.

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

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