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