Skip to content

Commit 6ae3dd4

Browse files
Stephan Fabryfpistm
Stephan Fabry
authored andcommitted
variants(wl): added Support for ELV-BM-TRX1
Signed-off-by: Stephan Fabry <[email protected]>
1 parent 0e9d108 commit 6ae3dd4

File tree

5 files changed

+411
-0
lines changed

5 files changed

+411
-0
lines changed

README.md

+7
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ User can add a STM32 based board following this [wiki](https://github.com/stm32d
8484
- [LoRa boards](#lora-boards)
8585
- [Midatronics boards](#midatronics-boards)
8686
- [SparkFun boards](#sparkfun-boards)
87+
- [ELV Boards](#elv-boards)
8788

8889
**Note about Status**:
8990
- :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
831832
| :green_heart: | STM32F405RG | [SparkFun MicroMod Processor Board - STM32F405](https://www.sparkfun.com/products/21326) | *2.6.0* | |
832833
| :green_heart: | STM32WB5MMG | [SparkFun MicroMod Processor Board - STM32WB5MMG](https://www.sparkfun.com/products/21438) | *2.6.0* | |
833834

835+
### [ELV Boards](https://de.elv.com/lorawan)
836+
837+
| Status | Device(s) | Name | Release | Notes |
838+
| :----: | :-------: | ---- | :-----: | :---- |
839+
| :yellow_heart: | STM32WLE5JB | ELV-BM-TRX1 | **2.8.0** | |
840+
834841
## Next release
835842

836843
See [milestones](https://github.com/stm32duino/Arduino_Core_STM32/milestones) to have an overview of the next release content.

boards.txt

+78
Original file line numberDiff line numberDiff line change
@@ -11277,6 +11277,40 @@ SparkFun.menu.upload_method.dfuMethod.upload.protocol=2
1127711277
SparkFun.menu.upload_method.dfuMethod.upload.options=
1127811278
SparkFun.menu.upload_method.dfuMethod.upload.tool=stm32CubeProg
1127911279

11280+
################################################################################
11281+
# ELV Modular System boards
11282+
11283+
ELV_Modular_System.name=ELV Modular System boards
11284+
ELV_Modular_System.build.core=arduino
11285+
ELV_Modular_System.build.board=ELV_Modular_System
11286+
ELV_Modular_System.build.variant_h=variant_{build.board}.h
11287+
ELV_Modular_System.upload.maximum_size=0
11288+
ELV_Modular_System.upload.maximum_data_size=0
11289+
11290+
# ELV-BM-TRX1 board
11291+
ELV_Modular_System.menu.pnum.ELV_BM_TRX1=ELV-LW-Base ELV_BM_TRX1
11292+
ELV_Modular_System.menu.pnum.ELV_BM_TRX1.upload.maximum_size=124927
11293+
ELV_Modular_System.menu.pnum.ELV_BM_TRX1.upload.maximum_data_size=16383
11294+
ELV_Modular_System.menu.pnum.ELV_BM_TRX1.build.mcu=cortex-m4
11295+
ELV_Modular_System.menu.pnum.ELV_BM_TRX1.build.board=ELV_BM_TRX1
11296+
ELV_Modular_System.menu.pnum.ELV_BM_TRX1.build.series=STM32WLxx
11297+
ELV_Modular_System.menu.pnum.ELV_BM_TRX1.build.product_line=STM32WLE5xx
11298+
ELV_Modular_System.menu.pnum.ELV_BM_TRX1.build.variant=STM32WLxx/WL54JCI_WL55JCI_WLE4J(8-B-C)I_WLE5J(8-B-C)I
11299+
ELV_Modular_System.menu.pnum.ELV_BM_TRX1.build.variant_h=variant_ELV_BM_TRX1.h
11300+
ELV_Modular_System.menu.pnum.ELV_BM_TRX1.build.flash_offset=0x800
11301+
ELV_Modular_System.menu.pnum.ELV_BM_TRX1.build.st_extra_flags=-D{build.product_line} -DUSE_CM4_STARTUP_FILE {build.xSerial}
11302+
11303+
# Upload menu
11304+
ELV_Modular_System.menu.upload_method.swdMethod=STM32CubeProgrammer (SWD) with Bootloader
11305+
ELV_Modular_System.menu.upload_method.swdMethod.upload.protocol=0
11306+
ELV_Modular_System.menu.upload_method.swdMethod.upload.tool=stm32CubeProg
11307+
11308+
11309+
ELV_Modular_System.menu.upload_method.serialMethod=STM32CubeProgrammer (Serial) with Bootloader
11310+
ELV_Modular_System.menu.upload_method.serialMethod.upload.protocol=1
11311+
ELV_Modular_System.menu.upload_method.serialMethod.upload.options={serial.port.file}
11312+
ELV_Modular_System.menu.upload_method.serialMethod.upload.tool=stm32CubeProg
11313+
1128011314
################################################################################
1128111315
# Serialx activation
1128211316
Nucleo_144.menu.xserial.generic=Enabled (generic 'Serial')
@@ -11497,6 +11531,12 @@ SparkFun.menu.xserial.none.build.xSerial=-DHAL_UART_MODULE_ENABLED -DHWSERIAL_NO
1149711531
SparkFun.menu.xserial.disabled=Disabled (no Serial support)
1149811532
SparkFun.menu.xserial.disabled.build.xSerial=
1149911533

11534+
ELV_Modular_System.xserial.generic=Enabled (generic 'Serial')
11535+
ELV_Modular_System.xserial.none=Enabled (no generic 'Serial')
11536+
ELV_Modular_System.xserial.none.build.xSerial=-DHAL_UART_MODULE_ENABLED -DHWSERIAL_NONE
11537+
ELV_Modular_System.xserial.disabled=Disabled (no Serial support)
11538+
ELV_Modular_System.xserial.disabled.build.xSerial=
11539+
1150011540
# USB connectivity
1150111541
Nucleo_144.menu.usb.none=None
1150211542
Nucleo_144.menu.usb.CDCgen=CDC (generic 'Serial' supersede U(S)ART)
@@ -12547,6 +12587,26 @@ SparkFun.menu.opt.ogstd.build.flags.optimize=-Og
1254712587
SparkFun.menu.opt.o0std=No Optimization (-O0)
1254812588
SparkFun.menu.opt.o0std.build.flags.optimize=-O0
1254912589

12590+
ELV_Modular_System.menu.opt.osstd=Smallest (-Os default)
12591+
ELV_Modular_System.menu.opt.oslto=Smallest (-Os) with LTO
12592+
ELV_Modular_System.menu.opt.oslto.build.flags.optimize=-Os -flto
12593+
ELV_Modular_System.menu.opt.o1std=Fast (-O1)
12594+
ELV_Modular_System.menu.opt.o1std.build.flags.optimize=-O1
12595+
ELV_Modular_System.menu.opt.o1lto=Fast (-O1) with LTO
12596+
ELV_Modular_System.menu.opt.o1lto.build.flags.optimize=-O1 -flto
12597+
ELV_Modular_System.menu.opt.o2std=Faster (-O2)
12598+
ELV_Modular_System.menu.opt.o2std.build.flags.optimize=-O2
12599+
ELV_Modular_System.menu.opt.o2lto=Faster (-O2) with LTO
12600+
ELV_Modular_System.menu.opt.o2lto.build.flags.optimize=-O2 -flto
12601+
ELV_Modular_System.menu.opt.o3std=Fastest (-O3)
12602+
ELV_Modular_System.menu.opt.o3std.build.flags.optimize=-O3
12603+
ELV_Modular_System.menu.opt.o3lto=Fastest (-O3) with LTO
12604+
ELV_Modular_System.menu.opt.o3lto.build.flags.optimize=-O3 -flto
12605+
ELV_Modular_System.menu.opt.ogstd=Debug (-Og)
12606+
ELV_Modular_System.menu.opt.ogstd.build.flags.optimize=-Og
12607+
ELV_Modular_System.menu.opt.o0std=No Optimization (-O0)
12608+
ELV_Modular_System.menu.opt.o0std.build.flags.optimize=-O0
12609+
1255012610
# Debug information
1255112611
Nucleo_144.menu.dbg.none=None
1255212612
Nucleo_144.menu.dbg.enable_sym=Symbols Enabled (-g)
@@ -12816,6 +12876,14 @@ SparkFun.menu.dbg.enable_log.build.flags.debug=
1281612876
SparkFun.menu.dbg.enable_all=Core Logs and Symbols Enabled (-g)
1281712877
SparkFun.menu.dbg.enable_all.build.flags.debug=-g
1281812878

12879+
ELV_Modular_System.menu.dbg.none=None
12880+
ELV_Modular_System.menu.dbg.enable_sym=Symbols Enabled (-g)
12881+
ELV_Modular_System.menu.dbg.enable_sym.build.flags.debug=-g -DNDEBUG
12882+
ELV_Modular_System.menu.dbg.enable_log=Core logs Enabled
12883+
ELV_Modular_System.menu.dbg.enable_log.build.flags.debug=
12884+
ELV_Modular_System.menu.dbg.enable_all=Core Logs and Symbols Enabled (-g)
12885+
ELV_Modular_System.menu.dbg.enable_all.build.flags.debug=-g
12886+
1281912887
# C Runtime Library
1282012888
Nucleo_144.menu.rtlib.nano=Newlib Nano (default)
1282112889
Nucleo_144.menu.rtlib.nanofp=Newlib Nano + Float Printf
@@ -13166,3 +13234,13 @@ SparkFun.menu.rtlib.nanofps=Newlib Nano + Float Printf/Scanf
1316613234
SparkFun.menu.rtlib.nanofps.build.flags.ldspecs=--specs=nano.specs -u _printf_float -u _scanf_float
1316713235
SparkFun.menu.rtlib.full=Newlib Standard
1316813236
SparkFun.menu.rtlib.full.build.flags.ldspecs=
13237+
13238+
ELV_Modular_System.menu.rtlib.nano=Newlib Nano (default)
13239+
ELV_Modular_System.menu.rtlib.nanofp=Newlib Nano + Float Printf
13240+
ELV_Modular_System.menu.rtlib.nanofp.build.flags.ldspecs=--specs=nano.specs -u _printf_float
13241+
ELV_Modular_System.menu.rtlib.nanofs=Newlib Nano + Float Scanf
13242+
ELV_Modular_System.menu.rtlib.nanofs.build.flags.ldspecs=--specs=nano.specs -u _scanf_float
13243+
ELV_Modular_System.menu.rtlib.nanofps=Newlib Nano + Float Printf/Scanf
13244+
ELV_Modular_System.menu.rtlib.nanofps.build.flags.ldspecs=--specs=nano.specs -u _printf_float -u _scanf_float
13245+
ELV_Modular_System.menu.rtlib.full=Newlib Standard
13246+
ELV_Modular_System.menu.rtlib.full.build.flags.ldspecs=

variants/STM32WLxx/WL54JCI_WL55JCI_WLE4J(8-B-C)I_WLE5J(8-B-C)I/CMakeLists.txt

+1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ add_library(variant_bin STATIC EXCLUDE_FROM_ALL
2222
generic_clock.c
2323
PeripheralPins.c
2424
PeripheralPins_LORA_E5_MINI.c
25+
variant_ELV_BM_TRX1.cpp
2526
variant_generic.cpp
2627
variant_LORA_E5_MINI.cpp
2728
variant_NUCLEO_WL55JC1.cpp
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
/*
2+
*******************************************************************************
3+
* Copyright (c) 2024, STMicroelectronics
4+
* All rights reserved.
5+
*
6+
* This software component is licensed by ST under BSD 3-Clause license,
7+
* the "License"; You may not use this file except in compliance with the
8+
* License. You may obtain a copy of the License at:
9+
* opensource.org/licenses/BSD-3-Clause
10+
*
11+
*******************************************************************************
12+
*/
13+
#if defined(ARDUINO_ELV_BM_TRX1)
14+
#include "pins_arduino.h"
15+
// Digital PinName array
16+
const PinName digitalPin[] = {
17+
PA_0, // D0
18+
PA_1, // D1
19+
PA_2, // D2
20+
PA_3, // D3
21+
PA_4, // D4
22+
PA_5, // D5
23+
PA_6, // D6
24+
PA_7, // D7
25+
PA_8, // D8
26+
PA_9, // D9
27+
PA_10, // D10/A0
28+
PA_11, // D11/A1
29+
PA_12, // D12/A2
30+
PA_13, // D13/A3
31+
PA_14, // D14/A4
32+
PA_15, // D15/A5
33+
PB_0, // D16
34+
PB_1, // D17/A6
35+
PB_2, // D18/A7
36+
PB_3, // D19/A8
37+
PB_4, // D20/A9
38+
PB_5, // D21
39+
PB_6, // D22
40+
PB_7, // D23
41+
PB_8, // D24
42+
PB_9, // D25
43+
PB_10, // D26
44+
PB_11, // D27
45+
PB_12, // D28
46+
PB_13, // D29/A10
47+
PB_14, // D30/A11
48+
PB_15, // D31
49+
PC_0, // D32
50+
PC_1, // D33
51+
PC_2, // D34
52+
PC_3, // D35
53+
PC_4, // D36
54+
PC_5, // D37
55+
PC_6, // D38
56+
PC_13, // D39
57+
PC_14, // D40
58+
PC_15, // D41
59+
PH_3 // D42
60+
};
61+
62+
// Analog (Ax) pin number array
63+
const uint32_t analogInputPin[] = {
64+
10, // A0, PA10
65+
11, // A1, PA11
66+
12, // A2, PA12
67+
13, // A3, PA13
68+
14, // A4, PA14
69+
15, // A5, PA15
70+
17, // A6, PB1
71+
18, // A7, PB2
72+
19, // A8, PB3
73+
20, // A9, PB4
74+
29, // A10, PB13
75+
30 // A11, PB14
76+
};
77+
78+
// ----------------------------------------------------------------------------
79+
#ifdef __cplusplus
80+
extern "C" {
81+
#endif
82+
83+
/*
84+
* @brief System Clock Configuration
85+
* @param None
86+
* @retval None
87+
*/
88+
WEAK void SystemClock_Config(void)
89+
{
90+
RCC_OscInitTypeDef RCC_OscInitStruct = {};
91+
RCC_ClkInitTypeDef RCC_ClkInitStruct = {};
92+
/* Configure the main internal regulator output voltage*/
93+
94+
__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
95+
/* Initializes the CPU, AHB and APB busses clocks*/
96+
97+
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_MSI;
98+
RCC_OscInitStruct.MSIState = RCC_MSI_ON;
99+
RCC_OscInitStruct.MSICalibrationValue = RCC_MSICALIBRATION_DEFAULT;
100+
RCC_OscInitStruct.MSIClockRange = RCC_MSIRANGE_11;
101+
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
102+
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) {
103+
Error_Handler();
104+
}
105+
/* Configure the SYSCLKSource, HCLK, PCLK1 and PCLK2 clocks dividers*/
106+
107+
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK3 | RCC_CLOCKTYPE_HCLK
108+
| RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_PCLK1
109+
| RCC_CLOCKTYPE_PCLK2;
110+
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_MSI;
111+
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
112+
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
113+
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
114+
RCC_ClkInitStruct.AHBCLK3Divider = RCC_SYSCLK_DIV1;
115+
116+
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) {
117+
Error_Handler();
118+
}
119+
}
120+
#ifdef __cplusplus
121+
}
122+
#endif
123+
#endif /* ARDUINO_ELV_BM_TRX1 */

0 commit comments

Comments
 (0)