From 79045ac77fb19a5bd719278460031e89eb2b73ba Mon Sep 17 00:00:00 2001 From: Stephan Fabry Date: Tue, 21 May 2024 14:45:55 +0200 Subject: [PATCH 1/2] variants(wl): added Support for ELV-BM-TRX1 Signed-off-by: Stephan Fabry Co-Authored-by: Frederic Pillon --- README.md | 7 + boards.txt | 78 +++++++ cmake/boards_db.cmake | 54 +++++ .../CMakeLists.txt | 1 + .../PeripheralPins_ELV_BM_TRX1.c | 176 +++++++++++++++ .../variant_ELV_BM_TRX1.cpp | 105 +++++++++ .../variant_ELV_BM_TRX1.h | 201 ++++++++++++++++++ 7 files changed, 622 insertions(+) create mode 100644 variants/STM32WLxx/WL54JCI_WL55JCI_WLE4J(8-B-C)I_WLE5J(8-B-C)I/PeripheralPins_ELV_BM_TRX1.c create mode 100644 variants/STM32WLxx/WL54JCI_WL55JCI_WLE4J(8-B-C)I_WLE5J(8-B-C)I/variant_ELV_BM_TRX1.cpp create mode 100644 variants/STM32WLxx/WL54JCI_WL55JCI_WLE4J(8-B-C)I_WLE5J(8-B-C)I/variant_ELV_BM_TRX1.h diff --git a/README.md b/README.md index 2d4a13cc9f..a0f494024d 100644 --- a/README.md +++ b/README.md @@ -84,6 +84,7 @@ User can add a STM32 based board following this [wiki](https://github.com/stm32d - [LoRa boards](#lora-boards) - [Midatronics boards](#midatronics-boards) - [SparkFun boards](#sparkfun-boards) + - [ELV Boards](#elv-boards) **Note about Status**: - :green_heart: board support is available since the specified release version. @@ -831,6 +832,12 @@ User can add a STM32 based board following this [wiki](https://github.com/stm32d | :green_heart: | STM32F405RG | [SparkFun MicroMod Processor Board - STM32F405](https://www.sparkfun.com/products/21326) | *2.6.0* | | | :green_heart: | STM32WB5MMG | [SparkFun MicroMod Processor Board - STM32WB5MMG](https://www.sparkfun.com/products/21438) | *2.6.0* | | +### [ELV Boards](https://de.elv.com/lorawan) + +| Status | Device(s) | Name | Release | Notes | +| :----: | :-------: | ---- | :-----: | :---- | +| :yellow_heart: | STM32WLE5JB | ELV-BM-TRX1 | **2.8.0** | | + ## Next release See [milestones](https://github.com/stm32duino/Arduino_Core_STM32/milestones) to have an overview of the next release content. diff --git a/boards.txt b/boards.txt index a7ec72b2a4..5176037595 100644 --- a/boards.txt +++ b/boards.txt @@ -11277,6 +11277,40 @@ SparkFun.menu.upload_method.dfuMethod.upload.protocol=2 SparkFun.menu.upload_method.dfuMethod.upload.options= SparkFun.menu.upload_method.dfuMethod.upload.tool=stm32CubeProg +################################################################################ +# ELV Modular System boards + +ELV_Modular_System.name=ELV Modular System boards +ELV_Modular_System.build.core=arduino +ELV_Modular_System.build.board=ELV_Modular_System +ELV_Modular_System.build.variant_h=variant_{build.board}.h +ELV_Modular_System.upload.maximum_size=0 +ELV_Modular_System.upload.maximum_data_size=0 + +# ELV-BM-TRX1 board +ELV_Modular_System.menu.pnum.ELV_BM_TRX1=ELV-LW-Base ELV_BM_TRX1 +ELV_Modular_System.menu.pnum.ELV_BM_TRX1.upload.maximum_size=129024 +ELV_Modular_System.menu.pnum.ELV_BM_TRX1.upload.maximum_data_size=49152 +ELV_Modular_System.menu.pnum.ELV_BM_TRX1.build.mcu=cortex-m4 +ELV_Modular_System.menu.pnum.ELV_BM_TRX1.build.board=ELV_BM_TRX1 +ELV_Modular_System.menu.pnum.ELV_BM_TRX1.build.series=STM32WLxx +ELV_Modular_System.menu.pnum.ELV_BM_TRX1.build.product_line=STM32WLE5xx +ELV_Modular_System.menu.pnum.ELV_BM_TRX1.build.variant=STM32WLxx/WL54JCI_WL55JCI_WLE4J(8-B-C)I_WLE5J(8-B-C)I +ELV_Modular_System.menu.pnum.ELV_BM_TRX1.build.peripheral_pins=-DCUSTOM_PERIPHERAL_PINS +ELV_Modular_System.menu.pnum.ELV_BM_TRX1.build.flash_offset=0x800 +ELV_Modular_System.menu.pnum.ELV_BM_TRX1.build.st_extra_flags=-D{build.product_line} -DUSE_CM4_STARTUP_FILE {build.xSerial} + +# Upload menu +ELV_Modular_System.menu.upload_method.swdMethod=STM32CubeProgrammer (SWD) with Bootloader +ELV_Modular_System.menu.upload_method.swdMethod.upload.protocol=0 +ELV_Modular_System.menu.upload_method.swdMethod.upload.tool=stm32CubeProg + + +ELV_Modular_System.menu.upload_method.serialMethod=STM32CubeProgrammer (Serial) with Bootloader +ELV_Modular_System.menu.upload_method.serialMethod.upload.protocol=1 +ELV_Modular_System.menu.upload_method.serialMethod.upload.options={serial.port.file} +ELV_Modular_System.menu.upload_method.serialMethod.upload.tool=stm32CubeProg + ################################################################################ # Serialx activation Nucleo_144.menu.xserial.generic=Enabled (generic 'Serial') @@ -11497,6 +11531,12 @@ SparkFun.menu.xserial.none.build.xSerial=-DHAL_UART_MODULE_ENABLED -DHWSERIAL_NO SparkFun.menu.xserial.disabled=Disabled (no Serial support) SparkFun.menu.xserial.disabled.build.xSerial= +ELV_Modular_System.menu.xserial.generic=Enabled (generic 'Serial') +ELV_Modular_System.menu.xserial.none=Enabled (no generic 'Serial') +ELV_Modular_System.menu.xserial.none.build.xSerial=-DHAL_UART_MODULE_ENABLED -DHWSERIAL_NONE +ELV_Modular_System.menu.xserial.disabled=Disabled (no Serial support) +ELV_Modular_System.menu.xserial.disabled.build.xSerial= + # USB connectivity Nucleo_144.menu.usb.none=None Nucleo_144.menu.usb.CDCgen=CDC (generic 'Serial' supersede U(S)ART) @@ -12547,6 +12587,26 @@ SparkFun.menu.opt.ogstd.build.flags.optimize=-Og SparkFun.menu.opt.o0std=No Optimization (-O0) SparkFun.menu.opt.o0std.build.flags.optimize=-O0 +ELV_Modular_System.menu.opt.osstd=Smallest (-Os default) +ELV_Modular_System.menu.opt.oslto=Smallest (-Os) with LTO +ELV_Modular_System.menu.opt.oslto.build.flags.optimize=-Os -flto +ELV_Modular_System.menu.opt.o1std=Fast (-O1) +ELV_Modular_System.menu.opt.o1std.build.flags.optimize=-O1 +ELV_Modular_System.menu.opt.o1lto=Fast (-O1) with LTO +ELV_Modular_System.menu.opt.o1lto.build.flags.optimize=-O1 -flto +ELV_Modular_System.menu.opt.o2std=Faster (-O2) +ELV_Modular_System.menu.opt.o2std.build.flags.optimize=-O2 +ELV_Modular_System.menu.opt.o2lto=Faster (-O2) with LTO +ELV_Modular_System.menu.opt.o2lto.build.flags.optimize=-O2 -flto +ELV_Modular_System.menu.opt.o3std=Fastest (-O3) +ELV_Modular_System.menu.opt.o3std.build.flags.optimize=-O3 +ELV_Modular_System.menu.opt.o3lto=Fastest (-O3) with LTO +ELV_Modular_System.menu.opt.o3lto.build.flags.optimize=-O3 -flto +ELV_Modular_System.menu.opt.ogstd=Debug (-Og) +ELV_Modular_System.menu.opt.ogstd.build.flags.optimize=-Og +ELV_Modular_System.menu.opt.o0std=No Optimization (-O0) +ELV_Modular_System.menu.opt.o0std.build.flags.optimize=-O0 + # Debug information Nucleo_144.menu.dbg.none=None Nucleo_144.menu.dbg.enable_sym=Symbols Enabled (-g) @@ -12816,6 +12876,14 @@ SparkFun.menu.dbg.enable_log.build.flags.debug= SparkFun.menu.dbg.enable_all=Core Logs and Symbols Enabled (-g) SparkFun.menu.dbg.enable_all.build.flags.debug=-g +ELV_Modular_System.menu.dbg.none=None +ELV_Modular_System.menu.dbg.enable_sym=Symbols Enabled (-g) +ELV_Modular_System.menu.dbg.enable_sym.build.flags.debug=-g -DNDEBUG +ELV_Modular_System.menu.dbg.enable_log=Core logs Enabled +ELV_Modular_System.menu.dbg.enable_log.build.flags.debug= +ELV_Modular_System.menu.dbg.enable_all=Core Logs and Symbols Enabled (-g) +ELV_Modular_System.menu.dbg.enable_all.build.flags.debug=-g + # C Runtime Library Nucleo_144.menu.rtlib.nano=Newlib Nano (default) Nucleo_144.menu.rtlib.nanofp=Newlib Nano + Float Printf @@ -13166,3 +13234,13 @@ SparkFun.menu.rtlib.nanofps=Newlib Nano + Float Printf/Scanf SparkFun.menu.rtlib.nanofps.build.flags.ldspecs=--specs=nano.specs -u _printf_float -u _scanf_float SparkFun.menu.rtlib.full=Newlib Standard SparkFun.menu.rtlib.full.build.flags.ldspecs= + +ELV_Modular_System.menu.rtlib.nano=Newlib Nano (default) +ELV_Modular_System.menu.rtlib.nanofp=Newlib Nano + Float Printf +ELV_Modular_System.menu.rtlib.nanofp.build.flags.ldspecs=--specs=nano.specs -u _printf_float +ELV_Modular_System.menu.rtlib.nanofs=Newlib Nano + Float Scanf +ELV_Modular_System.menu.rtlib.nanofs.build.flags.ldspecs=--specs=nano.specs -u _scanf_float +ELV_Modular_System.menu.rtlib.nanofps=Newlib Nano + Float Printf/Scanf +ELV_Modular_System.menu.rtlib.nanofps.build.flags.ldspecs=--specs=nano.specs -u _printf_float -u _scanf_float +ELV_Modular_System.menu.rtlib.full=Newlib Standard +ELV_Modular_System.menu.rtlib.full.build.flags.ldspecs= diff --git a/cmake/boards_db.cmake b/cmake/boards_db.cmake index ed27ecbb3d..6cf6b65092 100644 --- a/cmake/boards_db.cmake +++ b/cmake/boards_db.cmake @@ -5884,6 +5884,60 @@ target_compile_options(ELEKTOR_F072CB_serial_none INTERFACE "SHELL:-DHAL_UART_MODULE_ENABLED -DHWSERIAL_NONE" ) +# ELV_BM_TRX1 +# ----------------------------------------------------------------------------- + +set(ELV_BM_TRX1_VARIANT_PATH "${CMAKE_CURRENT_LIST_DIR}/../variants/STM32WLxx/WL54JCI_WL55JCI_WLE4J(8-B-C)I_WLE5J(8-B-C)I") +set(ELV_BM_TRX1_MAXSIZE 124927) +set(ELV_BM_TRX1_MAXDATASIZE 16383) +set(ELV_BM_TRX1_MCU cortex-m4) +set(ELV_BM_TRX1_FPCONF "-") +add_library(ELV_BM_TRX1 INTERFACE) +target_compile_options(ELV_BM_TRX1 INTERFACE + "SHELL:-DSTM32WLE5xx -DUSE_CM4_STARTUP_FILE " + "SHELL:" + "SHELL:" + "SHELL: " + -mcpu=${ELV_BM_TRX1_MCU} +) +target_compile_definitions(ELV_BM_TRX1 INTERFACE + "STM32WLxx" + "ARDUINO_ELV_BM_TRX1" + "BOARD_NAME=\"ELV_BM_TRX1\"" + "BOARD_ID=ELV_BM_TRX1" + "VARIANT_H=\"variant_ELV_BM_TRX1.h\"" +) +target_include_directories(ELV_BM_TRX1 INTERFACE + ${CMAKE_CURRENT_LIST_DIR}/../system/STM32WLxx + ${CMAKE_CURRENT_LIST_DIR}/../system/Drivers/STM32WLxx_HAL_Driver/Inc + ${CMAKE_CURRENT_LIST_DIR}/../system/Drivers/STM32WLxx_HAL_Driver/Src + ${CMAKE_CURRENT_LIST_DIR}/../system/Drivers/CMSIS/Device/ST/STM32WLxx/Include/ + ${CMAKE_CURRENT_LIST_DIR}/../system/Drivers/CMSIS/Device/ST/STM32WLxx/Source/Templates/gcc/ + ${ELV_BM_TRX1_VARIANT_PATH} +) + +target_link_options(ELV_BM_TRX1 INTERFACE + "LINKER:--default-script=${ELV_BM_TRX1_VARIANT_PATH}/ldscript.ld" + "LINKER:--defsym=LD_FLASH_OFFSET=0x0800" + "LINKER:--defsym=LD_MAX_SIZE=124927" + "LINKER:--defsym=LD_MAX_DATA_SIZE=16383" + "SHELL: " + -mcpu=${ELV_BM_TRX1_MCU} +) + +add_library(ELV_BM_TRX1_serial_disabled INTERFACE) +target_compile_options(ELV_BM_TRX1_serial_disabled INTERFACE + "SHELL:" +) +add_library(ELV_BM_TRX1_serial_generic INTERFACE) +target_compile_options(ELV_BM_TRX1_serial_generic INTERFACE + "SHELL:-DHAL_UART_MODULE_ENABLED" +) +add_library(ELV_BM_TRX1_serial_none INTERFACE) +target_compile_options(ELV_BM_TRX1_serial_none INTERFACE + "SHELL:-DHAL_UART_MODULE_ENABLED -DHWSERIAL_NONE" +) + # ETHERCAT_DUINO # ----------------------------------------------------------------------------- diff --git a/variants/STM32WLxx/WL54JCI_WL55JCI_WLE4J(8-B-C)I_WLE5J(8-B-C)I/CMakeLists.txt b/variants/STM32WLxx/WL54JCI_WL55JCI_WLE4J(8-B-C)I_WLE5J(8-B-C)I/CMakeLists.txt index b74b6b9dde..1bb69e4deb 100644 --- a/variants/STM32WLxx/WL54JCI_WL55JCI_WLE4J(8-B-C)I_WLE5J(8-B-C)I/CMakeLists.txt +++ b/variants/STM32WLxx/WL54JCI_WL55JCI_WLE4J(8-B-C)I_WLE5J(8-B-C)I/CMakeLists.txt @@ -22,6 +22,7 @@ add_library(variant_bin STATIC EXCLUDE_FROM_ALL generic_clock.c PeripheralPins.c PeripheralPins_LORA_E5_MINI.c + variant_ELV_BM_TRX1.cpp variant_generic.cpp variant_LORA_E5_MINI.cpp variant_NUCLEO_WL55JC1.cpp diff --git a/variants/STM32WLxx/WL54JCI_WL55JCI_WLE4J(8-B-C)I_WLE5J(8-B-C)I/PeripheralPins_ELV_BM_TRX1.c b/variants/STM32WLxx/WL54JCI_WL55JCI_WLE4J(8-B-C)I_WLE5J(8-B-C)I/PeripheralPins_ELV_BM_TRX1.c new file mode 100644 index 0000000000..78e45dd607 --- /dev/null +++ b/variants/STM32WLxx/WL54JCI_WL55JCI_WLE4J(8-B-C)I_WLE5J(8-B-C)I/PeripheralPins_ELV_BM_TRX1.c @@ -0,0 +1,176 @@ +/* + ******************************************************************************* + * Copyright (c) 2024, STMicroelectronics + * All rights reserved. + * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ******************************************************************************* + */ +/* + * Automatically generated from STM32WL54JCIx.xml, STM32WL55JCIx.xml + * STM32WLE4J8Ix.xml, STM32WLE4JBIx.xml + * STM32WLE4JCIx.xml, STM32WLE5J8Ix.xml + * STM32WLE5JBIx.xml, STM32WLE5JCIx.xml + * CubeMX DB release 6.0.100 + */ +#if defined(ARDUINO_ELV_BM_TRX1) +#include "Arduino.h" +#include "PeripheralPins.h" + +/* ===== + * Notes: + * - The pins mentioned Px_y_ALTz are alternative possibilities which use other + * HW peripheral instances. You can use them the same way as any other "normal" + * pin (i.e. analogWrite(PA7_ALT1, 128);). + * + * - Commented lines are alternative possibilities which are not used per default. + * If you change them, you will have to know what you do + * ===== + */ + +//*** ADC *** + +#ifdef HAL_ADC_MODULE_ENABLED +WEAK const PinMap PinMap_ADC[] = { + {PA_13, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 9, 0)}, // ADC_IN9 + {PA_14, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 10, 0)}, // ADC_IN10 + {PB_14, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 1, 0)}, // ADC_IN1 + {NC, NP, 0} +}; +#endif + +//*** DAC *** + +#ifdef HAL_DAC_MODULE_ENABLED +WEAK const PinMap PinMap_DAC[] = { + {PA_10, DAC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 1, 0)}, // DAC_OUT1 + {NC, NP, 0} +}; +#endif + +//*** I2C *** + +#ifdef HAL_I2C_MODULE_ENABLED +WEAK const PinMap PinMap_I2C_SDA[] = { + {PA_11, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)}, + {PA_15, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)}, + {PB_14, I2C3, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C3)}, + {NC, NP, 0} +}; +#endif + +#ifdef HAL_I2C_MODULE_ENABLED +WEAK const PinMap PinMap_I2C_SCL[] = { + {PA_7, I2C3, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C3)}, + {PA_12, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)}, + {NC, NP, 0} +}; +#endif + +//*** No I3C *** + +//*** TIM *** + +#ifdef HAL_TIM_MODULE_ENABLED +WEAK const PinMap PinMap_TIM[] = { + {PA_2, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 3, 0)}, // TIM2_CH3 + {PA_3, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 4, 0)}, // TIM2_CH4 + {PA_5, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 1, 0)}, // TIM2_CH1 + {PA_6, TIM16, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF14_TIM16, 1, 0)}, // TIM16_CH1 + {PA_7, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 1, 1)}, // TIM1_CH1N + {PA_7_ALT1, TIM17, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF14_TIM17, 1, 0)}, // TIM17_CH1 + {PA_11, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 4, 0)}, // TIM1_CH4 + {PB_3, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 2, 0)}, // TIM2_CH2 + {PB_14, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 2, 1)}, // TIM1_CH2N + {NC, NP, 0} +}; +#endif + +//*** UART *** + +#ifdef HAL_UART_MODULE_ENABLED +WEAK const PinMap PinMap_UART_TX[] = { + {PA_2, LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_LPUART1)}, + {PA_2_ALT1, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, + {PA_9, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, + {NC, NP, 0} +}; +#endif + +#ifdef HAL_UART_MODULE_ENABLED +WEAK const PinMap PinMap_UART_RX[] = { + {PA_3, LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_LPUART1)}, + {PA_3_ALT1, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, + {PA_10, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, + {NC, NP, 0} +}; +#endif + +#ifdef HAL_UART_MODULE_ENABLED +WEAK const PinMap PinMap_UART_RTS[] = { + {PA_12, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, + {PB_3, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, + {PB_12, LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_LPUART1)}, + {NC, NP, 0} +}; +#endif + +#ifdef HAL_UART_MODULE_ENABLED +WEAK const PinMap PinMap_UART_CTS[] = { + {PA_6, LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_LPUART1)}, + {PA_11, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, + {NC, NP, 0} +}; +#endif + +//*** SPI *** + +#ifdef HAL_SPI_MODULE_ENABLED +WEAK const PinMap PinMap_SPI_MOSI[] = { + {PA_7, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, + {PA_7_ALT1, SUBGHZSPI, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF13_DEBUG_SUBGHZSPI)}, + {PA_12, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, + {NC, NP, 0} +}; +#endif + +#ifdef HAL_SPI_MODULE_ENABLED +WEAK const PinMap PinMap_SPI_MISO[] = { + {PA_6, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, + {PA_6_ALT1, SUBGHZSPI, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF13_DEBUG_SUBGHZSPI)}, + {PA_11, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, + {NC, NP, 0} +}; +#endif + +#ifdef HAL_SPI_MODULE_ENABLED +WEAK const PinMap PinMap_SPI_SCLK[] = { + {PA_5, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, + {PA_5_ALT1, SUBGHZSPI, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF13_DEBUG_SUBGHZSPI)}, + {NC, NP, 0} +}; +#endif + +#ifdef HAL_SPI_MODULE_ENABLED +WEAK const PinMap PinMap_SPI_SSEL[] = { + {PA_4, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, + {PA_4_ALT1, SUBGHZSPI, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF13_DEBUG_SUBGHZSPI)}, + {NC, NP, 0} +}; +#endif + +//*** No CAN *** + +//*** No ETHERNET *** + +//*** No QUADSPI *** + +//*** No USB *** + +//*** No SD *** + +#endif /* ARDUINO_ELV_BM_TRX1 */ diff --git a/variants/STM32WLxx/WL54JCI_WL55JCI_WLE4J(8-B-C)I_WLE5J(8-B-C)I/variant_ELV_BM_TRX1.cpp b/variants/STM32WLxx/WL54JCI_WL55JCI_WLE4J(8-B-C)I_WLE5J(8-B-C)I/variant_ELV_BM_TRX1.cpp new file mode 100644 index 0000000000..427f118333 --- /dev/null +++ b/variants/STM32WLxx/WL54JCI_WL55JCI_WLE4J(8-B-C)I_WLE5J(8-B-C)I/variant_ELV_BM_TRX1.cpp @@ -0,0 +1,105 @@ +/* + ******************************************************************************* + * Copyright (c) 2024, STMicroelectronics + * All rights reserved. + * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ******************************************************************************* + */ +#if defined(ARDUINO_ELV_BM_TRX1) +#include "pins_arduino.h" +// Digital PinName array +const PinName digitalPin[] = { + NC, // D0 + PB_12, // D1 + PA_0, // D2 + PB_14, // D3/A0 + PC_13, // D4 + PA_9, // D5 + PA_10, // D6 + PA_11, // D7 + PA_12, // D8 + NC, // D9 + NC, // D10 + NC, // D11 + NC, // D12 + NC, // D13 + NC, // D14 + NC, // D15 + NC, // D16 + PA_14, // D17/A2 + PA_13, // D18/A3 + PA_2, // D19 + PA_3, // D20 + PA_4, // D21 + PA_5, // D22 + PA_6, // D23 + PA_7, // D24 + PA_15, // D25 + PB_3, // D26 + PC_4, // D27 + PC_5 // D28 +}; + +// Analog (Ax) pin number array +const uint32_t analogInputPin[] = { + 3, // A0, PB14 + 11, // A1, PA14 + 12 // A2, PA13 +}; + +// ---------------------------------------------------------------------------- +#ifdef __cplusplus +extern "C" { +#endif + +/* + * @brief System Clock Configuration + * @param None + * @retval None + */ +WEAK void SystemClock_Config(void) +{ + RCC_OscInitTypeDef RCC_OscInitStruct = {}; + RCC_ClkInitTypeDef RCC_ClkInitStruct = {}; + /* Configure the main internal regulator output voltage*/ + + __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); + + /* Initializes the CPU, AHB and APB busses clocks*/ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; + RCC_OscInitStruct.HSEState = RCC_HSE_ON; + RCC_OscInitStruct.HSEDiv = RCC_HSE_DIV1; + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; + RCC_OscInitStruct.PLL.PLLM = RCC_PLLM_DIV2; + RCC_OscInitStruct.PLL.PLLN = 6; + RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; + RCC_OscInitStruct.PLL.PLLR = RCC_PLLR_DIV2; + RCC_OscInitStruct.PLL.PLLQ = RCC_PLLQ_DIV2; + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) { + Error_Handler(); + } + /* Configure the SYSCLKSource, HCLK, PCLK1 and PCLK2 clocks dividers*/ + + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK3 | RCC_CLOCKTYPE_HCLK + | RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_PCLK1 + | RCC_CLOCKTYPE_PCLK2; + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_MSI; + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; + RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; + RCC_ClkInitStruct.AHBCLK3Divider = RCC_SYSCLK_DIV1; + + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) { + Error_Handler(); + } +} +#ifdef __cplusplus +} +#endif +#endif /* ARDUINO_ELV_BM_TRX1 */ diff --git a/variants/STM32WLxx/WL54JCI_WL55JCI_WLE4J(8-B-C)I_WLE5J(8-B-C)I/variant_ELV_BM_TRX1.h b/variants/STM32WLxx/WL54JCI_WL55JCI_WLE4J(8-B-C)I_WLE5J(8-B-C)I/variant_ELV_BM_TRX1.h new file mode 100644 index 0000000000..fa13e9d1fb --- /dev/null +++ b/variants/STM32WLxx/WL54JCI_WL55JCI_WLE4J(8-B-C)I_WLE5J(8-B-C)I/variant_ELV_BM_TRX1.h @@ -0,0 +1,201 @@ +/* + ******************************************************************************* + * Copyright (c) 2024, STMicroelectronics + * All rights reserved. + * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ******************************************************************************* + */ +#pragma once + +/*---------------------------------------------------------------------------- + * STM32 pins number + *----------------------------------------------------------------------------*/ + +// J2 +#define PB12 1 +#define PA0 2 +#define PB14 PIN_A0 +#define PC13 4 +#define PA9 5 +#define PA10 6 +#define PA11 7 +#define PA12 8 +// J1 +#define PA14 PIN_A1 +#define PA13 PIN_A2 +#define PA2 19 +#define PA3 20 +#define PA4 21 +#define PA5 22 +#define PA6 23 +#define PA7 24 +// Not on connectors +#define PA15 25 +#define PB3 26 +#define PC4 27 +#define PC5 28 + +// Not connected +// PA1 +// PA8 +// PB0 +// PB1 +// PB2 +// PB4 +// PB5 +// PB6 +// PB7 +// PB8 +// PB9 +// PB10 +// PB11 +// PB13 +// PB15 +// PC0 +// PC1 +// PC2 +// PC3 +// PC6 +// PC14 +// PC15 +// PH3 + +// Alternate pins number +#define PA2_ALT1 (PA2 | ALT1) +#define PA3_ALT1 (PA3 | ALT1) +#define PA4_ALT1 (PA4 | ALT1) +#define PA5_ALT1 (PA5 | ALT1) +#define PA6_ALT1 (PA6 | ALT1) +#define PA7_ALT1 (PA7 | ALT1) + +#define NUM_DIGITAL_PINS 29 +#define NUM_ANALOG_INPUTS 3 + +// On-board LED pin number +#define LED1 PB3 +#define LED2 PA15 +#ifndef LED_BUILTIN + #define LED_BUILTIN LED1 +#endif +#define LED_GREEN LED1 +#define LED_RED LED2 + +// On-board user button +#ifndef USER_BTN + #define USER_BTN PA0 +#endif + +// SPI definitions +#ifndef PIN_SPI_SS + #define PIN_SPI_SS PA4 +#endif +#ifndef PIN_SPI_SS1 + #define PIN_SPI_SS1 PNUM_NOT_DEFINED +#endif +#ifndef PIN_SPI_SS2 + #define PIN_SPI_SS2 PNUM_NOT_DEFINED +#endif +#ifndef PIN_SPI_SS3 + #define PIN_SPI_SS3 PNUM_NOT_DEFINED +#endif +#ifndef PIN_SPI_MOSI + #define PIN_SPI_MOSI PA7 +#endif +#ifndef PIN_SPI_MISO + #define PIN_SPI_MISO PA6 +#endif +#ifndef PIN_SPI_SCK + #define PIN_SPI_SCK PA5 +#endif + +// I2C definitions +#ifndef PIN_WIRE_SDA + #define PIN_WIRE_SDA PA11 +#endif +#ifndef PIN_WIRE_SCL + #define PIN_WIRE_SCL PA12 +#endif + +// Timer Definitions +// Use TIM6/TIM7 when possible as servo and tone don't need GPIO output pin +#ifndef TIMER_TONE + #define TIMER_TONE TIM16 +#endif +#ifndef TIMER_SERVO + #define TIMER_SERVO TIM17 +#endif + +// UART Definitions +#ifndef SERIAL_UART_INSTANCE + #define SERIAL_UART_INSTANCE 1 +#endif + +// Default pin used for generic 'Serial' instance +// Mandatory for Firmata +#ifndef PIN_SERIAL_RX + #define PIN_SERIAL_RX PA10 +#endif +#ifndef PIN_SERIAL_TX + #define PIN_SERIAL_TX PA9 +#endif + +// Alias +#ifndef DEBUG_SUBGHZSPI_MOSI + #define DEBUG_SUBGHZSPI_MOSI PA7_ALT1 +#endif +#ifndef DEBUG_SUBGHZSPI_MISO + #define DEBUG_SUBGHZSPI_MISO PA6_ALT1 +#endif +#ifndef DEBUG_SUBGHZSPI_SCLK + #define DEBUG_SUBGHZSPI_SCLK PA5_ALT1 +#endif +#ifndef DEBUG_SUBGHZSPI_SS + #define DEBUG_SUBGHZSPI_SS PA4_ALT1 +#endif + +// LORAWAN settings +#define LORAWAN_RFSWITCH_PINS PC4,PC5 +#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 HIGH,HIGH +#define LORAWAN_RFSWITCH_RFO_HP_VALUES LOW,HIGH +#define XTAL_DEFAULT_CAP_VALUE ( 0x14UL ) +#define LORAWAN_BOARD_HAS_TCXO 0 +#define LORAWAN_BOARD_HAS_DCDC 1 +#define LORAWAN_TX_CONFIG RBI_CONF_RFO_LP +#define EU868_TX_MAX_DATARATE DR_5 +#define EU868_RX_MAX_DATARATE DR_5 +#define EU868_DEFAULT_ANTENNA_GAIN 2.0f +/*---------------------------------------------------------------------------- + * Arduino objects - C++ only + *----------------------------------------------------------------------------*/ + +#ifdef __cplusplus + // These serial port names are intended to allow libraries and architecture-neutral + // sketches to automatically default to the correct port name for a particular type + // of use. For example, a GPS module would normally connect to SERIAL_PORT_HARDWARE_OPEN, + // the first hardware serial port whose RX/TX pins are not dedicated to another use. + // + // SERIAL_PORT_MONITOR Port which normally prints to the Arduino Serial Monitor + // + // SERIAL_PORT_USBVIRTUAL Port which is USB virtual serial + // + // SERIAL_PORT_LINUXBRIDGE Port which connects to a Linux system via Bridge library + // + // SERIAL_PORT_HARDWARE Hardware serial port, physical RX & TX pins. + // + // SERIAL_PORT_HARDWARE_OPEN Hardware serial ports which are open for use. Their RX & TX + // pins are NOT connected to anything by default. + #ifndef SERIAL_PORT_MONITOR + #define SERIAL_PORT_MONITOR Serial + #endif + #ifndef SERIAL_PORT_HARDWARE + #define SERIAL_PORT_HARDWARE Serial + #endif +#endif From 49caa994829dd0e772e3fd09f581f79b23b335bd Mon Sep 17 00:00:00 2001 From: Frederic Pillon Date: Thu, 23 May 2024 16:29:44 +0200 Subject: [PATCH 2/2] ci: skip elv.com Signed-off-by: Frederic Pillon --- .github/workflows/MarkdwonLinksCheck.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/MarkdwonLinksCheck.yml b/.github/workflows/MarkdwonLinksCheck.yml index e2199eb47f..c68646ef78 100644 --- a/.github/workflows/MarkdwonLinksCheck.yml +++ b/.github/workflows/MarkdwonLinksCheck.yml @@ -20,4 +20,4 @@ jobs: with: paths: '*.md ./CI/**/*.md, ./variants/**/*.md, ./libraries/**/*.md' verbosity: 'INFO' - skip: 'www.st.com' + linksToSkip: 'www.st.com, de.elv.com/lorawan' pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy