Skip to content

Commit 944a79e

Browse files
committed
variant(wb55): add STeaMi board
1 parent 8da4af2 commit 944a79e

File tree

6 files changed

+489
-1
lines changed

6 files changed

+489
-1
lines changed

README.md

+6-1
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ User can add a STM32 based board following this [wiki](https://github.com/stm32d
8888
- [Midatronics boards](#midatronics-boards)
8989
- [SparkFun boards](#sparkfun-boards)
9090
- [ELV Boards](#elv-boards)
91-
91+
- [STeaMi board](#steami-board)
9292
> [!Note]
9393
> - :green_heart: board support is available since the specified release version.
9494
> - :yellow_heart: board support is available in the main branch and will be available in the specified release version.
@@ -865,6 +865,11 @@ User can add a STM32 based board following this [wiki](https://github.com/stm32d
865865
| :----: | :-------: | ---- | :-----: | :---- |
866866
| :green_heart: | STM32WLE5JB | ELV-BM-TRX1 | *2.8.0* | |
867867

868+
### [STeaMi Board](https://www.steami.cc/)
869+
870+
| Status | Device(s) | Name | Release | Notes |
871+
| :----: | :-------: | ---- | :-----: | :---- |
872+
| :yellow_heart: | STM32WB55RGV | [STeaMi](https://www.steami.cc/) | *2.9.0* | |
868873
## Next release
869874

870875
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
@@ -13182,6 +13182,40 @@ ELV_Modular_System.menu.upload_method.serialMethod.upload.protocol=serial
1318213182
ELV_Modular_System.menu.upload_method.serialMethod.upload.options=-c {serial.port.file}
1318313183
ELV_Modular_System.menu.upload_method.serialMethod.upload.tool=stm32CubeProg
1318413184

13185+
################################################################################
13186+
# STeaMi board
13187+
STeaMi.name=STeaMi Board
13188+
STeaMi.build.core=arduino
13189+
STeaMi.build.board=STEAM32_WB55RG
13190+
STeaMi.build.variant_h=variant_{build.board}.h
13191+
STeaMi.build.st_extra_flags=-D{build.product_line} {build.xSerial}
13192+
STeaMi.build.flash_offset=0x0
13193+
STeaMi.upload.maximum_size=0
13194+
STeaMi.upload.maximum_data_size=0
13195+
STeaMi.vid.0=0x0d28
13196+
STeaMi.pid.0=0x0204
13197+
13198+
STeaMi.menu.pnum.STEAM32_WB55RG=STeaMi
13199+
STeaMi.menu.pnum.STEAM32_WB55RG.node="STeaMi,DAPLINK"
13200+
STeaMi.menu.pnum.STEAM32_WB55RG.upload.maximum_size=524288
13201+
STeaMi.menu.pnum.STEAM32_WB55RG.upload.maximum_data_size=196608
13202+
STeaMi.menu.pnum.STEAM32_WB55RG.build.mcu=cortex-m4
13203+
STeaMi.menu.pnum.STEAM32_WB55RG.build.fpu=-mfpu=fpv4-sp-d16
13204+
STeaMi.menu.pnum.STEAM32_WB55RG.build.float-abi=-mfloat-abi=hard
13205+
STeaMi.menu.pnum.STEAM32_WB55RG.build.board=STEAM32_WB55RG
13206+
STeaMi.menu.pnum.STEAM32_WB55RG.build.series=STM32WBxx
13207+
STeaMi.menu.pnum.STEAM32_WB55RG.build.product_line=STM32WB55xx
13208+
STeaMi.menu.pnum.STEAM32_WB55RG.build.variant=STM32WBxx/WB55R(C-E-G)V
13209+
STeaMi.menu.pnum.STEAM32_WB55RG.debug.server.openocd.scripts.0=interface/cmsis-dap.cfg
13210+
STeaMi.menu.pnum.STEAM32_WB55RG.debug.server.openocd.scripts.1={runtime.platform.path}/debugger/select_swd.cfg
13211+
STeaMi.menu.pnum.STEAM32_WB55RG.debug.server.openocd.scripts.2=target/stm32wbx.cfg
13212+
STeaMi.menu.pnum.STEAM32_WB55RG.debug.svd_file={runtime.tools.STM32_SVD.path}/svd/STM32WBxx/STM32WB55_CM4.svd
13213+
13214+
# Upload menu
13215+
STeaMi.menu.upload_method.MassStorage=Mass Storage
13216+
STeaMi.menu.upload_method.MassStorage.upload.protocol=
13217+
STeaMi.menu.upload_method.MassStorage.upload.tool=massStorageCopy
13218+
1318513219
################################################################################
1318613220
# Serialx activation
1318713221
Nucleo_144.menu.xserial.generic=Enabled (generic 'Serial')
@@ -13414,6 +13448,12 @@ ELV_Modular_System.menu.xserial.none.build.xSerial=-DHAL_UART_MODULE_ENABLED -DH
1341413448
ELV_Modular_System.menu.xserial.disabled=Disabled (no Serial support)
1341513449
ELV_Modular_System.menu.xserial.disabled.build.xSerial=
1341613450

13451+
STeaMi.menu.xserial.generic=Enabled (generic 'Serial')
13452+
STeaMi.menu.xserial.none=Enabled (no generic 'Serial')
13453+
STeaMi.menu.xserial.none.build.xSerial=-DHAL_UART_MODULE_ENABLED -DHWSERIAL_NONE
13454+
STeaMi.menu.xserial.disabled=Disabled (no Serial support)
13455+
STeaMi.menu.xserial.disabled.build.xSerial=
13456+
1341713457
# USB connectivity
1341813458
Nucleo_144.menu.usb.none=None
1341913459
Nucleo_144.menu.usb.CDCgen=CDC (generic 'Serial' supersede U(S)ART)
@@ -14513,6 +14553,26 @@ ELV_Modular_System.menu.opt.ogstd.build.flags.optimize=-Og
1451314553
ELV_Modular_System.menu.opt.o0std=No Optimization (-O0)
1451414554
ELV_Modular_System.menu.opt.o0std.build.flags.optimize=-O0
1451514555

14556+
STeaMi.menu.opt.osstd=Smallest (-Os default)
14557+
STeaMi.menu.opt.oslto=Smallest (-Os) with LTO
14558+
STeaMi.menu.opt.oslto.build.flags.optimize=-Os -flto
14559+
STeaMi.menu.opt.o1std=Fast (-O1)
14560+
STeaMi.menu.opt.o1std.build.flags.optimize=-O1
14561+
STeaMi.menu.opt.o1lto=Fast (-O1) with LTO
14562+
STeaMi.menu.opt.o1lto.build.flags.optimize=-O1 -flto
14563+
STeaMi.menu.opt.o2std=Faster (-O2)
14564+
STeaMi.menu.opt.o2std.build.flags.optimize=-O2
14565+
STeaMi.menu.opt.o2lto=Faster (-O2) with LTO
14566+
STeaMi.menu.opt.o2lto.build.flags.optimize=-O2 -flto
14567+
STeaMi.menu.opt.o3std=Fastest (-O3)
14568+
STeaMi.menu.opt.o3std.build.flags.optimize=-O3
14569+
STeaMi.menu.opt.o3lto=Fastest (-O3) with LTO
14570+
STeaMi.menu.opt.o3lto.build.flags.optimize=-O3 -flto
14571+
STeaMi.menu.opt.ogstd=Debug (-Og)
14572+
STeaMi.menu.opt.ogstd.build.flags.optimize=-Og
14573+
STeaMi.menu.opt.o0std=No Optimization (-O0)
14574+
STeaMi.menu.opt.o0std.build.flags.optimize=-O0
14575+
1451614576
# Debug information
1451714577
Nucleo_144.menu.dbg.none=None
1451814578
Nucleo_144.menu.dbg.enable_sym=Symbols Enabled (-g)
@@ -14806,6 +14866,14 @@ ELV_Modular_System.menu.dbg.enable_log.build.flags.debug=
1480614866
ELV_Modular_System.menu.dbg.enable_all=Core Logs and Symbols Enabled (-g)
1480714867
ELV_Modular_System.menu.dbg.enable_all.build.flags.debug=-g
1480814868

14869+
STeaMi.menu.dbg.none=None
14870+
STeaMi.menu.dbg.enable_sym=Symbols Enabled (-g)
14871+
STeaMi.menu.dbg.enable_sym.build.flags.debug=-g -DNDEBUG
14872+
STeaMi.menu.dbg.enable_log=Core logs Enabled
14873+
STeaMi.menu.dbg.enable_log.build.flags.debug=
14874+
STeaMi.menu.dbg.enable_all=Core Logs and Symbols Enabled (-g)
14875+
STeaMi.menu.dbg.enable_all.build.flags.debug=-g
14876+
1480914877
# C Runtime Library
1481014878
Nucleo_144.menu.rtlib.nano=Newlib Nano (default)
1481114879
Nucleo_144.menu.rtlib.nanofp=Newlib Nano + Float Printf
@@ -15176,3 +15244,13 @@ ELV_Modular_System.menu.rtlib.nanofps=Newlib Nano + Float Printf/Scanf
1517615244
ELV_Modular_System.menu.rtlib.nanofps.build.flags.ldspecs=--specs=nano.specs -u _printf_float -u _scanf_float
1517715245
ELV_Modular_System.menu.rtlib.full=Newlib Standard
1517815246
ELV_Modular_System.menu.rtlib.full.build.flags.ldspecs=
15247+
15248+
STeaMi.menu.rtlib.nano=Newlib Nano (default)
15249+
STeaMi.menu.rtlib.nanofp=Newlib Nano + Float Printf
15250+
STeaMi.menu.rtlib.nanofp.build.flags.ldspecs=--specs=nano.specs -u _printf_float
15251+
STeaMi.menu.rtlib.nanofs=Newlib Nano + Float Scanf
15252+
STeaMi.menu.rtlib.nanofs.build.flags.ldspecs=--specs=nano.specs -u _scanf_float
15253+
STeaMi.menu.rtlib.nanofps=Newlib Nano + Float Printf/Scanf
15254+
STeaMi.menu.rtlib.nanofps.build.flags.ldspecs=--specs=nano.specs -u _printf_float -u _scanf_float
15255+
STeaMi.menu.rtlib.full=Newlib Standard
15256+
STeaMi.menu.rtlib.full.build.flags.ldspecs=

cmake/scripts/cmake_easy_setup.py

100644100755
File mode changed.

debugger/select_swd.cfg

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
transport select swd
2+
3+
set ENABLE_LOW_POWER 1
4+
set STOP_WATCHDOG 1
5+
set CLOCK_FREQ 4000
6+
7+
reset_config none separate
8+
9+
set CONNECT_UNDER_RESET 1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,161 @@
1+
/*
2+
*******************************************************************************
3+
* Copyright (c) 2021, 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+
#include "variant_STEAM32_WB55RG.h"
14+
15+
#if defined(ARDUINO_STEAM32_WB55RG)
16+
#include "lock_resource.h"
17+
#include "pins_arduino.h"
18+
19+
// Pin number
20+
// Pin number
21+
const PinName digitalPin[] = {
22+
PC_4, // D0/A1
23+
PA_5, // D1/A3
24+
PC_5, // D2/A5
25+
PA_2, // D3/A0
26+
PA_4, // D4/A2
27+
PA_7, // D5
28+
PC_3, // D6
29+
PA_9, // D7
30+
PA_15, // D8
31+
PC_2, // D9
32+
PA_6, // D10/A4
33+
PA_8, // D11
34+
PC_6, // D12
35+
PB_13, // D13
36+
PB_14, // D14
37+
PB_15, // D15
38+
PE_4, // D16
39+
PC_1, // D17
40+
PC_0, // D18
41+
PB_2, // D19
42+
PD_0, // D20
43+
PB_8, // D21
44+
PB_9, // D22
45+
PC_13, // D23
46+
PB_12, // D24
47+
PB_0, // D25
48+
PD_1, // D26
49+
PB_6, // D27
50+
PB_7, // D28
51+
PC_10, // D29
52+
PH_3, // D30
53+
PC_11, // D31
54+
PC_12, // D32
55+
PA_0, // D33
56+
PA_3, // D34
57+
PA_10, // D35
58+
PA_12, // D36
59+
PB_1, // D37
60+
PB_10, // D38
61+
PB_11, // D39
62+
PA_11, // D40
63+
PB_4, // D41
64+
PB_5, // D42
65+
PA_1, // D43
66+
};
67+
68+
// Analog (Ax) pin number array
69+
const uint32_t analogInputPin[] = {
70+
3, // A0
71+
0, // A1
72+
4, // A2
73+
1, // A3
74+
10, // A4
75+
2 // A5
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+
RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {};
93+
94+
/* This prevents concurrent access to RCC registers by CPU2 (M0+) */
95+
hsem_lock(CFG_HW_RCC_SEMID, HSEM_LOCK_DEFAULT_RETRY);
96+
97+
__HAL_RCC_LSEDRIVE_CONFIG(RCC_LSEDRIVE_LOW);
98+
__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
99+
100+
/* This prevents the CPU2 (M0+) to disable the HSI48 oscillator */
101+
hsem_lock(CFG_HW_CLK48_CONFIG_SEMID, HSEM_LOCK_DEFAULT_RETRY);
102+
103+
/* Initializes the CPU, AHB and APB busses clocks */
104+
RCC_OscInitStruct.OscillatorType =
105+
RCC_OSCILLATORTYPE_HSI | RCC_OSCILLATORTYPE_HSI48 | RCC_OSCILLATORTYPE_HSE | RCC_OSCILLATORTYPE_LSE;
106+
RCC_OscInitStruct.HSEState = RCC_HSE_ON;
107+
RCC_OscInitStruct.LSEState = RCC_LSE_ON;
108+
RCC_OscInitStruct.HSIState = RCC_HSI_ON;
109+
RCC_OscInitStruct.HSI48State = RCC_HSI48_ON;
110+
RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
111+
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
112+
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI;
113+
RCC_OscInitStruct.PLL.PLLM = RCC_PLLM_DIV2;
114+
RCC_OscInitStruct.PLL.PLLN = 16;
115+
RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
116+
RCC_OscInitStruct.PLL.PLLR = RCC_PLLR_DIV2;
117+
RCC_OscInitStruct.PLL.PLLQ = RCC_PLLQ_DIV2;
118+
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) {
119+
Error_Handler();
120+
}
121+
122+
/* Configure the SYSCLKSource, HCLK, PCLK1 and PCLK2 clocks dividers */
123+
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK4 | RCC_CLOCKTYPE_HCLK2 | RCC_CLOCKTYPE_HCLK |
124+
RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;
125+
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSE;
126+
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
127+
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
128+
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
129+
RCC_ClkInitStruct.AHBCLK2Divider = RCC_SYSCLK_DIV1;
130+
RCC_ClkInitStruct.AHBCLK4Divider = RCC_SYSCLK_DIV1;
131+
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_1) != HAL_OK) {
132+
Error_Handler();
133+
}
134+
135+
/* Initializes the peripherals clocks */
136+
/* RNG needs to be configured like in M0 core, i.e. with HSI48 */
137+
PeriphClkInitStruct.PeriphClockSelection =
138+
RCC_PERIPHCLK_SMPS | RCC_PERIPHCLK_RFWAKEUP | RCC_PERIPHCLK_RNG | RCC_PERIPHCLK_USB;
139+
PeriphClkInitStruct.UsbClockSelection = RCC_USBCLKSOURCE_HSI48;
140+
PeriphClkInitStruct.RngClockSelection = RCC_RNGCLKSOURCE_HSI48;
141+
PeriphClkInitStruct.RFWakeUpClockSelection = RCC_RFWKPCLKSOURCE_LSE;
142+
PeriphClkInitStruct.SmpsClockSelection = RCC_SMPSCLKSOURCE_HSE;
143+
PeriphClkInitStruct.SmpsDivSelection = RCC_SMPSCLKDIV_RANGE1;
144+
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) {
145+
Error_Handler();
146+
}
147+
148+
LL_PWR_SMPS_SetStartupCurrent(LL_PWR_SMPS_STARTUP_CURRENT_80MA);
149+
LL_PWR_SMPS_SetOutputVoltageLevel(LL_PWR_SMPS_OUTPUT_VOLTAGE_1V40);
150+
LL_PWR_SMPS_Enable();
151+
152+
/* Select HSI as system clock source after Wake Up from Stop mode */
153+
LL_RCC_SetClkAfterWakeFromStop(LL_RCC_STOP_WAKEUPCLOCK_HSI);
154+
155+
hsem_unlock(CFG_HW_RCC_SEMID);
156+
}
157+
158+
#ifdef __cplusplus
159+
}
160+
#endif
161+
#endif /* ARDUINO_STEAM32_WB55RG */

0 commit comments

Comments
 (0)