stm32duino / STM32LoRaWAN

Arduino library to support LoRaWAN communication using the STM32WL series.
https://stm32duino.github.io/STM32LoRaWAN/
Other
37 stars 7 forks source link

RAK3172 "WLE5CCU6" #7

Closed Lizethgm closed 1 year ago

Lizethgm commented 1 year ago

Hi, I managed to run your library with rak3172 For this I modified these parts:

In STM32LoRaWAN-main\src\BSP\radio_board_if.c

// Is a TCXO present on the board?
#if !defined(LORAWAN_BOARD_HAS_TCXO)
  #define LORAWAN_BOARD_HAS_TCXO 0U
#endif

  #if !defined(LORAWAN_RFSWITCH_PINS)
  #define LORAWAN_RFSWITCH_PINS PB8,PC13
  #define LORAWAN_RFSWITCH_PIN_COUNT 2
  #define LORAWAN_RFSWITCH_OFF_VALUES LOW,LOW
  #define LORAWAN_RFSWITCH_RX_VALUES HIGH,LOW
  #define LORAWAN_RFSWITCH_RFO_LP_VALUES LOW,HIGH
  #define LORAWAN_RFSWITCH_RFO_HP_VALUES LOW,HIGH

In STM32LoRaWAN-main\src\BSP\rtc.c

 hrtc.Instance = RTC;
  hrtc.Init.AsynchPrediv = 127;
  hrtc.Init.SynchPrediv = 255;
  hrtc.Init.OutPut = RTC_OUTPUT_DISABLE;
  hrtc.Init.OutPutRemap = RTC_OUTPUT_REMAP_NONE;
  hrtc.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH;
  hrtc.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN;
  hrtc.Init.OutPutPullUp = RTC_OUTPUT_PULLUP_NONE;
  hrtc.Init.BinMode = RTC_BINARY_ONLY;

How could I add this to your library without having to modify it, which is what I had to do?

Also I tested your library as you had it in the beginning for the NUCLEO-WLE55JC1 board and everything worked correctly, I also tested it with the US915 and it still worked fine.

fpistm commented 1 year ago

Hi,

I guess the simpliest way would be in the src\BSP\radio_board_if.c to define config between board definition:

#if !defined(LORAWAN_BOARD_HAS_TCXO)
#if defined(NUCLEO_WL55JC1)
  #define LORAWAN_BOARD_HAS_TCXO 1U
#elif defined(GENERIC_WL55CCUX) /* <-- or defined the RAK3172 variant in the core? */
  #define LORAWAN_BOARD_HAS_TCXO 0U
#endif
#endif

For RTC, default config is not correct?

Lizethgm commented 1 year ago

Oh, thanks, I will try to do that

No, the rtc of the RAK3172 has two distinct things which are: hrtc.Init.AsynchPrediv = 127; hrtc.Init.SynchPrediv = 255;

Lizethgm commented 1 year ago

Hi Yes it worked, I put it this way to make it work: In STM32LoRaWAN-main\src\BSP\radio_board_if.c

#if !defined(LORAWAN_BOARD_HAS_TCXO)
 #if defined(ARDUINO_NUCLEO_WL55JC1)  
  #define LORAWAN_BOARD_HAS_TCXO 1U

#elif defined(ARDUINO_GENERIC_WLE5CCUX) 
  #define LORAWAN_BOARD_HAS_TCXO 0U
#endif
#endif

#if !defined(LORAWAN_RFSWITCH_PINS)
  #if defined(ARDUINO_NUCLEO_WL55JC1)
  #define LORAWAN_RFSWITCH_PINS PC3,PC4,PC5
  #define LORAWAN_RFSWITCH_PIN_COUNT 3
  #define LORAWAN_RFSWITCH_OFF_VALUES LOW,LOW,LOW
  #define LORAWAN_RFSWITCH_RX_VALUES HIGH,HIGH,LOW
  #define LORAWAN_RFSWITCH_RFO_LP_VALUES HIGH,HIGH,HIGH
  #define LORAWAN_RFSWITCH_RFO_HP_VALUES HIGH,LOW,HIGH

#elif defined(ARDUINO_GENERIC_WLE5CCUX) 
  #define LORAWAN_RFSWITCH_PINS PB8,PC13
  #define LORAWAN_RFSWITCH_PIN_COUNT 2
  #define LORAWAN_RFSWITCH_OFF_VALUES LOW,LOW
  #define LORAWAN_RFSWITCH_RX_VALUES HIGH,LOW
  #define LORAWAN_RFSWITCH_RFO_LP_VALUES LOW,HIGH
  #define LORAWAN_RFSWITCH_RFO_HP_VALUES LOW,HIGH
#endif
#endif

In STM32LoRaWAN-main\src\BSP\rtc.c

#if defined(ARDUINO_NUCLEO_WL55JC1)
  hrtc.Instance = RTC;
  hrtc.Init.AsynchPrediv = RTC_PREDIV_A;
  hrtc.Init.OutPut = RTC_OUTPUT_DISABLE;
  hrtc.Init.OutPutRemap = RTC_OUTPUT_REMAP_NONE;
  hrtc.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH;
  hrtc.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN;
  hrtc.Init.OutPutPullUp = RTC_OUTPUT_PULLUP_NONE;
  hrtc.Init.BinMode = RTC_BINARY_ONLY;

#elif defined(ARDUINO_GENERIC_WLE5CCUX) 
  hrtc.Instance = RTC;
  hrtc.Init.AsynchPrediv = 127;
  hrtc.Init.SynchPrediv = 255;
  hrtc.Init.OutPut = RTC_OUTPUT_DISABLE;
  hrtc.Init.OutPutRemap = RTC_OUTPUT_REMAP_NONE;
  hrtc.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH;
  hrtc.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN;
  hrtc.Init.OutPutPullUp = RTC_OUTPUT_PULLUP_NONE;
  hrtc.Init.BinMode = RTC_BINARY_ONLY;
  #endif
tcpipchip commented 1 year ago

@Lizethgm I am tryng to execute the AT/Arduino of RAK (RUI) on STM32WL55JC, but i am getting always JOIN TXD TIMEOUT...looks that the problem is some wrong RF SWITCH GPIO selected by me... Can you give a tip ? @fpistm Congratulations! I will test in our South Korean LoRaWAN module :)

tcpipchip commented 1 year ago

I did now a blog using your STM32 LoRaWAN https://lom204-cli-wisol.blogspot.com/2023/02/o-objetivo-deste-blog-e-demonstrar-como.html

fpistm commented 1 year ago

Hi @Lizethgm the good way to support the RAK3172 is to add the variant to the core. It seems there is 3 variants:

tcpipchip commented 1 year ago

And implement low power mode

fpistm commented 1 year ago

Part of another issue #9

fpistm commented 1 year ago

@Lizethgm , @tcpipchip which RAK3172 you got?

fpistm commented 1 year ago

Note that RAK provides Arduino support: https://github.com/RAKWireless/RAKwireless-Arduino-BSP-Index

tcpipchip commented 1 year ago

I dont have the RAK, i have the WISOL module... I ported the RAK Arduino Code to run on WISOL. But...it´s compatible,

Oliv4945 commented 1 year ago

Note that RAK provides Arduino support: https://github.com/RAKWireless/RAKwireless-Arduino-BSP-Index

Actually the RAK3172 Arduino support provided by RAK is only for RUI3 (RAK UI), which mean using a closed source library blob from RAK, it is not "low level" like what stm32duino is doing.

As per my understanding:

So what is your advice on the integration @fpistm ? Add custom code under ARDUINO_RAK3172_MODULE, ARDUINO_RAK3172_SIP and ARDUINO_RAK3172LP_SIP ? Or add common definition under ARDUINO_RAK3172 and only the RF switch config under dedicated defines?

Thanks

fpistm commented 1 year ago

I guess adding ARDUINO_RAK3172is the simpliest way and define correct RF definition for each sub-variant.

tcpipchip commented 1 year ago

add too the LSM110A :) i use this parameters to work with him image

fpistm commented 1 year ago

Added to the new variant request list: https://github.com/stm32duino/Arduino_Core_STM32/issues/722 I close this one as when variants added to the core with dedicated RF definitions, they will be supported.