Closed Nikitanagar closed 4 weeks ago
In what way is this different than the topic #1186 that you have already started? There is a question and suggestion by @jgromes there that may help you and us. Just posting your code without any additional information here doesn't help us to help you. Please refer to https://github.com/jgromes/RadioLib/discussions/1186#discussioncomment-10326647.
I am working on LoRa-E5 mini. And testing the example STM32WLx_Transmit_Interrupt, STM32WLx_Receive_Interrupt. STM32WLx_Transmit_Interrupt code is working fine but STM32WLx_Receive_Interrupt is not showing any output after [STM32WL] Initializing .... Here is the modified code:
Code for transmitting: ` /* RadioLib STM32WLx Transmit with Interrupts Example
This example transmits LoRa packets with one second delays between them. Each packet contains up to 256 bytes of data, in the form of:
*/
// include the library
include
// no need to configure pins, signals are routed to the radio internally STM32WLx radio = new STM32WLx_Module();
// set RF switch configuration for Nucleo WL55JC1 // NOTE: other boards may be different! // Some boards may not have either LP or HP. // For those, do not set the LP/HP entry in the table. static const uint32_t rfswitch_pins[] = {PA4, PA5, RADIOLIB_NC, RADIOLIB_NC, RADIOLIB_NC}; static const Module::RfSwitchMode_t rfswitch_table[] = { {STM32WLx::MODE_IDLE, {LOW, LOW}}, {STM32WLx::MODE_RX, {HIGH, LOW}}, // {STM32WLx::MODE_TX_LP, {HIGH, HIGH, HIGH}}, {STM32WLx::MODE_TX_HP, {LOW, HIGH}}, END_OF_MODE_TABLE, };
// save transmission state between loops int transmissionState = RADIOLIB_ERR_NONE;
void setup() { Serial.begin(9600);
// set RF switch control configuration // this has to be done prior to calling begin() radio.setRfSwitchTable(rfswitch_pins, rfswitch_table);
// initialize STM32WL with default settings, except frequency Serial.print(F("[STM32WL] Initializing ... ")); int state = radio.begin(868.0); if (state == RADIOLIB_ERR_NONE) { Serial.println(F("success!")); } else { Serial.print(F("failed, code ")); Serial.println(state); while (true); }
// set appropriate TCXO voltage for Nucleo WL55JC1 state = radio.setTCXO(1.7); if (state == RADIOLIB_ERR_NONE) { Serial.println(F("success!")); } else { Serial.print(F("failed, code ")); Serial.println(state); while (true); }
// set the function that will be called // when packet transmission is finished radio.setDio1Action(setFlag);
// start transmitting the first packet Serial.print(F("[STM32WL] Sending first packet ... "));
// you can transmit C-string or Arduino string up to // 256 characters long transmissionState = radio.startTransmit("Hello World!"); Serial.print("transmission: "); Serial.print(transmissionState);
// you can also transmit byte array up to 256 bytes long / byte byteArr[] = {0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF}; state = radio.startTransmit(byteArr, 8); / }
// flag to indicate that a packet was sent volatile bool transmittedFlag = false;
// this function is called when a complete packet // is transmitted by the module // IMPORTANT: this function MUST be 'void' type // and MUST NOT have any arguments! void setFlag(void) { // we sent a packet, set the flag transmittedFlag = true; }
// counter to keep track of transmitted packets int count = 0;
void loop() { // check if the previous transmission finished if(transmittedFlag) { // reset flag transmittedFlag = false;
} } `
Code for receiving:
`/* RadioLib STM32WLx Receive with Interrupts Example
This example listens for LoRa transmissions and tries to receive them. Once a packet is received, an interrupt is triggered. To successfully receive data, the following settings have to be the same on both transmitter and receiver:
sync word
This example assumes Nucleo WL55JC1 is used. For other Nucleo boards or standalone STM32WL, some configuration such as TCXO voltage and RF switch control may have to be adjusted.
*/
// include the library
include
// no need to configure pins, signals are routed to the radio internally STM32WLx radio = new STM32WLx_Module();
// set RF switch configuration for Nucleo WL55JC1 // NOTE: other boards may be different! // Some boards may not have either LP or HP. // For those, do not set the LP/HP entry in the table. static const uint32_t rfswitch_pins[] = {PA4, PA5, RADIOLIB_NC, RADIOLIB_NC, RADIOLIB_NC}; static const Module::RfSwitchMode_t rfswitch_table[] = { {STM32WLx::MODE_IDLE, {LOW, LOW}}, {STM32WLx::MODE_RX, {HIGH, LOW}}, // {STM32WLx::MODE_TX_LP, {HIGH, HIGH, HIGH}}, {STM32WLx::MODE_TX_HP, {LOW, HIGH}}, END_OF_MODE_TABLE, };
void setup() { Serial.begin(9600);
// set RF switch control configuration // this has to be done prior to calling begin() radio.setRfSwitchTable(rfswitch_pins, rfswitch_table);
// initialize STM32WL with default settings, except frequency Serial.print(F("[STM32WL] Initializing ... ")); int state = radio.begin(868.0); if (state == RADIOLIB_ERR_NONE) { Serial.println(F("success!")); } else { Serial.print(F("failed, code ")); Serial.println(state); while (true); }
// set appropriate TCXO voltage for Nucleo WL55JC1 state = radio.setTCXO(1.7); if (state == RADIOLIB_ERR_NONE) { Serial.println(F("success!")); } else { Serial.print(F("failed, code ")); Serial.println(state); while (true); }
// set the function that will be called // when new packet is received radio.setDio1Action(setFlag);
// start listening for LoRa packets Serial.print(F("[STM32WL] Starting to listen ... ")); state = radio.startReceive(); if (state == RADIOLIB_ERR_NONE) { Serial.println(F("success!")); } else { Serial.print(F("failed, code ")); Serial.println(state); while (true); }
// if needed, 'listen' mode can be disabled by calling // any of the following methods: // // radio.standby() // radio.sleep() // radio.transmit(); // radio.receive(); // radio.readData(); // radio.scanChannel(); }
// flag to indicate that a packet was received volatile bool receivedFlag = false;
// this function is called when a complete packet // is received by the module // IMPORTANT: this function MUST be 'void' type // and MUST NOT have any arguments! void setFlag(void) { // we got a packet, set the flag receivedFlag = true; }
void loop() { // check if the flag is set if(receivedFlag) { // reset flag receivedFlag = false;
} }
` Please assist me.. Thank you for your help