From c36f827bab77b9f94ce3225a997db6d58e592517 Mon Sep 17 00:00:00 2001 From: FoniksFox Date: Fri, 19 Jun 2026 16:11:15 +0200 Subject: [PATCH 1/7] fix(HardfaultTrace): Fix a warning about symbols --- Inc/HALAL/HardFault/HardfaultTrace.h | 4 ++-- Src/HALAL/HardFault/HardfaultTrace.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Inc/HALAL/HardFault/HardfaultTrace.h b/Inc/HALAL/HardFault/HardfaultTrace.h index 5fe2d7c40..22021cbfc 100644 --- a/Inc/HALAL/HardFault/HardfaultTrace.h +++ b/Inc/HALAL/HardFault/HardfaultTrace.h @@ -9,8 +9,8 @@ #ifdef __cplusplus extern "C" { #endif -extern uint32_t _metadata; -extern uint32_t _hf_log; +extern uint8_t _metadata[]; +extern uint8_t _hf_log[]; #ifdef __cplusplus } #endif diff --git a/Src/HALAL/HardFault/HardfaultTrace.c b/Src/HALAL/HardFault/HardfaultTrace.c index 0aa1d7c18..01f9c3e78 100644 --- a/Src/HALAL/HardFault/HardfaultTrace.c +++ b/Src/HALAL/HardFault/HardfaultTrace.c @@ -18,7 +18,7 @@ extern GPIO_TypeDef* ports_hard_fault[]; extern uint16_t pins_hard_fault[]; extern uint8_t hard_fault_leds_count; -extern uint32_t _hf_log; +extern uint8_t _hf_log[]; static void LED_Blink(); static void LED_init(void); From bfb4f5ea7a09c515a4c4747679ad8f8bf416cebb Mon Sep 17 00:00:00 2001 From: Boris Mladenov Beslimov Date: Fri, 29 May 2026 20:00:30 +0200 Subject: [PATCH 2/7] fix(FaultController): Faults during FaultController::start() no longer cause a reconstruction of the state machine (#655) --- .changesets/fix-fault-during-faultcontroller-start.md | 2 ++ Src/ST-LIB_HIGH/Protections/FaultController.cpp | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 .changesets/fix-fault-during-faultcontroller-start.md diff --git a/.changesets/fix-fault-during-faultcontroller-start.md b/.changesets/fix-fault-during-faultcontroller-start.md new file mode 100644 index 000000000..20b486020 --- /dev/null +++ b/.changesets/fix-fault-during-faultcontroller-start.md @@ -0,0 +1,2 @@ +release: patch +summary: Fix faults caused in state machine start causing non-initialized state machine diff --git a/Src/ST-LIB_HIGH/Protections/FaultController.cpp b/Src/ST-LIB_HIGH/Protections/FaultController.cpp index f068c2b2f..336c48c1b 100644 --- a/Src/ST-LIB_HIGH/Protections/FaultController.cpp +++ b/Src/ST-LIB_HIGH/Protections/FaultController.cpp @@ -149,8 +149,10 @@ void FaultController::start() { return; } - runtime_storage.start(global_machine); + // Set runtime_started before calling start so that faults caused by start don't trigger a + // rebuild of the state machine runtime_started = true; + runtime_storage.start(global_machine); if (faulted) { Diagnostics::Hub::flush_urgent(); From 5e81ad0b448cb4c0cf255233a329ecbbd0b66092 Mon Sep 17 00:00:00 2001 From: Boris Mladenov Beslimov Date: Fri, 29 May 2026 21:07:25 +0200 Subject: [PATCH 3/7] Fix/spi clock (#657) * fix(SPI): Fix clock * fix(FaultController): Faults during FaultController::start() no longer cause a reconstruction of the state machine (#655) * fix(SPI): Fix SPI 4 and 5 clock * style: pre-commit * fix: Add define so that it compiles --- .changesets/fix-spi-clock.md | 2 ++ Inc/HALAL/Models/SPI/SPI2.hpp | 4 ++-- Inc/MockedDrivers/stm32h7xx_hal_mock.h | 1 + 3 files changed, 5 insertions(+), 2 deletions(-) create mode 100644 .changesets/fix-spi-clock.md diff --git a/.changesets/fix-spi-clock.md b/.changesets/fix-spi-clock.md new file mode 100644 index 000000000..3b49bc7a3 --- /dev/null +++ b/.changesets/fix-spi-clock.md @@ -0,0 +1,2 @@ +release: patch +summary: Fix some clock problems in spi 4 and 5 diff --git a/Inc/HALAL/Models/SPI/SPI2.hpp b/Inc/HALAL/Models/SPI/SPI2.hpp index ce84c092d..f2fcaae8a 100644 --- a/Inc/HALAL/Models/SPI/SPI2.hpp +++ b/Inc/HALAL/Models/SPI/SPI2.hpp @@ -1371,7 +1371,7 @@ struct SPIDomain { spi_number = 3; } else if (peripheral == SPIPeripheral::spi4) { PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_SPI4; - PeriphClkInitStruct.Spi45ClockSelection = RCC_SPI45CLKSOURCE_PLL2; + PeriphClkInitStruct.Spi45ClockSelection = RCC_SPI45CLKSOURCE_PCLK2; if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) { PANIC("Unable to configure SPI4 clock"); } @@ -1379,7 +1379,7 @@ struct SPIDomain { spi_number = 4; } else if (peripheral == SPIPeripheral::spi5) { PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_SPI5; - PeriphClkInitStruct.Spi45ClockSelection = RCC_SPI45CLKSOURCE_PLL2; + PeriphClkInitStruct.Spi45ClockSelection = RCC_SPI45CLKSOURCE_PCLK2; if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) { PANIC("Unable to configure SPI5 clock"); } diff --git a/Inc/MockedDrivers/stm32h7xx_hal_mock.h b/Inc/MockedDrivers/stm32h7xx_hal_mock.h index 42b635226..283e2c55b 100644 --- a/Inc/MockedDrivers/stm32h7xx_hal_mock.h +++ b/Inc/MockedDrivers/stm32h7xx_hal_mock.h @@ -595,6 +595,7 @@ typedef struct { #define RCC_SPI123CLKSOURCE_PLL 0x00000001U #define RCC_SPI45CLKSOURCE_PLL2 0x00000002U +#define RCC_SPI45CLKSOURCE_PCLK2 0x00000003U #define RCC_SPI6CLKSOURCE_PLL2 0x00000002U typedef struct TIM_TypeDef TIM_TypeDef; From 514201b6e5d7764a776473e1c779291a83dfa86b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 29 May 2026 21:08:30 +0200 Subject: [PATCH 4/7] chore(release): prepare v6.1.2 (#656) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .../v6.1.2}/fix-fault-during-faultcontroller-start.md | 0 .changesets/{ => archive/v6.1.2}/fix-spi-clock.md | 0 CHANGELOG.md | 7 +++++++ VERSION | 2 +- 4 files changed, 8 insertions(+), 1 deletion(-) rename .changesets/{ => archive/v6.1.2}/fix-fault-during-faultcontroller-start.md (100%) rename .changesets/{ => archive/v6.1.2}/fix-spi-clock.md (100%) diff --git a/.changesets/fix-fault-during-faultcontroller-start.md b/.changesets/archive/v6.1.2/fix-fault-during-faultcontroller-start.md similarity index 100% rename from .changesets/fix-fault-during-faultcontroller-start.md rename to .changesets/archive/v6.1.2/fix-fault-during-faultcontroller-start.md diff --git a/.changesets/fix-spi-clock.md b/.changesets/archive/v6.1.2/fix-spi-clock.md similarity index 100% rename from .changesets/fix-spi-clock.md rename to .changesets/archive/v6.1.2/fix-spi-clock.md diff --git a/CHANGELOG.md b/CHANGELOG.md index b2e71f000..e00e97e6b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,13 @@ The revived semantic-versioning baseline starts at `v5.0.0`. Historical releases that predate this file remain available in Git tags such as `v1.0.0`, `v3.0.0`, `v4.0.0-beta`, and `h10`. +## v6.1.2 - 2026-05-29 + +### Fixes + +- Fix faults caused in state machine start causing non-initialized state machine +- Fix some clock problems in spi 4 and 5 + ## v6.1.1 - 2026-05-11 ### Fixes diff --git a/VERSION b/VERSION index f3b5af39e..5e3254243 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -6.1.1 +6.1.2 From e4fff4ce7fc96b5d75d28fbb0f9e2d98462b9d60 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jorge=20S=C3=A1ez?= <125664643+jorgesg82@users.noreply.github.com> Date: Tue, 2 Jun 2026 21:11:39 +0200 Subject: [PATCH 5/7] fix SPI45 2MHz clock source (#659) --- .changesets/spi45-hsi-clock-source.md | 5 +++++ Inc/HALAL/Models/SPI/SPI2.hpp | 4 ++-- Inc/MockedDrivers/stm32h7xx_hal_mock.h | 6 +++++- Src/HALAL/Models/HALconfig/Halconfig.cpp | 5 ++++- 4 files changed, 16 insertions(+), 4 deletions(-) create mode 100644 .changesets/spi45-hsi-clock-source.md diff --git a/.changesets/spi45-hsi-clock-source.md b/.changesets/spi45-hsi-clock-source.md new file mode 100644 index 000000000..55af86996 --- /dev/null +++ b/.changesets/spi45-hsi-clock-source.md @@ -0,0 +1,5 @@ +release: patch +summary: Drive SPI4 and SPI5 from HSI for stable 2 MHz BMS transfers + +SPI4 and SPI5 now use the 64 MHz HSI peripheral clock source instead of PCLK2, +allowing a 2 MHz request to select the /32 SPI prescaler deterministically. diff --git a/Inc/HALAL/Models/SPI/SPI2.hpp b/Inc/HALAL/Models/SPI/SPI2.hpp index f2fcaae8a..55c145b60 100644 --- a/Inc/HALAL/Models/SPI/SPI2.hpp +++ b/Inc/HALAL/Models/SPI/SPI2.hpp @@ -1371,7 +1371,7 @@ struct SPIDomain { spi_number = 3; } else if (peripheral == SPIPeripheral::spi4) { PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_SPI4; - PeriphClkInitStruct.Spi45ClockSelection = RCC_SPI45CLKSOURCE_PCLK2; + PeriphClkInitStruct.Spi45ClockSelection = RCC_SPI45CLKSOURCE_HSI; if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) { PANIC("Unable to configure SPI4 clock"); } @@ -1379,7 +1379,7 @@ struct SPIDomain { spi_number = 4; } else if (peripheral == SPIPeripheral::spi5) { PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_SPI5; - PeriphClkInitStruct.Spi45ClockSelection = RCC_SPI45CLKSOURCE_PCLK2; + PeriphClkInitStruct.Spi45ClockSelection = RCC_SPI45CLKSOURCE_HSI; if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) { PANIC("Unable to configure SPI5 clock"); } diff --git a/Inc/MockedDrivers/stm32h7xx_hal_mock.h b/Inc/MockedDrivers/stm32h7xx_hal_mock.h index 283e2c55b..12bca88d1 100644 --- a/Inc/MockedDrivers/stm32h7xx_hal_mock.h +++ b/Inc/MockedDrivers/stm32h7xx_hal_mock.h @@ -62,6 +62,7 @@ typedef struct { } RCC_TypeDef; extern RCC_TypeDef* RCC; extern uint32_t SystemCoreClock; +#define HSI_VALUE 64000000U #define RCC_D1CFGR_HPRE_Msk (0xFU << 0U) #define RCC_D2CFGR_D2PPRE1_Pos 4U @@ -596,6 +597,7 @@ typedef struct { #define RCC_SPI123CLKSOURCE_PLL 0x00000001U #define RCC_SPI45CLKSOURCE_PLL2 0x00000002U #define RCC_SPI45CLKSOURCE_PCLK2 0x00000003U +#define RCC_SPI45CLKSOURCE_HSI 0x00000004U #define RCC_SPI6CLKSOURCE_PLL2 0x00000002U typedef struct TIM_TypeDef TIM_TypeDef; @@ -946,7 +948,9 @@ static inline HAL_StatusTypeDef HAL_RCCEx_PeriphCLKConfig(RCC_PeriphCLKInitTypeD return HAL_OK; } static inline uint32_t HAL_RCCEx_GetPeriphCLKFreq(uint32_t PeriphClk) { - (void)PeriphClk; + if (PeriphClk == RCC_PERIPHCLK_SPI45) { + return HSI_VALUE; + } return SystemCoreClock; } static inline HAL_StatusTypeDef HAL_DMA_Init(DMA_HandleTypeDef* hdma) { diff --git a/Src/HALAL/Models/HALconfig/Halconfig.cpp b/Src/HALAL/Models/HALconfig/Halconfig.cpp index f7b2a7073..aa1d334b2 100644 --- a/Src/HALAL/Models/HALconfig/Halconfig.cpp +++ b/Src/HALAL/Models/HALconfig/Halconfig.cpp @@ -19,7 +19,10 @@ void HALconfig::system_clock() { __HAL_RCC_PLL_PLLSOURCE_CONFIG(RCC_PLLSOURCE_HSE); - RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_LSI | RCC_OSCILLATORTYPE_HSE; + RCC_OscInitStruct.OscillatorType = + RCC_OSCILLATORTYPE_HSI | RCC_OSCILLATORTYPE_LSI | RCC_OSCILLATORTYPE_HSE; + RCC_OscInitStruct.HSIState = RCC_HSI_DIV1; + RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT; RCC_OscInitStruct.LSIState = RCC_LSI_ON; RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; From ebf001f51858f1f63830269c04bf06e8f0f63676 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 2 Jun 2026 21:15:06 +0200 Subject: [PATCH 6/7] chore(release): prepare v6.1.3 (#660) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .../{ => archive/v6.1.3}/spi45-hsi-clock-source.md | 0 CHANGELOG.md | 8 ++++++++ VERSION | 2 +- 3 files changed, 9 insertions(+), 1 deletion(-) rename .changesets/{ => archive/v6.1.3}/spi45-hsi-clock-source.md (100%) diff --git a/.changesets/spi45-hsi-clock-source.md b/.changesets/archive/v6.1.3/spi45-hsi-clock-source.md similarity index 100% rename from .changesets/spi45-hsi-clock-source.md rename to .changesets/archive/v6.1.3/spi45-hsi-clock-source.md diff --git a/CHANGELOG.md b/CHANGELOG.md index e00e97e6b..8582dc5dc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,14 @@ The revived semantic-versioning baseline starts at `v5.0.0`. Historical releases that predate this file remain available in Git tags such as `v1.0.0`, `v3.0.0`, `v4.0.0-beta`, and `h10`. +## v6.1.3 - 2026-06-02 + +### Fixes + +- Drive SPI4 and SPI5 from HSI for stable 2 MHz BMS transfers + SPI4 and SPI5 now use the 64 MHz HSI peripheral clock source instead of PCLK2, + allowing a 2 MHz request to select the /32 SPI prescaler deterministically. + ## v6.1.2 - 2026-05-29 ### Fixes diff --git a/VERSION b/VERSION index 5e3254243..88d06f108 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -6.1.2 +6.1.3 From 20010d177690a1c0566e7529da3abe64e98dd950 Mon Sep 17 00:00:00 2001 From: FoniksFox Date: Fri, 19 Jun 2026 16:17:27 +0200 Subject: [PATCH 7/7] chore: Add changeset for HardfaultTrace warning fix --- .changesets/fix-hardfault-warning.md | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 .changesets/fix-hardfault-warning.md diff --git a/.changesets/fix-hardfault-warning.md b/.changesets/fix-hardfault-warning.md new file mode 100644 index 000000000..7f25091ea --- /dev/null +++ b/.changesets/fix-hardfault-warning.md @@ -0,0 +1,2 @@ +release: patch +summary: Fix a warning about symbols in HardfaultTrace (doesn't change any behaviour)