2024-09-18 11:15 AM
Hello, I am using the NucleoWL55 for transmitting and receiving the data. I am able to transmit and receive the data in HEX, and when I observed in SDR# using RTL SDR I observed the burst data. I want to know if the NucleoWL55 can transmit the CW data or not?,,
Please, help
Solved! Go to Solution.
2024-10-01 2:11 AM
Hello @D_Sajan
Yes, it is possible to transmit Continuous Wave (CW) data using the STM32WL.
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.
2024-10-01 2:11 AM
Hello @D_Sajan
Yes, it is possible to transmit Continuous Wave (CW) data using the STM32WL.
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.
2025-03-30 7:44 AM
Thank you for the response!
I will share how I am doing my project on the NucleoWL55 to utilize the GFSK modulation
If I am doing some error then please make me correct and please support me to transmit CW and receive it. Also share how to implement it.
Making a new project in STM32CubeIDE
Configuring the IOC file (In default peripheral initialization)
A. System Core, RCC
B. Connectivity, SUBGHZ
C. Middleware and Software Packs
D. Clock Configuration to 48MHz
Then I click on 'Code Generation'
3. After the 'Build' I got 12 warnings in ../SubGHz_Phy/Target/radio_board_if.h and "../SubGHz_Phy/Target/radio_board_if.c"
My next step was to import the BSP library in Drivers folder
After then I rename stm32wlxx_nucleo_conf_template.h to stm32wlxx_nucleo_conf.h
4. Now I copy Driver--> STM32WLxx_Nucelo --> stm32wlxx_nucleo_radio.c and stm32wlxx_nucleo_radio.h to the SubGHZ_Phy-->Targer--> radio_board_if.c and radio_board_if.h
I have attached my radio_if.c and radio_if.h..
5. Now I include the radio_drive to my main.c
6. Now I utilize the GFSK as :
PacketParams_t pkt_params;
ModulationParams_t mod_params;
pkt_params.PacketType = PACKET_TYPE_GFSK;
pkt_params.Params.Gfsk.PayloadLength = buffer_length;
pkt_params.Params.Gfsk.PreambleLength = 8;
pkt_params.Params.Gfsk.PreambleMinDetect = RADIO_PREAMBLE_DETECTOR_08_BITS;
pkt_params.Params.Gfsk.SyncWordLength = 3 << 3;
pkt_params.Params.Gfsk.AddrComp = RADIO_ADDRESSCOMP_FILT_OFF;
pkt_params.Params.Gfsk.HeaderType = RADIO_PACKET_FIXED_LENGTH;
pkt_params.Params.Gfsk.CrcLength = RADIO_CRC_2_BYTES_CCIT;
pkt_params.Params.Gfsk.DcFree = RADIO_DC_FREEWHITENING;
SUBGRF_SetPacketParams(&pkt_params);
mod_params.PacketType = PACKET_TYPE_GFSK;
mod_params.Params.Gfsk.Bandwidth = RX_BW_29300;
mod_params.Params.Gfsk.BitRate = bitRate;
mod_params.Params.Gfsk.Fdev = fDev;
mod_params.Params.Gfsk.ModulationShaping = MOD_SHAPING_G_BT_1;
SUBGRF_SetModulationParams(&mod_params);
SUBGRF_SetBufferBaseAddress(0x00, 0x00);
SUBGRF_SetPayload(buffer, buffer_len);
SUBGRF_SetSyncWord(( uint8_t[] ) { 0xC1, 0x94, 0xC1, 0x00, 0x00, 0x00, 0x00,
0x00 });
SUBGRF_SetWhiteningSeed(0x01FF);
SUBGRF_SetPaConfig(PA_DUTY_CYCLE, HP_MAX, PA_SEL, 0x01);
SUBGRF_SetTxParams(RFO_LP, POWER, RAMP_TIME);
SUBGRF_Init(DioIrqHndlr);
SUBGRF_SetDioIrqParams(
IRQ_TX_DONE | IRQ_PREAMBLE_DETECTED | IRQ_RX_DONE
| IRQ_RX_TX_TIMEOUT | IRQ_SYNCWORD_VALID,
IRQ_TX_DONE | IRQ_PREAMBLE_DETECTED | IRQ_RX_DONE
| IRQ_RX_TX_TIMEOUT | IRQ_SYNCWORD_VALID, IRQ_RADIO_NONE,
IRQ_RADIO_NONE);
//For TX
SUBGRF_SetRfFrequency(freq_update_uplink);
SUBGRF_SetSwitch(RFO_LP, RFSWITCH_TX);
SUBGRF_SendPayload(tx_buffer, tx_buffer_len, 0);
//For RX
SUBGRF_SetRfFrequency(freq_update_downlink);
SUBGRF_SetSwitch(RFO_LP, RFSWITCH_RX);
SUBGRF_SetRxBoosted(0xFFFFFF);
void DioIrqHndlr(RadioIrqMasks_t radioIrq) {
if (radioIrq == IRQ_TX_DONE) {
}
if (radioIrq == IRQ_RX_DONE) {
}
}
If any correction to be made please suggest..
And to execute CW is not possible by this process.. but correct working in HEX
Thank you!
Regards
We’re moving the ST Community to a new platform to give you a better and more reliable community experience.